commit b3489e1ede62b69d54524aed83fbc37acc51164e Author: Evandro Date: Mon Jun 1 00:50:06 2026 -0300 🎉 Initial commit: PiAgentUI — AI Agent Desktop & Web UI A professional workspace for AI coding agents with: - Real-time streaming chat with SSE - Session management (fork, clone, tree navigation) - MCP tools browser & metadata panel - Skills browser (global, project, package sources) - Voice input & STT provider configuration - Integrated terminal & file explorer - Model selector with capability metadata - Keyboard-first UI with command palette - 8 languages (en, pt-BR, es, ja, zh-CN, ar, bn, hi) - Tauri 2 desktop app - React 19 + TypeScript + Vite 8 + Tailwind CSS 4 - Pi Agent extension runtime Originally forked from OpenCodeUI, now an independent project. License: GPL-3.0-only diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..eb3af06 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,15 @@ +node_modules +dist +dist-ssr +root +workspace +.opencode +.git +.gitignore +.vscode +.idea +*.log +*.local +.DS_Store +.ruff_cache +README.md diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..b265b02 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[\*] +charset = utf-8 +end_of_line = lf +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..27fa7eb --- /dev/null +++ b/.env.example @@ -0,0 +1,46 @@ +# ============================================ +# OpenCode WebUI - 环境变量 +# ============================================ +# cp .env.example .env + +# ---- LLM Provider API Keys(至少填一个)---- +ANTHROPIC_API_KEY= +OPENAI_API_KEY= +GEMINI_API_KEY= +DEEPSEEK_API_KEY= +GROQ_API_KEY= +MISTRAL_API_KEY= +XAI_API_KEY= + +# ---- 端口 ---- +GATEWAY_PORT=6658 +PREVIEW_PORT=6659 + +# ---- 预览域名(绑定独立域名解决前端资源路径问题)---- +# 例如 preview.example.com,Nginx 将此域名转发到 PREVIEW_PORT +PREVIEW_DOMAIN= + +# ---- 工作目录 ---- +WORKSPACE=./workspace + +# ---- 安全(公网部署务必设置)---- +OPENCODE_SERVER_PASSWORD= +OPENCODE_SERVER_USERNAME=opencode + +# ---- 路由服务(由 gateway 内置)---- +PUBLIC_BASE_URL= +ROUTER_SCAN_INTERVAL=5 +ROUTER_TOKEN_LENGTH=12 +ROUTER_PORT_RANGE=3000-9999 +ROUTER_EXCLUDE_PORTS=4096 + +# ---- Backend 工具链镜像/运行时源(可选)---- +USE_CHINA_MIRROR=1 +APT_MIRROR=http://mirrors.tuna.tsinghua.edu.cn/debian +APT_SECURITY_MIRROR=http://mirrors.tuna.tsinghua.edu.cn/debian-security +NPM_CONFIG_REGISTRY=https://registry.npmmirror.com +NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node +PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple +PIP_TRUSTED_HOST=pypi.tuna.tsinghua.edu.cn +MISE_INSTALL_URL=https://mise.run +OPENCODE_INSTALL_URL=https://opencode.ai/install diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..bf1ba2f --- /dev/null +++ b/.gitattributes @@ -0,0 +1,24 @@ +# Auto-detect text files and normalize to LF +* text=auto eol=lf + +# Shell scripts always LF +*.sh text eol=lf + +# Caddy/Docker always LF +Caddyfile text eol=LF +Dockerfile text eol=lf +Dockerfile.* text eol=lf + +# Binary files +*.png binary +*.jpg binary +*.jpeg binary +*.gif binary +*.ico binary +*.icns binary +*.pdf binary +*.zip binary +*.tar.gz binary +*.ttf binary +*.woff binary +*.woff2 binary diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..7d304a8 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,32 @@ +name: Build Validation + +on: + pull_request: + push: + branches: [main] + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: build-validation-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + validate: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v6 + + - uses: actions/setup-node@v6 + with: + node-version: 22 + cache: npm + + - name: Install dependencies + run: npm ci + + - name: Validate app + run: npm run validate diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..54d7b1a --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,46 @@ +name: Deploy to GitHub Pages + +on: + push: + branches: [dev] + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + + - uses: actions/setup-node@v6 + with: + node-version: 22 + cache: npm + + - run: npm ci + + - run: npm run build + env: + VITE_BASE_PATH: /OpenCodeUI/ + + - uses: actions/upload-pages-artifact@v5 + with: + path: dist + + deploy: + needs: build + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - id: deployment + uses: actions/deploy-pages@v5 diff --git a/.github/workflows/docker-backend.yml b/.github/workflows/docker-backend.yml new file mode 100644 index 0000000..a8b050f --- /dev/null +++ b/.github/workflows/docker-backend.yml @@ -0,0 +1,66 @@ +name: Build & Push Backend Docker Image + +on: + push: + branches: [main] + paths: + - 'docker/Dockerfile.backend' + - 'docker/backend-entrypoint.sh' + schedule: + # 每天自动重建,跟进 opencode 最新版本 + - cron: '0 4 * * *' + workflow_dispatch: + +concurrency: + group: docker-backend-${{ github.ref }} + cancel-in-progress: true + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository_owner }}/opencodeui-backend + +jobs: + build-and-push: + runs-on: ubuntu-latest + timeout-minutes: 120 + permissions: + contents: read + packages: write + + steps: + - uses: actions/checkout@v6 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GHCR + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Docker metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=raw,value=latest,enable={{is_default_branch}} + type=sha,prefix= + type=ref,event=branch + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: . + file: docker/Dockerfile.backend + platforms: linux/amd64,linux/arm64 + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/.github/workflows/docker-frontend.yml b/.github/workflows/docker-frontend.yml new file mode 100644 index 0000000..3f0a9e1 --- /dev/null +++ b/.github/workflows/docker-frontend.yml @@ -0,0 +1,71 @@ +name: Build & Push Frontend Docker Image + +on: + push: + branches: [main] + paths: + - 'src/**' + - 'public/**' + - 'index.html' + - 'package.json' + - 'package-lock.json' + - 'vite.config.ts' + - 'tsconfig*.json' + - 'docker/Dockerfile.frontend' + - 'docker/Caddyfile' + - 'docker/Caddyfile.standalone' + workflow_dispatch: + +concurrency: + group: docker-frontend-${{ github.ref }} + cancel-in-progress: true + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository_owner }}/opencodeui-frontend + +jobs: + build-and-push: + runs-on: ubuntu-latest + timeout-minutes: 30 + permissions: + contents: read + packages: write + + steps: + - uses: actions/checkout@v6 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GHCR + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Docker metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=raw,value=latest,enable={{is_default_branch}} + type=sha,prefix= + type=ref,event=branch + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: . + file: docker/Dockerfile.frontend + build-args: | + NPM_REGISTRY=https://registry.npmjs.org/ + NPM_REGISTRY_FALLBACK=https://registry.npmmirror.com/ + platforms: linux/amd64,linux/arm64 + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/.github/workflows/docker-gateway.yml b/.github/workflows/docker-gateway.yml new file mode 100644 index 0000000..5bff2d3 --- /dev/null +++ b/.github/workflows/docker-gateway.yml @@ -0,0 +1,65 @@ +name: Build & Push Gateway Docker Image + +on: + push: + branches: [main] + paths: + - 'docker/Dockerfile.gateway' + - 'docker/Caddyfile.gateway' + - 'docker/entrypoint-gateway.sh' + - 'src-router/**' + workflow_dispatch: + +concurrency: + group: docker-gateway-${{ github.ref }} + cancel-in-progress: true + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository_owner }}/opencodeui-gateway + +jobs: + build-and-push: + runs-on: ubuntu-latest + timeout-minutes: 45 + permissions: + contents: read + packages: write + + steps: + - uses: actions/checkout@v6 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GHCR + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Docker metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=raw,value=latest,enable={{is_default_branch}} + type=sha,prefix= + type=ref,event=branch + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: . + file: docker/Dockerfile.gateway + platforms: linux/amd64,linux/arm64 + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..f1cac98 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,240 @@ +name: Release + +on: + push: + tags: + - 'v*' + +concurrency: + group: release-${{ github.ref }} + cancel-in-progress: true + +jobs: + # ============================================ + # Desktop builds (Windows, macOS, Linux) + # ============================================ + build-desktop: + strategy: + fail-fast: false + matrix: + include: + - platform: macos-latest + args: '--target aarch64-apple-darwin' + arch: aarch64 + os: macos + - platform: macos-latest + args: '--target x86_64-apple-darwin' + arch: x86_64 + os: macos + - platform: ubuntu-22.04 + args: '' + arch: x86_64 + os: linux + - platform: windows-latest + args: '' + arch: x86_64 + os: windows + + runs-on: ${{ matrix.platform }} + steps: + - uses: actions/checkout@v6 + + - uses: actions/setup-node@v6 + with: + node-version: lts/* + cache: 'npm' + + - name: Install Rust stable + uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} + + - name: Rust cache + uses: swatinem/rust-cache@v2 + with: + workspaces: './src-tauri -> target' + key: ${{ matrix.os }}-${{ matrix.arch }} + + - name: Install Linux dependencies + if: matrix.platform == 'ubuntu-22.04' + run: | + sudo apt-get update + sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf + + - run: npm ci + + # tauri-action 自动执行 beforeBuildCommand (npm run build) + cargo build + - name: Build desktop app + uses: tauri-apps/tauri-action@v0 + with: + args: ${{ matrix.args }} + + - name: Prepare artifacts + shell: bash + run: | + mkdir -p release-artifacts + BUNDLE_DIR="src-tauri/target/release/bundle" + if [[ "${{ matrix.os }}" == "macos" ]]; then + BUNDLE_DIR="src-tauri/target/${{ matrix.arch }}-apple-darwin/release/bundle" + fi + + if [[ "${{ matrix.os }}" == "windows" ]]; then + find "$BUNDLE_DIR/nsis" -name "*.exe" -exec cp {} release-artifacts/ \; 2>/dev/null || true + elif [[ "${{ matrix.os }}" == "macos" ]]; then + find "$BUNDLE_DIR/dmg" -name "*.dmg" -exec cp {} release-artifacts/ \; 2>/dev/null || true + elif [[ "${{ matrix.os }}" == "linux" ]]; then + find "$BUNDLE_DIR/deb" -name "*.deb" -exec cp {} release-artifacts/ \; 2>/dev/null || true + find "$BUNDLE_DIR/appimage" -name "*.AppImage" -exec cp {} release-artifacts/ \; 2>/dev/null || true + fi + + echo "Artifacts:" + ls -R release-artifacts + + - uses: actions/upload-artifact@v7 + with: + name: artifacts-desktop-${{ matrix.os }}-${{ matrix.arch }} + path: release-artifacts + if-no-files-found: warn + retention-days: 1 + + # ============================================ + # Android builds (arm64 + armv7 并行) + # ============================================ + build-android: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - target: aarch64 + rust_target: aarch64-linux-android + label: arm64 + - target: armv7 + rust_target: armv7-linux-androideabi + label: armv7 + steps: + - uses: actions/checkout@v6 + + - uses: actions/setup-node@v6 + with: + node-version: lts/* + cache: 'npm' + + - uses: actions/setup-java@v5 + with: + distribution: 'temurin' + java-version: '17' + + - uses: android-actions/setup-android@v3 + + - run: sdkmanager "ndk;29.0.14206865" + + - name: Install Rust stable + uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.rust_target }} + + - name: Rust cache + uses: swatinem/rust-cache@v2 + with: + workspaces: './src-tauri -> target' + key: android-${{ matrix.target }} + + - name: Gradle cache + uses: actions/cache@v5 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + src-tauri/gen/android/.gradle + key: gradle-${{ matrix.target }}-${{ hashFiles('src-tauri/gen/android/**/*.gradle*', 'src-tauri/gen/android/**/gradle-wrapper.properties') }} + restore-keys: gradle- + + - run: npm ci + + - name: Setup Android signing + run: | + cd src-tauri/gen/android + echo "keyAlias=${{ secrets.ANDROID_KEY_ALIAS }}" > keystore.properties + echo "password=${{ secrets.ANDROID_KEY_PASSWORD }}" >> keystore.properties + base64 -d <<< "${{ secrets.ANDROID_KEY_BASE64 }}" > $RUNNER_TEMP/keystore.jks + echo "storeFile=$RUNNER_TEMP/keystore.jks" >> keystore.properties + + - name: Build and sign APK + run: | + VERSION=${{ github.ref_name }} + BT="$ANDROID_HOME/build-tools/$(ls $ANDROID_HOME/build-tools/ | tail -1)" + + npx tauri android build --apk --target ${{ matrix.target }} + + SIGNED_APK=$(find src-tauri/gen/android/app/build/outputs/apk -path '*/release/*-signed*' -name '*.apk' -type f 2>/dev/null | head -1) + RELEASE_APK=$(find src-tauri/gen/android/app/build/outputs/apk -path '*/release/*.apk' -name '*.apk' -type f 2>/dev/null | head -1) + APK_PATH="${SIGNED_APK:-$RELEASE_APK}" + DEST="OpenCodeUI-${VERSION}-android-${{ matrix.label }}.apk" + + if $BT/apksigner verify "$APK_PATH" 2>/dev/null; then + cp "$APK_PATH" "$DEST" + else + $BT/zipalign -v 4 "$APK_PATH" "${APK_PATH}.aligned" + $BT/apksigner sign \ + --ks $RUNNER_TEMP/keystore.jks \ + --ks-key-alias ${{ secrets.ANDROID_KEY_ALIAS }} \ + --ks-pass pass:${{ secrets.ANDROID_KEY_PASSWORD }} \ + --key-pass pass:${{ secrets.ANDROID_KEY_PASSWORD }} \ + --out "$DEST" "${APK_PATH}.aligned" + fi + + mkdir -p release-artifacts + mv "$DEST" release-artifacts/ + env: + NDK_HOME: ${{ env.ANDROID_HOME }}/ndk/29.0.14206865 + + - uses: actions/upload-artifact@v7 + with: + name: artifacts-android-${{ matrix.label }} + path: release-artifacts/* + retention-days: 1 + + # ============================================ + # Publish Release + # ============================================ + publish-release: + permissions: + contents: write + runs-on: ubuntu-latest + needs: [build-desktop, build-android] + steps: + - uses: actions/checkout@v6 + + - uses: actions/download-artifact@v8 + with: + path: artifacts + pattern: artifacts-* + merge-multiple: true + + - name: Display artifacts + run: ls -R artifacts + + - name: Extract changelog + id: changelog + run: | + TAG="${{ github.ref_name }}" + BODY=$(sed -n "/^## \[${TAG}\]/,/^## \[/{ /^## \[${TAG}\]/d; /^## \[/d; p; }" CHANGELOG.md) + BODY=$(echo "$BODY" | sed -e '/./,$!d' -e :a -e '/^\n*$/{$d;N;ba;}') + if [ -z "$BODY" ]; then + BODY="No changelog entry found for ${TAG}." + fi + echo "$BODY" > /tmp/release-body.md + printf '\n---\n\n**Desktop:** Windows (.exe), macOS (.dmg), Linux (.deb, .AppImage)\n**Mobile:** Android (.apk) — arm64, armeabi-v7a\n' >> /tmp/release-body.md + + - name: Create Release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ github.ref_name }} + name: 'OpenCodeUI ${{ github.ref_name }}' + body_path: /tmp/release-body.md + files: artifacts/* + draft: false + prerelease: ${{ contains(github.ref_name, 'canary') || contains(github.ref_name, 'alpha') || contains(github.ref_name, 'beta') }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..947a59e --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +node_modules/ +dist/ +target/ +.superpowers/ +tmp/ +*.log +.DS_Store +Thumbs.db diff --git a/.pi-lens/cache/review-graph.json b/.pi-lens/cache/review-graph.json new file mode 100644 index 0000000..16f460f --- /dev/null +++ b/.pi-lens/cache/review-graph.json @@ -0,0 +1 @@ +{"version":"v2","builtAt":"2026-06-01T00:40:39.785Z","signature":"D:/Documents/Github/PiAgentUI/PiAgentUi/eslint.config.js:1486:1780022589270.6587|D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:5516:1780258362691.8145|D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:16383:1780258362659.5957|D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:4040:1780266481529.727|D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:7293:1780266481600.4917|D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:6112:1780253705167.7166|D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:5140:1780253889743.0134|D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:39380:1780272600127.7744|D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:83661:1780272653246.032|D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:2999:1780248290341.1304|D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:6608:1780250094524.6309|D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js:1287:1780022589275.1758|D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:7766:1780022589276.6814|D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/copy-material-icons.mjs:2053:1780022589276.6814|D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs:2730:1780022589276.6814|D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/caddy.rs:2091:1780022589277.6882|D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/config.rs:3669:1780022589278.6926|D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/main.rs:796:1780022589278.6926|D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/router.rs:12128:1780022589278.6926|D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/scanner.rs:2323:1780022589279.694|D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/state.rs:2417:1780022589279.694|D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/build.rs:40:1780022589282.198|D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/bridge/args.rs:1765:1780022589313.2903|D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/bridge/event.rs:558:1780022589313.2903|D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/bridge/mod.rs:197:1780022589313.2903|D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/bridge/state.rs:4232:1780022589313.2903|D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/commands/bridge.rs:13983:1780022589314.2903|D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/commands/mod.rs:124:1780027014784.0298|D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/commands/pi_agent.rs:4814:1780027011663.1926|D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/commands/utils.rs:1496:1780029769772.7441|D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/dir_state.rs:773:1780022589315.2903|D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/mod.rs:10869:1780029779431.7087|D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/service.rs:500:1780027024480.5833|D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/lib.rs:100:1780022589315.2903|D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/main.rs:193:1780022589316.2898|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts:929:1780026517593.7356|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:1876:1780180406861.2058|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:3901:1780257142048.0273|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:2375:1780194572795.3748|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:3632:1780194752659.6665|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts:1414:1780026299997.4521|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:8606:1780119380006.358|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:27784:1780121498237.752|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:1680:1780258114988.9187|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:1197:1780258069136.5046|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:4453:1780026718153.368|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts:981:1780026539178.5913|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:1443:1780022589319.4368|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:1509:1780029793129.7656|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/index.ts:135:1780022589319.4368|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/lsp.ts:657:1780026505282.3206|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:1017:1780188851123.1152|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:1868:1780188942993.4717|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:4368:1780026289798.4277|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:1361:1780204655419.1777|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts:439:1780204716377.468|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:2942:1780026552376.5452|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:1870:1780268829114.4573|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:3060:1780268787667.3633|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piContract.ts:896:1780026384273.1921|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:1423:1780026481223.515|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts:627:1780026486822.8467|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:1182:1780185367865.852|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:6528:1780184801737.9011|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:959:1780187058176.553|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts:468:1780026579370.1785|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:694:1780022589322.9514|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:836:1780022589322.9514|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:3002:1780250094958.0671|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:1444:1780235558422.5256|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:1338:1780026427241.374|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts:981:1780026850863.218|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:1288:1780249623159.286|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts:2041:1780022589323.9573|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:2330:1780266481495.614|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:3184:1780266481501.133|D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:946:1780026499378.833|D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:24048:1780022589317.4363|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:11357:1780022589339.3594|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CircularProgress.tsx:1635:1780022589339.3594|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx:2491:1780027100203.3027|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:1783:1780022589340.3591|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:6182:1780022589340.3591|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:2868:1780022589340.3591|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:14231:1780022589350.3914|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:2150:1780022589340.3591|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx:1108:1780022589341.8662|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:1983:1780022589341.8662|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:10523:1780022589341.8662|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:12059:1780022589341.8662|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:1702:1780022589342.8713|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:6569:1780022589342.8713|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:1363:1780022589342.8713|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:6349:1780022589342.8713|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:3379:1780022589343.872|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:66689:1780022589343.872|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:4019:1780106541381.2847|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:4111:1780258363074.6853|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:17100:1780258363061.562|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:35877:1780027116280.1743|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:2971:1780022589344.871|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:5813:1780022589345.3755|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx:6136:1780246875211.5525|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/index.ts:627:1780022589350.3914|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:4061:1780022589345.3755|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:17407:1780022589345.3755|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:21248:1780189192710.225|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:19187:1780022589346.3794|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:24049:1780258363125.2507|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:5510:1780022589347.3848|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:9076:1780258363146.8884|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:8775:1780022589348.389|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:47070:1780022589348.389|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:1953:1780187416955.4294|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:8272:1780187416932.6677|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:34801:1780022589349.3901|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:8285:1780022589349.3901|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:1813:1780022589350.3914|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx:1776:1780022589350.3914|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx:1436:1780022589350.3914|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:2139:1780022589351.896|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:5390:1780022589351.896|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:13215:1780022589351.896|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:3617:1780022589351.896|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:6167:1780022589352.9038|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/IconButton.tsx:1376:1780022589352.9038|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/index.ts:516:1780022589353.9045|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/MenuItem.tsx:1931:1780022589352.9038|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ModalShell.tsx:1311:1780022589352.9038|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:11243:1780022589353.9045|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ScrollArea.tsx:950:1780022589353.9045|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:2282:1780022589353.9045|D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:20018:1780022589349.3901|D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/animation.ts:95:1780022589354.902|D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/api.ts:224:1780022589354.902|D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/desktopWindow.ts:378:1780022589354.902|D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/index.ts:317:1780022589354.902|D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/pagination.ts:152:1780022589354.902|D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/storage.ts:521:1780022589354.902|D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/time.ts:256:1780022589356.4062|D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/ui.ts:69:1780022589356.4062|D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.shared.ts:748:1780022589356.4062|D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:7511:1780027130138.2334|D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/index.ts:617:1780022589358.4167|D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.shared.ts:527:1780022589357.4175|D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:4524:1780022589357.4175|D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:8539:1780022589357.4175|D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx:1441:1780022589358.4167|D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:1190:1780022589358.4167|D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useSessionContext.ts:353:1780022589358.4167|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:2344:1780022589359.4126|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:16255:1780022589359.4126|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:13752:1780022589359.4126|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentPreview.tsx:1871:1780022589360.4148|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/index.ts:121:1780022589360.4148|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/types.ts:1570:1780022589360.4148|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:4185:1780022589360.4148|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:5318:1780022589360.4148|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:22891:1780122848713.8186|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:4973:1780022589368.492|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:34249:1780026890703.343|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:12535:1780022589369.4922|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:8780:1780022589362.9236|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:10274:1780027142292.7996|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/index.ts:349:1780022589369.4922|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:4929:1780026896891.7378|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:10353:1780026905157.0537|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:2685:1780036289744.754|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:3998:1780268251727.1592|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:21494:1780268215048.4636|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx:5735:1780022589369.4922|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:14361:1780022589370.4917|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:8793:1780267037602.791|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:20718:1780267037653.0623|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:2352:1780022589370.4917|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/UndoStatus.tsx:1511:1780022589370.4917|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:4187:1780022589371.9958|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:7273:1780022589371.9958|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:7745:1780022589371.9958|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:2053:1780252650541.2927|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.tsx:1409:1780253275237.348|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:11868:1780022589364.9248|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:40977:1780267037680.1135|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:2518:1780022589364.9248|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:5309:1780022589364.9248|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:34005:1780022589364.9248|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:3901:1780022589366.4297|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:9991:1780022589366.4297|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:9943:1780026912985.6226|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:1994:1780022589366.4297|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:15100:1780026766625.2542|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:14614:1780026907397.1956|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:3534:1780022589367.4346|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:4840:1780022589368.492|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:11952:1780022589368.492|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:4969:1780022589373.003|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:1425:1780022589375.002|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts:1002:1780022589376.0017|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:15090:1780188221215.4226|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:40491:1780022589374.002|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:2378:1780022589374.002|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:7721:1780022589374.002|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts:983:1780022589376.0017|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts:797:1780022589376.0017|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:4858:1780022589374.002|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:16213:1780188169043.3823|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts:779:1780022589376.0017|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:51200:1780182540370.8037|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:8175:1780022589368.492|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:1869:1780022589378.0496|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/index.ts:837:1780022589378.0496|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:2503:1780022589377.0503|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:15554:1780022589377.0503|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:3820:1780022589378.0496|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/types.ts:1415:1780022589378.0496|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:9675:1780022589379.053|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:2130:1780022589379.053|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:5580:1780022589379.053|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/index.ts:78:1780022589380.0503|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:4512:1780175052969.0212|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:37815:1780175052951.406|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx:1561:1780022589381.0498|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/index.ts:496:1780022589384.0508|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:4441:1780022589381.0498|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:2977:1780022589382.05|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:10939:1780022589382.05|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx:3485:1780036324857.5889|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:6956:1780022589382.05|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:2145:1780022589383.0508|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:5802:1780022589383.0508|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/TextPartView.tsx:784:1780022589383.0508|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:3703:1780022589383.0508|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:21682:1780107037280.7886|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx:1289:1780022589385.0532|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/index.ts:376:1780022589385.0532|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts:1337:1780022589385.0532|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:10522:1780036298482.3176|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:9933:1780022589386.0515|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:7911:1780022589386.0515|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/index.ts:289:1780022589387.6802|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:7602:1780107207446.853|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:15508:1780107228104.3372|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:4041:1780022589386.0515|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts:667:1780107233914.855|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/types.ts:1864:1780022589387.6802|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/index.ts:147:1780022589389.6865|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:2106:1780022589388.6863|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:9318:1780022589388.6863|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:4338:1780205167096.1448|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:36297:1780205167228.0513|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:1783:1780203622512.286|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:2178:1780203697103.8794|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:7363:1780022589390.6868|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:5162:1780022589390.6868|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:23977:1780274355756.0908|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:6106:1780022589392.1924|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:3517:1780022589392.1924|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:7860:1780022589392.1924|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:2417:1780272653393.0984|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:4160:1780272399815.9475|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:19404:1780022589393.1975|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:19185:1780247004924.4036|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:9981:1780027092685.1008|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:7044:1780247004870.971|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:3275:1780252980814.3665|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:7260:1780252862592.3525|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:1692:1780249081288.8853|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:8182:1780250095061.869|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/VoiceSettings.tsx:227:1780249286721.1772|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:5666:1780022589394.2007|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:12623:1780022589389.6865|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:2036:1780246566472.6035|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:14200:1780247004863.353|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/index.ts:118:1780022589395.1975|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:1399:1780022589394.2007|D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:8396:1780022589394.2007|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/index.ts:2756:1780235954147.186|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/sessionStatsUtils.ts:216:1780022589395.1975|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:1744:1780022589396.2004|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:11853:1780086179879.9922|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:39694:1780122246475.1692|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:806:1780022589397.3594|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:1289:1780022589397.3594|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:1317:1780022589397.3594|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:739:1780022589397.3594|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:1024:1780022589398.3657|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:6667:1780022589398.3657|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:6329:1780022589398.3657|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:14742:1780022589398.3657|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:5714:1780022589399.3643|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:17066:1780022589399.3643|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:23983:1780119380074.8225|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:2441:1780022589400.3645|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:1438:1780022589400.3645|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:1258:1780022589400.3645|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:510:1780022589400.3645|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:4816:1780022589400.3645|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:3757:1780022589401.8691|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:1275:1780022589401.8691|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:3428:1780084834942.2798|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:2678:1780084436824.0815|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:7150:1780022589401.8691|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:6317:1780022589401.8691|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:7230:1780022589401.8691|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:511:1780022589403.3755|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:634:1780022589403.3755|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:1792:1780022589403.3755|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:7948:1780022589403.3755|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:1502:1780022589404.3816|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:2496:1780022589404.3816|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:2694:1780022589404.3816|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:1128:1780022589404.3816|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:8190:1780022589405.3818|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:6191:1780022589405.3818|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:2035:1780022589405.3818|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:771:1780182849367.8904|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:14270:1780106632865.5571|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:4848:1780022589406.8855|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:9052:1780022589406.8855|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:942:1780022589406.381|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:5046:1780187967683.4421|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:9368:1780188097383.5657|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:561:1780022589407.8906|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:15195:1780022589407.8906|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:9287:1780022589407.8906|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:2267:1780022589408.8955|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:5395:1780022589408.8955|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:3466:1780022589409.456|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:5793:1780253108867.4456|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:4292:1780253215051.9373|D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:1564:1780022589409.456|D:/Documents/Github/PiAgentUI/PiAgentUi/src/i18n.ts:1229:1780022589409.456|D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:13319:1780022589410.4626|D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:4379:1780022589410.4626|D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:1669:1780274431759.004|D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:6078:1780106558672.8792|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:1585:1780022589415.9756|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:12367:1780022589415.9756|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:8428:1780022589415.9756|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:1427:1780022589415.9756|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:8162:1780022589417.0808|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:6729:1780022589417.0808|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/index.ts:4012:1780022589417.0808|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:977:1780022589417.0808|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:20689:1780022589418.0823|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:5950:1780022589418.0823|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:41188:1780258823669.9514|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:12255:1780190508402.495|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:28030:1780190641696.2505|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:2335:1780022589419.0825|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:6751:1780022589419.0825|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreTypes.ts:2067:1780022589420.0828|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:2738:1780022589420.0828|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:864:1780022589420.0828|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:6183:1780022589420.0828|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:9551:1780022589421.0806|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:3076:1780022589421.0806|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:757:1780022589421.5852|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:14599:1780022589421.5852|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:1795:1780022589421.5852|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:15934:1780273390281.4038|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:5552:1780022589422.5906|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:17679:1780022589422.5906|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:35348:1780022589423.5903|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:4399:1780022589423.5903|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:3501:1780244811285.2305|D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:8566:1780244811286.23|D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:2176:1780022589423.5903|D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts:25235:1780022589425.095|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/agent.ts:300:1780026744154.793|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/common.ts:598:1780026559070.3591|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/compat.ts:4690:1780026403287.704|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/config.ts:958:1780026653187.643|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/event.ts:5624:1780026434945.4067|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/extension.ts:1277:1780256955297.8262|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/file.ts:1160:1780026810955.8962|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/index.ts:4126:1780266116299.5862|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/mcp.ts:1526:1780188981418.066|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/message.ts:1902:1780027294472.0369|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/model.ts:939:1780026352018.4495|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/network.ts:260:1780253831806.3616|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/permission.ts:777:1780026675159.9033|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/project.ts:406:1780026265960.813|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/pty.ts:482:1780026806615.5762|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/session.ts:894:1780025780609.6736|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/skill.ts:247:1780187159780.7637|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/stt.ts:868:1780248535270.2334|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/tool.ts:163:1780026589350.102|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/tts.ts:692:1780249121379.6116|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/vcs.ts:982:1780266076415.6384|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/worktree.ts:307:1780026492809.2854|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/chat.ts:3392:1780022589429.6895|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:2345:1780022589429.6895|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:8922:1780022589429.6895|D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/ui.ts:2535:1780022589430.6912|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts:1064:1780022589430.6912|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:832:1780022589430.6912|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:3759:1780022589430.6912|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:1934:1780022589432.1948|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:1956:1780022589432.1948|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/dateUtils.ts:598:1780022589432.1948|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts:773:1780022589432.1948|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:8441:1780022589432.1948|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:3215:1780026758464.4849|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:3041:1780105636247.5972|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:1827:1780022589434.1995|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:3250:1780022589434.1995|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/index.ts:322:1780022589434.1995|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:3096:1780022589435.1992|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts:391:1780022589435.1992|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/logger.ts:724:1780022589435.1992|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:12162:1780022589435.1992|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:1301:1780022589436.2034|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:3420:1780022589436.2034|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:10959:1780022589436.2034|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:2483:1780022589437.2446|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:2189:1780184376474.7517|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:3455:1780185401456.7922|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:3384:1780022589437.2446|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:1057:1780022589438.0017|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:1121:1780022589438.0017|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/sessionHelpers.ts:1328:1780022589438.5305|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:3180:1780022589438.5305|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:6104:1780022589439.055|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:12558:1780022589439.055|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/stringUtils.ts:499:1780022589439.5813|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:1642:1780022589439.5813|D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:1883:1780022589440.103|D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:2449:1780022589441.2356|D:/Documents/Github/PiAgentUI/PiAgentUi/vitest.config.ts:390:1780022589441.7632","fileSignatures":[["D:/Documents/Github/PiAgentUI/PiAgentUi/eslint.config.js","1486:1780022589270.6587"],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","5516:1780258362691.8145"],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","16383:1780258362659.5957"],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","4040:1780266481529.727"],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","7293:1780266481600.4917"],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","6112:1780253705167.7166"],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","5140:1780253889743.0134"],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","39380:1780272600127.7744"],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","83661:1780272653246.032"],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts","2999:1780248290341.1304"],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","6608:1780250094524.6309"],["D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js","1287:1780022589275.1758"],["D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs","7766:1780022589276.6814"],["D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/copy-material-icons.mjs","2053:1780022589276.6814"],["D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs","2730:1780022589276.6814"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts","929:1780026517593.7356"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts","1876:1780180406861.2058"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","3901:1780257142048.0273"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts","2375:1780194572795.3748"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","3632:1780194752659.6665"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts","1414:1780026299997.4521"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","8606:1780119380006.358"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","27784:1780121498237.752"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts","1680:1780258114988.9187"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts","1197:1780258069136.5046"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","4453:1780026718153.368"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts","981:1780026539178.5913"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","1443:1780022589319.4368"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts","1509:1780029793129.7656"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/index.ts","135:1780022589319.4368"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/lsp.ts","657:1780026505282.3206"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts","1017:1780188851123.1152"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","1868:1780188942993.4717"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","4368:1780026289798.4277"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts","1361:1780204655419.1777"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts","439:1780204716377.468"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","2942:1780026552376.5452"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts","1870:1780268829114.4573"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","3060:1780268787667.3633"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piContract.ts","896:1780026384273.1921"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","1423:1780026481223.515"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts","627:1780026486822.8467"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts","1182:1780185367865.852"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","6528:1780184801737.9011"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts","959:1780187058176.553"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts","468:1780026579370.1785"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts","694:1780022589322.9514"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts","836:1780022589322.9514"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts","3002:1780250094958.0671"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","1444:1780235558422.5256"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","1338:1780026427241.374"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts","981:1780026850863.218"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts","1288:1780249623159.286"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","2041:1780022589323.9573"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts","2330:1780266481495.614"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","3184:1780266481501.133"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts","946:1780026499378.833"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","24048:1780022589317.4363"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","11357:1780022589339.3594"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CircularProgress.tsx","1635:1780022589339.3594"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx","2491:1780027100203.3027"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx","1783:1780022589340.3591"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx","6182:1780022589340.3591"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","2868:1780022589340.3591"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","14231:1780022589350.3914"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx","2150:1780022589340.3591"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx","1108:1780022589341.8662"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","1983:1780022589341.8662"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","10523:1780022589341.8662"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","12059:1780022589341.8662"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx","1702:1780022589342.8713"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","6569:1780022589342.8713"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx","1363:1780022589342.8713"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","6349:1780022589342.8713"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","3379:1780022589343.872"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","66689:1780022589343.872"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","4019:1780106541381.2847"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx","4111:1780258363074.6853"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","17100:1780258363061.562"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","35877:1780027116280.1743"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","2971:1780022589344.871"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","5813:1780022589345.3755"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","6136:1780246875211.5525"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/index.ts","627:1780022589350.3914"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","4061:1780022589345.3755"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","17407:1780022589345.3755"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","21248:1780189192710.225"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","19187:1780022589346.3794"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","24049:1780258363125.2507"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","5510:1780022589347.3848"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","9076:1780258363146.8884"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","8775:1780022589348.389"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","47070:1780022589348.389"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx","1953:1780187416955.4294"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx","8272:1780187416932.6677"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","34801:1780022589349.3901"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","8285:1780022589349.3901"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx","1813:1780022589350.3914"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx","1776:1780022589350.3914"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx","1436:1780022589350.3914"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx","2139:1780022589351.896"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","5390:1780022589351.896"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","13215:1780022589351.896"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","3617:1780022589351.896"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","6167:1780022589352.9038"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/IconButton.tsx","1376:1780022589352.9038"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/index.ts","516:1780022589353.9045"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/MenuItem.tsx","1931:1780022589352.9038"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ModalShell.tsx","1311:1780022589352.9038"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","11243:1780022589353.9045"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ScrollArea.tsx","950:1780022589353.9045"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx","2282:1780022589353.9045"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","20018:1780022589349.3901"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/animation.ts","95:1780022589354.902"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/api.ts","224:1780022589354.902"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/desktopWindow.ts","378:1780022589354.902"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/index.ts","317:1780022589354.902"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/pagination.ts","152:1780022589354.902"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/storage.ts","521:1780022589354.902"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/time.ts","256:1780022589356.4062"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/ui.ts","69:1780022589356.4062"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.shared.ts","748:1780022589356.4062"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","7511:1780027130138.2334"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/index.ts","617:1780022589358.4167"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.shared.ts","527:1780022589357.4175"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","4524:1780022589357.4175"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","8539:1780022589357.4175"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx","1441:1780022589358.4167"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","1190:1780022589358.4167"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useSessionContext.ts","353:1780022589358.4167"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","2344:1780022589359.4126"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","16255:1780022589359.4126"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","13752:1780022589359.4126"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentPreview.tsx","1871:1780022589360.4148"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/index.ts","121:1780022589360.4148"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/types.ts","1570:1780022589360.4148"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","4185:1780022589360.4148"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","5318:1780022589360.4148"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","22891:1780122848713.8186"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","4973:1780022589368.492"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","34249:1780026890703.343"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","12535:1780022589369.4922"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","8780:1780022589362.9236"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","10274:1780027142292.7996"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/index.ts","349:1780022589369.4922"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx","4929:1780026896891.7378"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","10353:1780026905157.0537"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","2685:1780036289744.754"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","3998:1780268251727.1592"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","21494:1780268215048.4636"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx","5735:1780022589369.4922"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","14361:1780022589370.4917"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","8793:1780267037602.791"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","20718:1780267037653.0623"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","2352:1780022589370.4917"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/UndoStatus.tsx","1511:1780022589370.4917"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","4187:1780022589371.9958"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","7273:1780022589371.9958"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","7745:1780022589371.9958"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx","2053:1780252650541.2927"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.tsx","1409:1780253275237.348"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","11868:1780022589364.9248"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","40977:1780267037680.1135"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx","2518:1780022589364.9248"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","5309:1780022589364.9248"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","34005:1780022589364.9248"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx","3901:1780022589366.4297"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","9991:1780022589366.4297"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx","9943:1780026912985.6226"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx","1994:1780022589366.4297"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","15100:1780026766625.2542"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","14614:1780026907397.1956"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx","3534:1780022589367.4346"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","4840:1780022589368.492"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx","4969:1780022589373.003"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts","1425:1780022589375.002"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts","1002:1780022589376.0017"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","15090:1780188221215.4226"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","40491:1780022589374.002"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx","2378:1780022589374.002"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","7721:1780022589374.002"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts","983:1780022589376.0017"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts","797:1780022589376.0017"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","4858:1780022589374.002"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","16213:1780188169043.3823"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts","779:1780022589376.0017"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","51200:1780182540370.8037"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","11952:1780022589368.492"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","8175:1780022589368.492"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts","1869:1780022589378.0496"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/index.ts","837:1780022589378.0496"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","2503:1780022589377.0503"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","15554:1780022589377.0503"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","3820:1780022589378.0496"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/types.ts","1415:1780022589378.0496"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","9675:1780022589379.053"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts","2130:1780022589379.053"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","5580:1780022589379.053"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/index.ts","78:1780022589380.0503"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","4512:1780175052969.0212"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","37815:1780175052951.406"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx","1561:1780022589381.0498"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/index.ts","496:1780022589384.0508"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx","4441:1780022589381.0498"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","2977:1780022589382.05"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","10939:1780022589382.05"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx","3485:1780036324857.5889"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","6956:1780022589382.05"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","2145:1780022589383.0508"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx","5802:1780022589383.0508"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/TextPartView.tsx","784:1780022589383.0508"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","3703:1780022589383.0508"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","21682:1780107037280.7886"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx","1289:1780022589385.0532"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/index.ts","376:1780022589385.0532"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts","1337:1780022589385.0532"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","10522:1780036298482.3176"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","9933:1780022589386.0515"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","7911:1780022589386.0515"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/index.ts","289:1780022589387.6802"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","7602:1780107207446.853"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","15508:1780107228104.3372"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx","4041:1780022589386.0515"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts","667:1780107233914.855"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/types.ts","1864:1780022589387.6802"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/index.ts","147:1780022589389.6865"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx","2106:1780022589388.6863"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","9318:1780022589388.6863"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","4338:1780205167096.1448"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","36297:1780205167228.0513"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts","1783:1780203622512.286"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","2178:1780203697103.8794"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","7363:1780022589390.6868"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","5162:1780022589390.6868"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","23977:1780274355756.0908"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","6106:1780022589392.1924"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx","3517:1780022589392.1924"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","7860:1780022589392.1924"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx","2417:1780272653393.0984"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","4160:1780272399815.9475"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","19404:1780022589393.1975"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","19185:1780247004924.4036"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","9981:1780027092685.1008"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","7044:1780247004870.971"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx","3275:1780252980814.3665"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","7260:1780252862592.3525"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx","1692:1780249081288.8853"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","8182:1780250095061.869"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/VoiceSettings.tsx","227:1780249286721.1772"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx","5666:1780022589394.2007"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","12623:1780022589389.6865"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx","2036:1780246566472.6035"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","14200:1780247004863.353"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/index.ts","118:1780022589395.1975"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx","1399:1780022589394.2007"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","8396:1780022589394.2007"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/index.ts","2756:1780235954147.186"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/sessionStatsUtils.ts","216:1780022589395.1975"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts","1744:1780022589396.2004"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","11853:1780086179879.9922"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","39694:1780122246475.1692"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts","806:1780022589397.3594"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","1289:1780022589397.3594"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","1317:1780022589397.3594"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","739:1780022589397.3594"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts","1024:1780022589398.3657"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","6667:1780022589398.3657"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","6329:1780022589398.3657"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","14742:1780022589398.3657"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","5714:1780022589399.3643"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","17066:1780022589399.3643"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","23983:1780119380074.8225"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","2441:1780022589400.3645"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","1438:1780022589400.3645"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts","1258:1780022589400.3645"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts","510:1780022589400.3645"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","4816:1780022589400.3645"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","3757:1780022589401.8691"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts","1275:1780022589401.8691"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","3428:1780084834942.2798"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","2678:1780084436824.0815"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","7150:1780022589401.8691"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","6317:1780022589401.8691"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","7230:1780022589401.8691"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts","511:1780022589403.3755"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts","634:1780022589403.3755"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts","1792:1780022589403.3755"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","7948:1780022589403.3755"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts","1502:1780022589404.3816"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts","2496:1780022589404.3816"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts","2694:1780022589404.3816"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","1128:1780022589404.3816"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","8190:1780022589405.3818"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","6191:1780022589405.3818"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","2035:1780022589405.3818"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts","771:1780182849367.8904"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","14270:1780106632865.5571"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","4848:1780022589406.8855"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","9052:1780022589406.8855"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","942:1780022589406.381"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx","5046:1780187967683.4421"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","9368:1780188097383.5657"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts","561:1780022589407.8906"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","15195:1780022589407.8906"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","9287:1780022589407.8906"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts","2267:1780022589408.8955"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","5395:1780022589408.8955"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","3466:1780022589409.456"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","5793:1780253108867.4456"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","4292:1780253215051.9373"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","1564:1780022589409.456"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/i18n.ts","1229:1780022589409.456"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","13319:1780022589410.4626"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","4379:1780022589410.4626"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts","1669:1780274431759.004"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","6078:1780106558672.8792"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts","1585:1780022589415.9756"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","12367:1780022589415.9756"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","8428:1780022589415.9756"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","1427:1780022589415.9756"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","8162:1780022589417.0808"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","6729:1780022589417.0808"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/index.ts","4012:1780022589417.0808"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts","977:1780022589417.0808"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","20689:1780022589418.0823"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","5950:1780022589418.0823"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","41188:1780258823669.9514"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","12255:1780190508402.495"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","28030:1780190641696.2505"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","2335:1780022589419.0825"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","6751:1780022589419.0825"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreTypes.ts","2067:1780022589420.0828"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","2738:1780022589420.0828"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts","864:1780022589420.0828"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","6183:1780022589420.0828"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","9551:1780022589421.0806"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","3076:1780022589421.0806"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts","757:1780022589421.5852"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","14599:1780022589421.5852"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts","1795:1780022589421.5852"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","15934:1780273390281.4038"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","5552:1780022589422.5906"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","17679:1780022589422.5906"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","35348:1780022589423.5903"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","4399:1780022589423.5903"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","3501:1780244811285.2305"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","8566:1780244811286.23"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","2176:1780022589423.5903"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts","25235:1780022589425.095"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/agent.ts","300:1780026744154.793"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/common.ts","598:1780026559070.3591"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/compat.ts","4690:1780026403287.704"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/config.ts","958:1780026653187.643"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/event.ts","5624:1780026434945.4067"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/extension.ts","1277:1780256955297.8262"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/file.ts","1160:1780026810955.8962"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/index.ts","4126:1780266116299.5862"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/mcp.ts","1526:1780188981418.066"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/message.ts","1902:1780027294472.0369"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/model.ts","939:1780026352018.4495"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/network.ts","260:1780253831806.3616"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/permission.ts","777:1780026675159.9033"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/project.ts","406:1780026265960.813"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/pty.ts","482:1780026806615.5762"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/session.ts","894:1780025780609.6736"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/skill.ts","247:1780187159780.7637"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/stt.ts","868:1780248535270.2334"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/tool.ts","163:1780026589350.102"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/tts.ts","692:1780249121379.6116"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/vcs.ts","982:1780266076415.6384"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/worktree.ts","307:1780026492809.2854"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/chat.ts","3392:1780022589429.6895"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts","2345:1780022589429.6895"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","8922:1780022589429.6895"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/ui.ts","2535:1780022589430.6912"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts","1064:1780022589430.6912"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts","832:1780022589430.6912"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts","3759:1780022589430.6912"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts","1934:1780022589432.1948"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts","1956:1780022589432.1948"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/dateUtils.ts","598:1780022589432.1948"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts","773:1780022589432.1948"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","8441:1780022589432.1948"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","3215:1780026758464.4849"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","3041:1780105636247.5972"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","1827:1780022589434.1995"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","3250:1780022589434.1995"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/index.ts","322:1780022589434.1995"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts","3096:1780022589435.1992"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts","391:1780022589435.1992"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/logger.ts","724:1780022589435.1992"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts","12162:1780022589435.1992"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","1301:1780022589436.2034"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","3420:1780022589436.2034"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","10959:1780022589436.2034"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","2483:1780022589437.2446"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts","2189:1780184376474.7517"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","3455:1780185401456.7922"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","3384:1780022589437.2446"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts","1057:1780022589438.0017"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts","1121:1780022589438.0017"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/sessionHelpers.ts","1328:1780022589438.5305"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts","3180:1780022589438.5305"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","6104:1780022589439.055"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","12558:1780022589439.055"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/stringUtils.ts","499:1780022589439.5813"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","1642:1780022589439.5813"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","1883:1780022589440.103"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/caddy.rs","2091:1780022589277.6882"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/config.rs","3669:1780022589278.6926"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/main.rs","796:1780022589278.6926"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/router.rs","12128:1780022589278.6926"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/scanner.rs","2323:1780022589279.694"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/state.rs","2417:1780022589279.694"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/build.rs","40:1780022589282.198"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/bridge/args.rs","1765:1780022589313.2903"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/bridge/event.rs","558:1780022589313.2903"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/bridge/mod.rs","197:1780022589313.2903"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/bridge/state.rs","4232:1780022589313.2903"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/commands/bridge.rs","13983:1780022589314.2903"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/commands/mod.rs","124:1780027014784.0298"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/commands/pi_agent.rs","4814:1780027011663.1926"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/commands/utils.rs","1496:1780029769772.7441"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/dir_state.rs","773:1780022589315.2903"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/mod.rs","10869:1780029779431.7087"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/service.rs","500:1780027024480.5833"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/lib.rs","100:1780022589315.2903"],["D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/main.rs","193:1780022589316.2898"],["D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts","2449:1780022589441.2356"],["D:/Documents/Github/PiAgentUI/PiAgentUi/vitest.config.ts","390:1780022589441.7632"]],"nodes":[["file:D:/Documents/Github/PiAgentUI/PiAgentUi/eslint.config.js",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/eslint.config.js","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/eslint.config.js","metadata":{"lineCount":46,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:@eslint/js",{"id":"external:@eslint/js","kind":"external","language":"jsts","metadata":{"source":"@eslint/js"}}],["external:eslint-config-prettier",{"id":"external:eslint-config-prettier","kind":"external","language":"jsts","metadata":{"source":"eslint-config-prettier"}}],["external:globals",{"id":"external:globals","kind":"external","language":"jsts","metadata":{"source":"globals"}}],["external:eslint-plugin-react-hooks",{"id":"external:eslint-plugin-react-hooks","kind":"external","language":"jsts","metadata":{"source":"eslint-plugin-react-hooks"}}],["external:eslint-plugin-react-refresh",{"id":"external:eslint-plugin-react-refresh","kind":"external","language":"jsts","metadata":{"source":"eslint-plugin-react-refresh"}}],["external:typescript-eslint",{"id":"external:typescript-eslint","kind":"external","language":"jsts","metadata":{"source":"typescript-eslint"}}],["external:eslint/config",{"id":"external:eslint/config","kind":"external","language":"jsts","metadata":{"source":"eslint/config"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","metadata":{"lineCount":129,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:node:fs",{"id":"external:node:fs","kind":"external","language":"jsts","metadata":{"source":"node:fs"}}],["external:node:os",{"id":"external:node:os","kind":"external","language":"jsts","metadata":{"source":"node:os"}}],["external:node:path",{"id":"external:node:path","kind":"external","language":"jsts","metadata":{"source":"node:path"}}],["external:vitest",{"id":"external:vitest","kind":"external","language":"jsts","metadata":{"source":"vitest"}}],["module:./piagentui-extension-manager.js",{"id":"module:./piagentui-extension-manager.js","kind":"module","language":"jsts","metadata":{"source":"./piagentui-extension-manager.js"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:makeTempRoot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:makeTempRoot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","symbolName":"makeTempRoot","symbolKind":"function","exported":false,"metadata":{"line":14,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:fs.mkdtempSync",{"id":"external:fs.mkdtempSync","kind":"external","language":"jsts","metadata":{"unresolvedName":"fs.mkdtempSync"}}],["external:path.join",{"id":"external:path.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.join"}}],["external:os.tmpdir",{"id":"external:os.tmpdir","kind":"external","language":"jsts","metadata":{"unresolvedName":"os.tmpdir"}}],["external:tempRoots.push",{"id":"external:tempRoots.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"tempRoots.push"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:writeJson",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:writeJson","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","symbolName":"writeJson","symbolKind":"function","exported":false,"metadata":{"line":20,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:fs.mkdirSync",{"id":"external:fs.mkdirSync","kind":"external","language":"jsts","metadata":{"unresolvedName":"fs.mkdirSync"}}],["external:path.dirname",{"id":"external:path.dirname","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.dirname"}}],["external:fs.writeFileSync",{"id":"external:fs.writeFileSync","kind":"external","language":"jsts","metadata":{"unresolvedName":"fs.writeFileSync"}}],["external:JSON.stringify",{"id":"external:JSON.stringify","kind":"external","language":"jsts","metadata":{"unresolvedName":"JSON.stringify"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":119,"column":96,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:tempRoots.splice",{"id":"external:tempRoots.splice","kind":"external","language":"jsts","metadata":{"unresolvedName":"tempRoots.splice"}}],["external:fs.rmSync",{"id":"external:fs.rmSync","kind":"external","language":"jsts","metadata":{"unresolvedName":"fs.rmSync"}}],["symbol-name:it",{"id":"symbol-name:it","kind":"symbol","language":"jsts","symbolName":"it","metadata":{"unresolvedName":"it"}}],["external:expect(parsePiInstallCommand('pi install npm:pi-hud')).toEqual",{"id":"external:expect(parsePiInstallCommand('pi install npm:pi-hud')).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(parsePiInstallCommand('pi install npm:pi-hud')).toEqual"}}],["symbol-name:expect",{"id":"symbol-name:expect","kind":"symbol","language":"jsts","symbolName":"expect","metadata":{"unresolvedName":"expect"}}],["symbol-name:parsePiInstallCommand",{"id":"symbol-name:parsePiInstallCommand","kind":"symbol","language":"jsts","symbolName":"parsePiInstallCommand","metadata":{"unresolvedName":"parsePiInstallCommand"}}],["external:expect(parsePiInstallCommand('pi install npm:@scope/pkg -l')).toEqual",{"id":"external:expect(parsePiInstallCommand('pi install npm:@scope/pkg -l')).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(parsePiInstallCommand('pi install npm:@scope/pkg -l')).toEqual"}}],["external:expect(() => parsePiInstallCommand('npm install pi-hud')).toThrow",{"id":"external:expect(() => parsePiInstallCommand('npm install pi-hud')).toThrow","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(() => parsePiInstallCommand('npm install pi-hud')).toThrow"}}],["external:expect(() => parsePiInstallCommand('pi remove npm:pi-hud')).toThrow",{"id":"external:expect(() => parsePiInstallCommand('pi remove npm:pi-hud')).toThrow","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(() => parsePiInstallCommand('pi remove npm:pi-hud')).toThrow"}}],["external:expect(() => parsePiInstallCommand('pi install')).toThrow",{"id":"external:expect(() => parsePiInstallCommand('pi install')).toThrow","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(() => parsePiInstallCommand('pi install')).toThrow"}}],["symbol-name:makeTempRoot",{"id":"symbol-name:makeTempRoot","kind":"symbol","language":"jsts","symbolName":"makeTempRoot","metadata":{"unresolvedName":"makeTempRoot"}}],["symbol-name:writeJson",{"id":"symbol-name:writeJson","kind":"symbol","language":"jsts","symbolName":"writeJson","metadata":{"unresolvedName":"writeJson"}}],["symbol-name:buildExtensionCatalog",{"id":"symbol-name:buildExtensionCatalog","kind":"symbol","language":"jsts","symbolName":"buildExtensionCatalog","metadata":{"unresolvedName":"buildExtensionCatalog"}}],["external:expect(catalog.summary).toEqual",{"id":"external:expect(catalog.summary).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(catalog.summary).toEqual"}}],["external:catalog.packages.find",{"id":"external:catalog.packages.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"catalog.packages.find"}}],["external:expect(userPackage).toMatchObject",{"id":"external:expect(userPackage).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(userPackage).toMatchObject"}}],["external:expect(userPackage?.resources.extensions).toEqual",{"id":"external:expect(userPackage?.resources.extensions).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(userPackage?.resources.extensions).toEqual"}}],["external:expect.objectContaining",{"id":"external:expect.objectContaining","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect.objectContaining"}}],["external:expect(userPackage?.resources.skills).toEqual",{"id":"external:expect(userPackage?.resources.skills).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(userPackage?.resources.skills).toEqual"}}],["external:expect(projectPackage).toMatchObject",{"id":"external:expect(projectPackage).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(projectPackage).toMatchObject"}}],["external:expect(projectPackage?.resources.extensions).toEqual",{"id":"external:expect(projectPackage?.resources.extensions).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(projectPackage?.resources.extensions).toEqual"}}],["external:expect(missingPackage).toMatchObject",{"id":"external:expect(missingPackage).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(missingPackage).toMatchObject"}}],["external:vi.fn",{"id":"external:vi.fn","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.fn"}}],["symbol-name:executeExtensionInstallCommand",{"id":"symbol-name:executeExtensionInstallCommand","kind":"symbol","language":"jsts","symbolName":"executeExtensionInstallCommand","metadata":{"unresolvedName":"executeExtensionInstallCommand"}}],["symbol-name:executeExtensionPackageRemoval",{"id":"symbol-name:executeExtensionPackageRemoval","kind":"symbol","language":"jsts","symbolName":"executeExtensionPackageRemoval","metadata":{"unresolvedName":"executeExtensionPackageRemoval"}}],["external:expect(runner).toHaveBeenNthCalledWith",{"id":"external:expect(runner).toHaveBeenNthCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(runner).toHaveBeenNthCalledWith"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","metadata":{"lineCount":514,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:node:child_process",{"id":"external:node:child_process","kind":"external","language":"jsts","metadata":{"source":"node:child_process"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:getHomeDir",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:getHomeDir","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"getHomeDir","symbolKind":"function","exported":false,"metadata":{"line":101,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:os.homedir",{"id":"external:os.homedir","kind":"external","language":"jsts","metadata":{"unresolvedName":"os.homedir"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:getAgentDir",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:getAgentDir","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"getAgentDir","symbolKind":"function","exported":false,"metadata":{"line":105,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getHomeDir",{"id":"symbol-name:getHomeDir","kind":"symbol","language":"jsts","symbolName":"getHomeDir","metadata":{"unresolvedName":"getHomeDir"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readJsonFile",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readJsonFile","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"readJsonFile","symbolKind":"function","exported":false,"metadata":{"line":109,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:fs.existsSync",{"id":"external:fs.existsSync","kind":"external","language":"jsts","metadata":{"unresolvedName":"fs.existsSync"}}],["external:JSON.parse",{"id":"external:JSON.parse","kind":"external","language":"jsts","metadata":{"unresolvedName":"JSON.parse"}}],["external:fs.readFileSync",{"id":"external:fs.readFileSync","kind":"external","language":"jsts","metadata":{"unresolvedName":"fs.readFileSync"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"readSettings","symbolKind":"function","exported":false,"metadata":{"line":118,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:readJsonFile",{"id":"symbol-name:readJsonFile","kind":"symbol","language":"jsts","symbolName":"readJsonFile","metadata":{"unresolvedName":"readJsonFile"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:normalizePackageEntry",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:normalizePackageEntry","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"normalizePackageEntry","symbolKind":"function","exported":false,"metadata":{"line":122,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:entry.trim",{"id":"external:entry.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"entry.trim"}}],["external:entry.source.trim",{"id":"external:entry.source.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"entry.source.trim"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parseNpmPackageName",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parseNpmPackageName","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"parseNpmPackageName","symbolKind":"function","exported":false,"metadata":{"line":148,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:source.startsWith",{"id":"external:source.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"source.startsWith"}}],["external:source.slice('npm:'.length).trim",{"id":"external:source.slice('npm:'.length).trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"source.slice('npm:'.length).trim"}}],["external:source.slice",{"id":"external:source.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"source.slice"}}],["external:spec.match",{"id":"external:spec.match","kind":"external","language":"jsts","metadata":{"unresolvedName":"spec.match"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:isProbablyLocalSource",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:isProbablyLocalSource","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"isProbablyLocalSource","symbolKind":"function","exported":false,"metadata":{"line":155,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:path.isAbsolute",{"id":"external:path.isAbsolute","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.isAbsolute"}}],["external:/^[a-zA-Z]:[\\\\/]/.test",{"id":"external:/^[a-zA-Z]:[\\\\/]/.test","kind":"external","language":"jsts","metadata":{"unresolvedName":"/^[a-zA-Z]:[\\\\/]/.test"}}],["external:source.includes",{"id":"external:source.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"source.includes"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveLocalSource",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveLocalSource","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"resolveLocalSource","symbolKind":"function","exported":false,"metadata":{"line":165,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getAgentDir",{"id":"symbol-name:getAgentDir","kind":"symbol","language":"jsts","symbolName":"getAgentDir","metadata":{"unresolvedName":"getAgentDir"}}],["external:path.resolve",{"id":"external:path.resolve","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.resolve"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parseGitInstallPathParts",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parseGitInstallPathParts","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"parseGitInstallPathParts","symbolKind":"function","exported":false,"metadata":{"line":172,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:source.replace",{"id":"external:source.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"source.replace"}}],["external:normalized.match",{"id":"external:normalized.match","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalized.match"}}],["external:githubShorthand[1].replace",{"id":"external:githubShorthand[1].replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"githubShorthand[1].replace"}}],["external:sshMatch[2].replace",{"id":"external:sshMatch[2].replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"sshMatch[2].replace"}}],["external:url.pathname.replace(/^\\//, '').replace",{"id":"external:url.pathname.replace(/^\\//, '').replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"url.pathname.replace(/^\\//, '').replace"}}],["external:url.pathname.replace",{"id":"external:url.pathname.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"url.pathname.replace"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveInstalledPath",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveInstalledPath","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"resolveInstalledPath","symbolKind":"function","exported":false,"metadata":{"line":189,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:parseNpmPackageName",{"id":"symbol-name:parseNpmPackageName","kind":"symbol","language":"jsts","symbolName":"parseNpmPackageName","metadata":{"unresolvedName":"parseNpmPackageName"}}],["external:packageName.split",{"id":"external:packageName.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"packageName.split"}}],["symbol-name:isProbablyLocalSource",{"id":"symbol-name:isProbablyLocalSource","kind":"symbol","language":"jsts","symbolName":"isProbablyLocalSource","metadata":{"unresolvedName":"isProbablyLocalSource"}}],["symbol-name:resolveLocalSource",{"id":"symbol-name:resolveLocalSource","kind":"symbol","language":"jsts","symbolName":"resolveLocalSource","metadata":{"unresolvedName":"resolveLocalSource"}}],["symbol-name:parseGitInstallPathParts",{"id":"symbol-name:parseGitInstallPathParts","kind":"symbol","language":"jsts","symbolName":"parseGitInstallPathParts","metadata":{"unresolvedName":"parseGitInstallPathParts"}}],["external:gitParts.repoPath.split",{"id":"external:gitParts.repoPath.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"gitParts.repoPath.split"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:collectFiles",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:collectFiles","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"collectFiles","symbolKind":"function","exported":false,"metadata":{"line":219,"column":1,"cyclomaticComplexity":9,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:fs.statSync",{"id":"external:fs.statSync","kind":"external","language":"jsts","metadata":{"unresolvedName":"fs.statSync"}}],["external:stat.isFile",{"id":"external:stat.isFile","kind":"external","language":"jsts","metadata":{"unresolvedName":"stat.isFile"}}],["external:RESOURCE_FILE_PATTERNS[resourceType].test",{"id":"external:RESOURCE_FILE_PATTERNS[resourceType].test","kind":"external","language":"jsts","metadata":{"unresolvedName":"RESOURCE_FILE_PATTERNS[resourceType].test"}}],["external:stat.isDirectory",{"id":"external:stat.isDirectory","kind":"external","language":"jsts","metadata":{"unresolvedName":"stat.isDirectory"}}],["external:fs.readdirSync",{"id":"external:fs.readdirSync","kind":"external","language":"jsts","metadata":{"unresolvedName":"fs.readdirSync"}}],["external:entry.isDirectory",{"id":"external:entry.isDirectory","kind":"external","language":"jsts","metadata":{"unresolvedName":"entry.isDirectory"}}],["external:files.push",{"id":"external:files.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"files.push"}}],["symbol-name:collectFiles",{"id":"symbol-name:collectFiles","kind":"symbol","language":"jsts","symbolName":"collectFiles","metadata":{"unresolvedName":"collectFiles"}}],["external:entry.isFile",{"id":"external:entry.isFile","kind":"external","language":"jsts","metadata":{"unresolvedName":"entry.isFile"}}],["external:files.sort",{"id":"external:files.sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"files.sort"}}],["external:a.localeCompare",{"id":"external:a.localeCompare","kind":"external","language":"jsts","metadata":{"unresolvedName":"a.localeCompare"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:stripOverridePatterns",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:stripOverridePatterns","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"stripOverridePatterns","symbolKind":"function","exported":false,"metadata":{"line":237,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:entries.filter",{"id":"external:entries.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"entries.filter"}}],["external:entry.trim().startsWith",{"id":"external:entry.trim().startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"entry.trim().startsWith"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveManifestEntry",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveManifestEntry","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"resolveManifestEntry","symbolKind":"function","exported":false,"metadata":{"line":241,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:normalized.startsWith",{"id":"external:normalized.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalized.startsWith"}}],["external:normalized.includes",{"id":"external:normalized.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalized.includes"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:discoverResourcePaths",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:discoverResourcePaths","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"discoverResourcePaths","symbolKind":"function","exported":false,"metadata":{"line":254,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:stripOverridePatterns(manifestEntries).flatMap",{"id":"external:stripOverridePatterns(manifestEntries).flatMap","kind":"external","language":"jsts","metadata":{"unresolvedName":"stripOverridePatterns(manifestEntries).flatMap"}}],["symbol-name:stripOverridePatterns",{"id":"symbol-name:stripOverridePatterns","kind":"symbol","language":"jsts","symbolName":"stripOverridePatterns","metadata":{"unresolvedName":"stripOverridePatterns"}}],["symbol-name:resolveManifestEntry",{"id":"symbol-name:resolveManifestEntry","kind":"symbol","language":"jsts","symbolName":"resolveManifestEntry","metadata":{"unresolvedName":"resolveManifestEntry"}}],["external:Array.from(new Set(files)).sort",{"id":"external:Array.from(new Set(files)).sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"Array.from(new Set(files)).sort"}}],["external:Array.from",{"id":"external:Array.from","kind":"external","language":"jsts","metadata":{"unresolvedName":"Array.from"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:toRelativePosix",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:toRelativePosix","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"toRelativePosix","symbolKind":"function","exported":false,"metadata":{"line":270,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:path.relative(packageRoot, filePath).replace",{"id":"external:path.relative(packageRoot, filePath).replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.relative(packageRoot, filePath).replace"}}],["external:path.relative",{"id":"external:path.relative","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.relative"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:wildcardToRegExp",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:wildcardToRegExp","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"wildcardToRegExp","symbolKind":"function","exported":false,"metadata":{"line":274,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:pattern.replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&').replace",{"id":"external:pattern.replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&').replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"pattern.replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&').replace"}}],["external:pattern.replace",{"id":"external:pattern.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"pattern.replace"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:matchesFilter",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:matchesFilter","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"matchesFilter","symbolKind":"function","exported":false,"metadata":{"line":279,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:toRelativePosix",{"id":"symbol-name:toRelativePosix","kind":"symbol","language":"jsts","symbolName":"toRelativePosix","metadata":{"unresolvedName":"toRelativePosix"}}],["external:patterns.map(pattern => pattern.trim()).filter",{"id":"external:patterns.map(pattern => pattern.trim()).filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"patterns.map(pattern => pattern.trim()).filter"}}],["external:patterns.map",{"id":"external:patterns.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"patterns.map"}}],["external:pattern.trim",{"id":"external:pattern.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"pattern.trim"}}],["external:normalizedPatterns.some",{"id":"external:normalizedPatterns.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalizedPatterns.some"}}],["external:pattern.startsWith",{"id":"external:pattern.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"pattern.startsWith"}}],["external:pattern.slice",{"id":"external:pattern.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"pattern.slice"}}],["external:positivePattern.replace",{"id":"external:positivePattern.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"positivePattern.replace"}}],["external:relativePath.endsWith",{"id":"external:relativePath.endsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"relativePath.endsWith"}}],["external:wildcardToRegExp(normalizedPattern).test",{"id":"external:wildcardToRegExp(normalizedPattern).test","kind":"external","language":"jsts","metadata":{"unresolvedName":"wildcardToRegExp(normalizedPattern).test"}}],["symbol-name:wildcardToRegExp",{"id":"symbol-name:wildcardToRegExp","kind":"symbol","language":"jsts","symbolName":"wildcardToRegExp","metadata":{"unresolvedName":"wildcardToRegExp"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":486,"column":23,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resourceName",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resourceName","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"resourceName","symbolKind":"function","exported":false,"metadata":{"line":296,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:path.basename(filePath).toLowerCase",{"id":"external:path.basename(filePath).toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.basename(filePath).toLowerCase"}}],["external:path.basename",{"id":"external:path.basename","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.basename"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildResources",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildResources","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"buildResources","symbolKind":"function","exported":false,"metadata":{"line":301,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:discoverResourcePaths",{"id":"symbol-name:discoverResourcePaths","kind":"symbol","language":"jsts","symbolName":"discoverResourcePaths","metadata":{"unresolvedName":"discoverResourcePaths"}}],["external:files.map",{"id":"external:files.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"files.map"}}],["symbol-name:resourceName",{"id":"symbol-name:resourceName","kind":"symbol","language":"jsts","symbolName":"resourceName","metadata":{"unresolvedName":"resourceName"}}],["symbol-name:matchesFilter",{"id":"symbol-name:matchesFilter","kind":"symbol","language":"jsts","symbolName":"matchesFilter","metadata":{"unresolvedName":"matchesFilter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:hasEnabledResource",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:hasEnabledResource","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"hasEnabledResource","symbolKind":"function","exported":false,"metadata":{"line":321,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:RESOURCE_TYPES.some",{"id":"external:RESOURCE_TYPES.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"RESOURCE_TYPES.some"}}],["external:resources[resourceType].some",{"id":"external:resources[resourceType].some","kind":"external","language":"jsts","metadata":{"unresolvedName":"resources[resourceType].some"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:countByStatus",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:countByStatus","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"countByStatus","symbolKind":"function","exported":false,"metadata":{"line":325,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:packages.reduce",{"id":"external:packages.reduce","kind":"external","language":"jsts","metadata":{"unresolvedName":"packages.reduce"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readPackageMetadata",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readPackageMetadata","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"readPackageMetadata","symbolKind":"function","exported":false,"metadata":{"line":336,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:String",{"id":"symbol-name:String","kind":"symbol","language":"jsts","symbolName":"String","metadata":{"unresolvedName":"String"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"buildExtensionCatalog","symbolKind":"function","exported":true,"metadata":{"line":347,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:readSettings",{"id":"symbol-name:readSettings","kind":"symbol","language":"jsts","symbolName":"readSettings","metadata":{"unresolvedName":"readSettings"}}],["external:(userSettings.packages ?? []).map",{"id":"external:(userSettings.packages ?? []).map","kind":"external","language":"jsts","metadata":{"unresolvedName":"(userSettings.packages ?? []).map"}}],["symbol-name:normalizePackageEntry",{"id":"symbol-name:normalizePackageEntry","kind":"symbol","language":"jsts","symbolName":"normalizePackageEntry","metadata":{"unresolvedName":"normalizePackageEntry"}}],["external:(projectSettings.packages ?? []).map",{"id":"external:(projectSettings.packages ?? []).map","kind":"external","language":"jsts","metadata":{"unresolvedName":"(projectSettings.packages ?? []).map"}}],["external:configuredPackages.map",{"id":"external:configuredPackages.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"configuredPackages.map"}}],["symbol-name:resolveInstalledPath",{"id":"symbol-name:resolveInstalledPath","kind":"symbol","language":"jsts","symbolName":"resolveInstalledPath","metadata":{"unresolvedName":"resolveInstalledPath"}}],["symbol-name:readPackageMetadata",{"id":"symbol-name:readPackageMetadata","kind":"symbol","language":"jsts","symbolName":"readPackageMetadata","metadata":{"unresolvedName":"readPackageMetadata"}}],["symbol-name:buildResources",{"id":"symbol-name:buildResources","kind":"symbol","language":"jsts","symbolName":"buildResources","metadata":{"unresolvedName":"buildResources"}}],["symbol-name:hasEnabledResource",{"id":"symbol-name:hasEnabledResource","kind":"symbol","language":"jsts","symbolName":"hasEnabledResource","metadata":{"unresolvedName":"hasEnabledResource"}}],["external:packages.sort",{"id":"external:packages.sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"packages.sort"}}],["external:(a.packageName || a.source).localeCompare",{"id":"external:(a.packageName || a.source).localeCompare","kind":"external","language":"jsts","metadata":{"unresolvedName":"(a.packageName || a.source).localeCompare"}}],["symbol-name:countByStatus",{"id":"symbol-name:countByStatus","kind":"symbol","language":"jsts","symbolName":"countByStatus","metadata":{"unresolvedName":"countByStatus"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:tokenizeCommand",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:tokenizeCommand","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"tokenizeCommand","symbolKind":"function","exported":false,"metadata":{"line":397,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:/\\s/.test",{"id":"external:/\\s/.test","kind":"external","language":"jsts","metadata":{"unresolvedName":"/\\s/.test"}}],["external:tokens.push",{"id":"external:tokens.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"tokens.push"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parsePiInstallCommand",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parsePiInstallCommand","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"parsePiInstallCommand","symbolKind":"function","exported":true,"metadata":{"line":434,"column":1,"cyclomaticComplexity":11,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:tokenizeCommand",{"id":"symbol-name:tokenizeCommand","kind":"symbol","language":"jsts","symbolName":"tokenizeCommand","metadata":{"unresolvedName":"tokenizeCommand"}}],["external:command.trim",{"id":"external:command.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"command.trim"}}],["external:path\n .basename(tokens[0])\n .replace",{"id":"external:path\n .basename(tokens[0])\n .replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"path\n .basename(tokens[0])\n .replace"}}],["external:path\n .basename",{"id":"external:path\n .basename","kind":"external","language":"jsts","metadata":{"unresolvedName":"path\n .basename"}}],["external:tokens.slice",{"id":"external:tokens.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"tokens.slice"}}],["external:token.startsWith",{"id":"external:token.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"token.startsWith"}}],["external:/[;&|<>`]/.test",{"id":"external:/[;&|<>`]/.test","kind":"external","language":"jsts","metadata":{"unresolvedName":"/[;&|<>`]/.test"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:getPiExecutable",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:getPiExecutable","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"getPiExecutable","symbolKind":"function","exported":false,"metadata":{"line":466,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:defaultPiCommandRunner",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:defaultPiCommandRunner","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"defaultPiCommandRunner","symbolKind":"function","exported":true,"metadata":{"line":470,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:spawn",{"id":"symbol-name:spawn","kind":"symbol","language":"jsts","symbolName":"spawn","metadata":{"unresolvedName":"spawn"}}],["symbol-name:getPiExecutable",{"id":"symbol-name:getPiExecutable","kind":"symbol","language":"jsts","symbolName":"getPiExecutable","metadata":{"unresolvedName":"getPiExecutable"}}],["external:child.stdout?.on",{"id":"external:child.stdout?.on","kind":"external","language":"jsts","metadata":{"unresolvedName":"child.stdout?.on"}}],["external:child.stderr?.on",{"id":"external:child.stderr?.on","kind":"external","language":"jsts","metadata":{"unresolvedName":"child.stderr?.on"}}],["external:child.on",{"id":"external:child.on","kind":"external","language":"jsts","metadata":{"unresolvedName":"child.on"}}],["symbol-name:resolve",{"id":"symbol-name:resolve","kind":"symbol","language":"jsts","symbolName":"resolve","metadata":{"unresolvedName":"resolve"}}],["symbol-name:reject",{"id":"symbol-name:reject","kind":"symbol","language":"jsts","symbolName":"reject","metadata":{"unresolvedName":"reject"}}],["external:stderr.trim",{"id":"external:stderr.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"stderr.trim"}}],["external:args.join",{"id":"external:args.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"args.join"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:executeExtensionInstallCommand",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:executeExtensionInstallCommand","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"executeExtensionInstallCommand","symbolKind":"function","exported":true,"metadata":{"line":496,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:runner",{"id":"symbol-name:runner","kind":"symbol","language":"jsts","symbolName":"runner","metadata":{"unresolvedName":"runner"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:executeExtensionPackageRemoval",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:executeExtensionPackageRemoval","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","symbolName":"executeExtensionPackageRemoval","symbolKind":"function","exported":true,"metadata":{"line":507,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","metadata":{"lineCount":104,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["module:./piagentui-git-manager.js",{"id":"module:./piagentui-git-manager.js","kind":"module","language":"jsts","metadata":{"source":"./piagentui-git-manager.js"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:createRunner",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:createRunner","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","symbolName":"createRunner","symbolKind":"function","exported":false,"metadata":{"line":17,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":96,"column":58,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:createRunner",{"id":"symbol-name:createRunner","kind":"symbol","language":"jsts","symbolName":"createRunner","metadata":{"unresolvedName":"createRunner"}}],["symbol-name:listGitBranches",{"id":"symbol-name:listGitBranches","kind":"symbol","language":"jsts","symbolName":"listGitBranches","metadata":{"unresolvedName":"listGitBranches"}}],["external:expect(result.current).toBe",{"id":"external:expect(result.current).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current).toBe"}}],["external:expect(result.branches).toEqual",{"id":"external:expect(result.branches).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.branches).toEqual"}}],["symbol-name:getGitStatus",{"id":"symbol-name:getGitStatus","kind":"symbol","language":"jsts","symbolName":"getGitStatus","metadata":{"unresolvedName":"getGitStatus"}}],["external:expect(status.branch).toBe",{"id":"external:expect(status.branch).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(status.branch).toBe"}}],["external:expect(status.upstream).toBe",{"id":"external:expect(status.upstream).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(status.upstream).toBe"}}],["external:expect(status.ahead).toBe",{"id":"external:expect(status.ahead).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(status.ahead).toBe"}}],["external:expect(status.behind).toBe",{"id":"external:expect(status.behind).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(status.behind).toBe"}}],["external:expect(status.dirty).toBe",{"id":"external:expect(status.dirty).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(status.dirty).toBe"}}],["external:expect(status.files).toEqual",{"id":"external:expect(status.files).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(status.files).toEqual"}}],["symbol-name:checkoutGitBranch",{"id":"symbol-name:checkoutGitBranch","kind":"symbol","language":"jsts","symbolName":"checkoutGitBranch","metadata":{"unresolvedName":"checkoutGitBranch"}}],["symbol-name:createGitBranch",{"id":"symbol-name:createGitBranch","kind":"symbol","language":"jsts","symbolName":"createGitBranch","metadata":{"unresolvedName":"createGitBranch"}}],["symbol-name:stageGitPaths",{"id":"symbol-name:stageGitPaths","kind":"symbol","language":"jsts","symbolName":"stageGitPaths","metadata":{"unresolvedName":"stageGitPaths"}}],["symbol-name:unstageGitPaths",{"id":"symbol-name:unstageGitPaths","kind":"symbol","language":"jsts","symbolName":"unstageGitPaths","metadata":{"unresolvedName":"unstageGitPaths"}}],["external:expect(runner).toHaveBeenCalledWith",{"id":"external:expect(runner).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(runner).toHaveBeenCalledWith"}}],["external:expect(commitGitChanges(repoDir, { message: ' ' }, runner)).rejects.toThrow",{"id":"external:expect(commitGitChanges(repoDir, { message: ' ' }, runner)).rejects.toThrow","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(commitGitChanges(repoDir, { message: ' ' }, runner)).rejects.toThrow"}}],["symbol-name:commitGitChanges",{"id":"symbol-name:commitGitChanges","kind":"symbol","language":"jsts","symbolName":"commitGitChanges","metadata":{"unresolvedName":"commitGitChanges"}}],["external:expect(runner).not.toHaveBeenCalled",{"id":"external:expect(runner).not.toHaveBeenCalled","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(runner).not.toHaveBeenCalled"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","metadata":{"lineCount":260,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:runGit",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:runGit","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","symbolName":"runGit","symbolKind":"function","exported":true,"metadata":{"line":63,"column":41,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:child.stdout.setEncoding",{"id":"external:child.stdout.setEncoding","kind":"external","language":"jsts","metadata":{"unresolvedName":"child.stdout.setEncoding"}}],["external:child.stderr.setEncoding",{"id":"external:child.stderr.setEncoding","kind":"external","language":"jsts","metadata":{"unresolvedName":"child.stderr.setEncoding"}}],["external:child.stdout.on",{"id":"external:child.stdout.on","kind":"external","language":"jsts","metadata":{"unresolvedName":"child.stdout.on"}}],["external:child.stderr.on",{"id":"external:child.stderr.on","kind":"external","language":"jsts","metadata":{"unresolvedName":"child.stderr.on"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":121,"column":10,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:assertSafeRefName",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:assertSafeRefName","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","symbolName":"assertSafeRefName","symbolKind":"function","exported":false,"metadata":{"line":88,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:value.trim",{"id":"external:value.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"value.trim"}}],["external:name.startsWith",{"id":"external:name.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"name.startsWith"}}],["external:/[\\0~^:?*[\\]\\\\]/.test",{"id":"external:/[\\0~^:?*[\\]\\\\]/.test","kind":"external","language":"jsts","metadata":{"unresolvedName":"/[\\0~^:?*[\\]\\\\]/.test"}}],["external:name.includes",{"id":"external:name.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"name.includes"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:assertSafePath",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:assertSafePath","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","symbolName":"assertSafePath","symbolKind":"function","exported":false,"metadata":{"line":98,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:filePath.includes",{"id":"external:filePath.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"filePath.includes"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:normalizeRemoteName",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:normalizeRemoteName","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","symbolName":"normalizeRemoteName","symbolKind":"function","exported":false,"metadata":{"line":105,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:name.replace",{"id":"external:name.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"name.replace"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:listGitBranches",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:listGitBranches","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","symbolName":"listGitBranches","symbolKind":"function","exported":true,"metadata":{"line":109,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:stdout\n .split(/\\r?\\n/)\n .map(line => line.trim())\n .filter",{"id":"external:stdout\n .split(/\\r?\\n/)\n .map(line => line.trim())\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"stdout\n .split(/\\r?\\n/)\n .map(line => line.trim())\n .filter"}}],["external:stdout\n .split(/\\r?\\n/)\n .map",{"id":"external:stdout\n .split(/\\r?\\n/)\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"stdout\n .split(/\\r?\\n/)\n .map"}}],["external:stdout\n .split",{"id":"external:stdout\n .split","kind":"external","language":"jsts","metadata":{"unresolvedName":"stdout\n .split"}}],["external:line.trim",{"id":"external:line.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"line.trim"}}],["external:line.split",{"id":"external:line.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"line.split"}}],["symbol-name:normalizeRemoteName",{"id":"symbol-name:normalizeRemoteName","kind":"symbol","language":"jsts","symbolName":"normalizeRemoteName","metadata":{"unresolvedName":"normalizeRemoteName"}}],["external:rawName.startsWith",{"id":"external:rawName.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"rawName.startsWith"}}],["external:branches.find",{"id":"external:branches.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"branches.find"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:parseStatusPath",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:parseStatusPath","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","symbolName":"parseStatusPath","symbolKind":"function","exported":false,"metadata":{"line":137,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:line.includes",{"id":"external:line.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"line.includes"}}],["external:line.split('\\t').pop",{"id":"external:line.split('\\t').pop","kind":"external","language":"jsts","metadata":{"unresolvedName":"line.split('\\t').pop"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:getGitStatus",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:getGitStatus","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","symbolName":"getGitStatus","symbolKind":"function","exported":true,"metadata":{"line":143,"column":1,"cyclomaticComplexity":12,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:stdout.split",{"id":"external:stdout.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"stdout.split"}}],["external:line.startsWith",{"id":"external:line.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"line.startsWith"}}],["external:line.slice('# branch.head '.length).trim",{"id":"external:line.slice('# branch.head '.length).trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"line.slice('# branch.head '.length).trim"}}],["external:line.slice",{"id":"external:line.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"line.slice"}}],["external:line.slice('# branch.upstream '.length).trim",{"id":"external:line.slice('# branch.upstream '.length).trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"line.slice('# branch.upstream '.length).trim"}}],["external:line.match",{"id":"external:line.match","kind":"external","language":"jsts","metadata":{"unresolvedName":"line.match"}}],["symbol-name:Number",{"id":"symbol-name:Number","kind":"symbol","language":"jsts","symbolName":"Number","metadata":{"unresolvedName":"Number"}}],["symbol-name:parseStatusPath",{"id":"symbol-name:parseStatusPath","kind":"symbol","language":"jsts","symbolName":"parseStatusPath","metadata":{"unresolvedName":"parseStatusPath"}}],["external:status.files.push",{"id":"external:status.files.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"status.files.push"}}],["external:line.slice(2).trim",{"id":"external:line.slice(2).trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"line.slice(2).trim"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:checkoutGitBranch",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:checkoutGitBranch","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","symbolName":"checkoutGitBranch","symbolKind":"function","exported":true,"metadata":{"line":195,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:assertSafeRefName",{"id":"symbol-name:assertSafeRefName","kind":"symbol","language":"jsts","symbolName":"assertSafeRefName","metadata":{"unresolvedName":"assertSafeRefName"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:createGitBranch",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:createGitBranch","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","symbolName":"createGitBranch","symbolKind":"function","exported":true,"metadata":{"line":205,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:normalizePaths",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:normalizePaths","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","symbolName":"normalizePaths","symbolKind":"function","exported":false,"metadata":{"line":215,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:Array.isArray",{"id":"external:Array.isArray","kind":"external","language":"jsts","metadata":{"unresolvedName":"Array.isArray"}}],["external:request.paths.map",{"id":"external:request.paths.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"request.paths.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:stageGitPaths",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:stageGitPaths","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","symbolName":"stageGitPaths","symbolKind":"function","exported":true,"metadata":{"line":220,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:normalizePaths",{"id":"symbol-name:normalizePaths","kind":"symbol","language":"jsts","symbolName":"normalizePaths","metadata":{"unresolvedName":"normalizePaths"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:unstageGitPaths",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:unstageGitPaths","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","symbolName":"unstageGitPaths","symbolKind":"function","exported":true,"metadata":{"line":230,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:commitGitChanges",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:commitGitChanges","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","symbolName":"commitGitChanges","symbolKind":"function","exported":true,"metadata":{"line":240,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:request.message.trim",{"id":"external:request.message.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"request.message.trim"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:pullGitBranch",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:pullGitBranch","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","symbolName":"pullGitBranch","symbolKind":"function","exported":true,"metadata":{"line":251,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:pushGitBranch",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:pushGitBranch","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","symbolName":"pushGitBranch","symbolKind":"function","exported":true,"metadata":{"line":256,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","metadata":{"lineCount":172,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["module:./piagentui-server-core.js",{"id":"module:./piagentui-server-core.js","kind":"module","language":"jsts","metadata":{"source":"./piagentui-server-core.js"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":167,"column":55,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:describe",{"id":"symbol-name:describe","kind":"symbol","language":"jsts","symbolName":"describe","metadata":{"unresolvedName":"describe"}}],["external:expect(isLoopbackHost('localhost')).toBe",{"id":"external:expect(isLoopbackHost('localhost')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(isLoopbackHost('localhost')).toBe"}}],["symbol-name:isLoopbackHost",{"id":"symbol-name:isLoopbackHost","kind":"symbol","language":"jsts","symbolName":"isLoopbackHost","metadata":{"unresolvedName":"isLoopbackHost"}}],["external:expect(isLoopbackHost('127.0.0.1')).toBe",{"id":"external:expect(isLoopbackHost('127.0.0.1')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(isLoopbackHost('127.0.0.1')).toBe"}}],["external:expect(isLoopbackHost('[::1]')).toBe",{"id":"external:expect(isLoopbackHost('[::1]')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(isLoopbackHost('[::1]')).toBe"}}],["external:expect(isLoopbackHost('localhost:3000')).toBe",{"id":"external:expect(isLoopbackHost('localhost:3000')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(isLoopbackHost('localhost:3000')).toBe"}}],["external:expect(isLoopbackHost('127.0.0.1:8080')).toBe",{"id":"external:expect(isLoopbackHost('127.0.0.1:8080')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(isLoopbackHost('127.0.0.1:8080')).toBe"}}],["external:expect(isLoopbackHost('192.168.1.1')).toBe",{"id":"external:expect(isLoopbackHost('192.168.1.1')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(isLoopbackHost('192.168.1.1')).toBe"}}],["external:expect(isLoopbackHost('example.com')).toBe",{"id":"external:expect(isLoopbackHost('example.com')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(isLoopbackHost('example.com')).toBe"}}],["external:expect(isLoopbackHost('0.0.0.0')).toBe",{"id":"external:expect(isLoopbackHost('0.0.0.0')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(isLoopbackHost('0.0.0.0')).toBe"}}],["external:expect(isLoopbackHost('10.0.0.1')).toBe",{"id":"external:expect(isLoopbackHost('10.0.0.1')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(isLoopbackHost('10.0.0.1')).toBe"}}],["external:expect(validateBearerToken(`Bearer ${sampleToken}`, sampleToken)).toBe",{"id":"external:expect(validateBearerToken(`Bearer ${sampleToken}`, sampleToken)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(validateBearerToken(`Bearer ${sampleToken}`, sampleToken)).toBe"}}],["symbol-name:validateBearerToken",{"id":"symbol-name:validateBearerToken","kind":"symbol","language":"jsts","symbolName":"validateBearerToken","metadata":{"unresolvedName":"validateBearerToken"}}],["external:expect(validateBearerToken(`Bearer wrong-token`, sampleToken)).toBe",{"id":"external:expect(validateBearerToken(`Bearer wrong-token`, sampleToken)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(validateBearerToken(`Bearer wrong-token`, sampleToken)).toBe"}}],["external:expect(validateBearerToken(`Basic ${sampleToken}`, sampleToken)).toBe",{"id":"external:expect(validateBearerToken(`Basic ${sampleToken}`, sampleToken)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(validateBearerToken(`Basic ${sampleToken}`, sampleToken)).toBe"}}],["external:expect(validateBearerToken(sampleToken, sampleToken)).toBe",{"id":"external:expect(validateBearerToken(sampleToken, sampleToken)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(validateBearerToken(sampleToken, sampleToken)).toBe"}}],["external:expect(validateBearerToken('', sampleToken)).toBe",{"id":"external:expect(validateBearerToken('', sampleToken)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(validateBearerToken('', sampleToken)).toBe"}}],["external:expect(preventPathTraversal(baseDir, 'index.html')).toBe",{"id":"external:expect(preventPathTraversal(baseDir, 'index.html')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(preventPathTraversal(baseDir, 'index.html')).toBe"}}],["symbol-name:preventPathTraversal",{"id":"symbol-name:preventPathTraversal","kind":"symbol","language":"jsts","symbolName":"preventPathTraversal","metadata":{"unresolvedName":"preventPathTraversal"}}],["external:expect(preventPathTraversal(baseDir, 'assets/main.js')).toBe",{"id":"external:expect(preventPathTraversal(baseDir, 'assets/main.js')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(preventPathTraversal(baseDir, 'assets/main.js')).toBe"}}],["external:expect(preventPathTraversal(baseDir, '../index.html')).toBe",{"id":"external:expect(preventPathTraversal(baseDir, '../index.html')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(preventPathTraversal(baseDir, '../index.html')).toBe"}}],["external:expect(preventPathTraversal(baseDir, '../../etc/passwd')).toBe",{"id":"external:expect(preventPathTraversal(baseDir, '../../etc/passwd')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(preventPathTraversal(baseDir, '../../etc/passwd')).toBe"}}],["external:expect(preventPathTraversal(baseDir, 'assets/../../config.json')).toBe",{"id":"external:expect(preventPathTraversal(baseDir, 'assets/../../config.json')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(preventPathTraversal(baseDir, 'assets/../../config.json')).toBe"}}],["external:expect(validateHostAndOrigin('127.0.0.1', 'http://127.0.0.1:3000')).toBe",{"id":"external:expect(validateHostAndOrigin('127.0.0.1', 'http://127.0.0.1:3000')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(validateHostAndOrigin('127.0.0.1', 'http://127.0.0.1:3000')).toBe"}}],["symbol-name:validateHostAndOrigin",{"id":"symbol-name:validateHostAndOrigin","kind":"symbol","language":"jsts","symbolName":"validateHostAndOrigin","metadata":{"unresolvedName":"validateHostAndOrigin"}}],["external:expect(validateHostAndOrigin('localhost', 'http://localhost')).toBe",{"id":"external:expect(validateHostAndOrigin('localhost', 'http://localhost')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(validateHostAndOrigin('localhost', 'http://localhost')).toBe"}}],["external:expect(validateHostAndOrigin('localhost:5000', '')).toBe",{"id":"external:expect(validateHostAndOrigin('localhost:5000', '')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(validateHostAndOrigin('localhost:5000', '')).toBe"}}],["external:expect(validateHostAndOrigin('127.0.0.1', 'http://malicious.com')).toBe",{"id":"external:expect(validateHostAndOrigin('127.0.0.1', 'http://malicious.com')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(validateHostAndOrigin('127.0.0.1', 'http://malicious.com')).toBe"}}],["external:expect(validateHostAndOrigin('external.com', 'http://localhost')).toBe",{"id":"external:expect(validateHostAndOrigin('external.com', 'http://localhost')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(validateHostAndOrigin('external.com', 'http://localhost')).toBe"}}],["symbol-name:validateHostAndOriginForAccess",{"id":"symbol-name:validateHostAndOriginForAccess","kind":"symbol","language":"jsts","symbolName":"validateHostAndOriginForAccess","metadata":{"unresolvedName":"validateHostAndOriginForAccess"}}],["symbol-name:getLocalNetworkUrls",{"id":"symbol-name:getLocalNetworkUrls","kind":"symbol","language":"jsts","symbolName":"getLocalNetworkUrls","metadata":{"unresolvedName":"getLocalNetworkUrls"}}],["external:expect(urls).toEqual",{"id":"external:expect(urls).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(urls).toEqual"}}],["external:expect(validateSttBaseUrl('https://api.openai.com/v1')).toBe",{"id":"external:expect(validateSttBaseUrl('https://api.openai.com/v1')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(validateSttBaseUrl('https://api.openai.com/v1')).toBe"}}],["symbol-name:validateSttBaseUrl",{"id":"symbol-name:validateSttBaseUrl","kind":"symbol","language":"jsts","symbolName":"validateSttBaseUrl","metadata":{"unresolvedName":"validateSttBaseUrl"}}],["external:expect(validateSttBaseUrl('http://localhost:11434/v1')).toBe",{"id":"external:expect(validateSttBaseUrl('http://localhost:11434/v1')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(validateSttBaseUrl('http://localhost:11434/v1')).toBe"}}],["external:expect(validateSttBaseUrl('file:///tmp/key')).toBe",{"id":"external:expect(validateSttBaseUrl('file:///tmp/key')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(validateSttBaseUrl('file:///tmp/key')).toBe"}}],["external:expect(validateSttBaseUrl('not a url')).toBe",{"id":"external:expect(validateSttBaseUrl('not a url')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(validateSttBaseUrl('not a url')).toBe"}}],["external:expect(isRequestBodySizeAllowed('100')).toBe",{"id":"external:expect(isRequestBodySizeAllowed('100')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(isRequestBodySizeAllowed('100')).toBe"}}],["symbol-name:isRequestBodySizeAllowed",{"id":"symbol-name:isRequestBodySizeAllowed","kind":"symbol","language":"jsts","symbolName":"isRequestBodySizeAllowed","metadata":{"unresolvedName":"isRequestBodySizeAllowed"}}],["external:expect(isRequestBodySizeAllowed('1048576')).toBe",{"id":"external:expect(isRequestBodySizeAllowed('1048576')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(isRequestBodySizeAllowed('1048576')).toBe"}}],["external:expect(isRequestBodySizeAllowed('20000000')).toBe",{"id":"external:expect(isRequestBodySizeAllowed('20000000')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(isRequestBodySizeAllowed('20000000')).toBe"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","metadata":{"lineCount":173,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLoopbackHost",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLoopbackHost","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","symbolName":"isLoopbackHost","symbolKind":"function","exported":true,"metadata":{"line":7,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:host.startsWith",{"id":"external:host.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"host.startsWith"}}],["external:host.indexOf",{"id":"external:host.indexOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"host.indexOf"}}],["external:host.slice",{"id":"external:host.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"host.slice"}}],["external:host.lastIndexOf",{"id":"external:host.lastIndexOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"host.lastIndexOf"}}],["external:host.match",{"id":"external:host.match","kind":"external","language":"jsts","metadata":{"unresolvedName":"host.match"}}],["external:host.includes",{"id":"external:host.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"host.includes"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateBearerToken",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateBearerToken","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","symbolName":"validateBearerToken","symbolKind":"function","exported":true,"metadata":{"line":35,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:authHeader.startsWith",{"id":"external:authHeader.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"authHeader.startsWith"}}],["external:authHeader.substring(7).trim",{"id":"external:authHeader.substring(7).trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"authHeader.substring(7).trim"}}],["external:authHeader.substring",{"id":"external:authHeader.substring","kind":"external","language":"jsts","metadata":{"unresolvedName":"authHeader.substring"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:preventPathTraversal",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:preventPathTraversal","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","symbolName":"preventPathTraversal","symbolKind":"function","exported":true,"metadata":{"line":45,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:resolvedTarget.startsWith",{"id":"external:resolvedTarget.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"resolvedTarget.startsWith"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOrigin",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOrigin","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","symbolName":"validateHostAndOrigin","symbolKind":"function","exported":true,"metadata":{"line":58,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getHostname",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getHostname","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","symbolName":"getHostname","symbolKind":"function","exported":false,"metadata":{"line":62,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isAllowedLanHost",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isAllowedLanHost","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","symbolName":"isAllowedLanHost","symbolKind":"function","exported":false,"metadata":{"line":77,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getHostname",{"id":"symbol-name:getHostname","kind":"symbol","language":"jsts","symbolName":"getHostname","metadata":{"unresolvedName":"getHostname"}}],["external:/^\\d{1,3}(?:\\.\\d{1,3}){3}$/.test",{"id":"external:/^\\d{1,3}(?:\\.\\d{1,3}){3}$/.test","kind":"external","language":"jsts","metadata":{"unresolvedName":"/^\\d{1,3}(?:\\.\\d{1,3}){3}$/.test"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLikelyVirtualInterface",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLikelyVirtualInterface","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","symbolName":"isLikelyVirtualInterface","symbolKind":"function","exported":false,"metadata":{"line":85,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:name.toLowerCase",{"id":"external:name.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"name.toLowerCase"}}],["external:normalizedName.includes",{"id":"external:normalizedName.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalizedName.includes"}}],["external:entry.mac.toLowerCase().startsWith",{"id":"external:entry.mac.toLowerCase().startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"entry.mac.toLowerCase().startsWith"}}],["external:entry.mac.toLowerCase",{"id":"external:entry.mac.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"entry.mac.toLowerCase"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOriginForAccess",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOriginForAccess","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","symbolName":"validateHostAndOriginForAccess","symbolKind":"function","exported":true,"metadata":{"line":105,"column":1,"cyclomaticComplexity":9,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:isAllowedLanHost",{"id":"symbol-name:isAllowedLanHost","kind":"symbol","language":"jsts","symbolName":"isAllowedLanHost","metadata":{"unresolvedName":"isAllowedLanHost"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getLocalNetworkUrls",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getLocalNetworkUrls","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","symbolName":"getLocalNetworkUrls","symbolKind":"function","exported":true,"metadata":{"line":126,"column":1,"cyclomaticComplexity":9,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:Object.entries",{"id":"external:Object.entries","kind":"external","language":"jsts","metadata":{"unresolvedName":"Object.entries"}}],["symbol-name:isLikelyVirtualInterface",{"id":"symbol-name:isLikelyVirtualInterface","kind":"symbol","language":"jsts","symbolName":"isLikelyVirtualInterface","metadata":{"unresolvedName":"isLikelyVirtualInterface"}}],["external:fallbackUrls.add",{"id":"external:fallbackUrls.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"fallbackUrls.add"}}],["external:physicalUrls.add",{"id":"external:physicalUrls.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"physicalUrls.add"}}],["external:Array.from(urls).sort",{"id":"external:Array.from(urls).sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"Array.from(urls).sort"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateSttBaseUrl",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateSttBaseUrl","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","symbolName":"validateSttBaseUrl","symbolKind":"function","exported":true,"metadata":{"line":151,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isRequestBodySizeAllowed",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isRequestBodySizeAllowed","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","symbolName":"isRequestBodySizeAllowed","symbolKind":"function","exported":true,"metadata":{"line":164,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:parseInt",{"id":"symbol-name:parseInt","kind":"symbol","language":"jsts","symbolName":"parseInt","metadata":{"unresolvedName":"parseInt"}}],["symbol-name:isNaN",{"id":"symbol-name:isNaN","kind":"symbol","language":"jsts","symbolName":"isNaN","metadata":{"unresolvedName":"isNaN"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","metadata":{"lineCount":1044,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:node:http",{"id":"external:node:http","kind":"external","language":"jsts","metadata":{"source":"node:http"}}],["module:./piagentui-server.js",{"id":"module:./piagentui-server.js","kind":"module","language":"jsts","metadata":{"source":"./piagentui-server.js"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":861,"column":42,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:afterAll",{"id":"symbol-name:afterAll","kind":"symbol","language":"jsts","symbolName":"afterAll","metadata":{"unresolvedName":"afterAll"}}],["symbol-name:serverInit",{"id":"symbol-name:serverInit","kind":"symbol","language":"jsts","symbolName":"serverInit","metadata":{"unresolvedName":"serverInit"}}],["external:expect(listeners['session_start']).toBeDefined",{"id":"external:expect(listeners['session_start']).toBeDefined","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(listeners['session_start']).toBeDefined"}}],["external:expect(listeners['session_shutdown']).toBeDefined",{"id":"external:expect(listeners['session_shutdown']).toBeDefined","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(listeners['session_shutdown']).toBeDefined"}}],["symbol-name:spawnSync",{"id":"symbol-name:spawnSync","kind":"symbol","language":"jsts","symbolName":"spawnSync","metadata":{"unresolvedName":"spawnSync"}}],["external:new Date().toISOString",{"id":"external:new Date().toISOString","kind":"external","language":"jsts","metadata":{"unresolvedName":"new Date().toISOString"}}],["symbol-name:listeners['session_shutdown']",{"id":"symbol-name:listeners['session_shutdown']","kind":"symbol","language":"jsts","symbolName":"listeners['session_shutdown']","metadata":{"unresolvedName":"listeners['session_shutdown']"}}],["external:path\n .basename(sessionPath)\n .replace",{"id":"external:path\n .basename(sessionPath)\n .replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"path\n .basename(sessionPath)\n .replace"}}],["external:path\n .basename",{"id":"external:path\n .basename","kind":"external","language":"jsts","metadata":{"unresolvedName":"path\n .basename"}}],["external:options?.withSession",{"id":"external:options?.withSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"options?.withSession"}}],["symbol-name:listeners['session_start']",{"id":"symbol-name:listeners['session_start']","kind":"symbol","language":"jsts","symbolName":"listeners['session_start']","metadata":{"unresolvedName":"listeners['session_start']"}}],["symbol-name:setTimeout",{"id":"symbol-name:setTimeout","kind":"symbol","language":"jsts","symbolName":"setTimeout","metadata":{"unresolvedName":"setTimeout"}}],["external:expect(mockContext.ui.setWidget).toHaveBeenCalledWith",{"id":"external:expect(mockContext.ui.setWidget).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(mockContext.ui.setWidget).toHaveBeenCalledWith"}}],["external:expect.arrayContaining",{"id":"external:expect.arrayContaining","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect.arrayContaining"}}],["external:expect.stringContaining",{"id":"external:expect.stringContaining","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect.stringContaining"}}],["external:expect(fs.existsSync(discoveryPath)).toBe",{"id":"external:expect(fs.existsSync(discoveryPath)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(fs.existsSync(discoveryPath)).toBe"}}],["external:expect(port).toBeGreaterThan",{"id":"external:expect(port).toBeGreaterThan","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(port).toBeGreaterThan"}}],["external:expect(token).toBeDefined",{"id":"external:expect(token).toBeDefined","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(token).toBeDefined"}}],["symbol-name:fetch",{"id":"symbol-name:fetch","kind":"symbol","language":"jsts","symbolName":"fetch","metadata":{"unresolvedName":"fetch"}}],["external:expect(healthRes.status).toBe",{"id":"external:expect(healthRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(healthRes.status).toBe"}}],["external:healthRes.json",{"id":"external:healthRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"healthRes.json"}}],["external:expect(healthData).toEqual",{"id":"external:expect(healthData).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(healthData).toEqual"}}],["external:expect(unauthRes.status).toBe",{"id":"external:expect(unauthRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(unauthRes.status).toBe"}}],["external:expect(modelsRes.status).toBe",{"id":"external:expect(modelsRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(modelsRes.status).toBe"}}],["external:modelsRes.json",{"id":"external:modelsRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"modelsRes.json"}}],["external:expect(modelsData.models).toBeDefined",{"id":"external:expect(modelsData.models).toBeDefined","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(modelsData.models).toBeDefined"}}],["external:expect(modelsData.models[0].id).toBe",{"id":"external:expect(modelsData.models[0].id).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(modelsData.models[0].id).toBe"}}],["external:expect(modelsData.models[0].contextLimit).toBe",{"id":"external:expect(modelsData.models[0].contextLimit).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(modelsData.models[0].contextLimit).toBe"}}],["external:expect(modelsData.models[0].outputLimit).toBe",{"id":"external:expect(modelsData.models[0].outputLimit).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(modelsData.models[0].outputLimit).toBe"}}],["external:modelsData.models.find",{"id":"external:modelsData.models.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"modelsData.models.find"}}],["external:expect(legacyModel.contextLimit).toBe",{"id":"external:expect(legacyModel.contextLimit).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(legacyModel.contextLimit).toBe"}}],["external:expect(legacyModel.outputLimit).toBe",{"id":"external:expect(legacyModel.outputLimit).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(legacyModel.outputLimit).toBe"}}],["external:expect(networkRes.status).toBe",{"id":"external:expect(networkRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(networkRes.status).toBe"}}],["external:networkRes.json",{"id":"external:networkRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"networkRes.json"}}],["external:expect(networkData).toMatchObject",{"id":"external:expect(networkData).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(networkData).toMatchObject"}}],["external:expect(Array.isArray(networkData.lanUrls)).toBe",{"id":"external:expect(Array.isArray(networkData.lanUrls)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(Array.isArray(networkData.lanUrls)).toBe"}}],["external:expect(networkEnableRes.status).toBe",{"id":"external:expect(networkEnableRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(networkEnableRes.status).toBe"}}],["external:networkEnableRes.json",{"id":"external:networkEnableRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"networkEnableRes.json"}}],["external:expect(networkEnableData.lanAccessEnabled).toBe",{"id":"external:expect(networkEnableData.lanAccessEnabled).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(networkEnableData.lanAccessEnabled).toBe"}}],["external:expect(networkEnableData.browserLanUrl).toBe",{"id":"external:expect(networkEnableData.browserLanUrl).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(networkEnableData.browserLanUrl).toBe"}}],["external:expect(networkEnableData.browserLanUrl).not.toContain",{"id":"external:expect(networkEnableData.browserLanUrl).not.toContain","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(networkEnableData.browserLanUrl).not.toContain"}}],["external:nodeHttp.request",{"id":"external:nodeHttp.request","kind":"external","language":"jsts","metadata":{"unresolvedName":"nodeHttp.request"}}],["external:response.setEncoding",{"id":"external:response.setEncoding","kind":"external","language":"jsts","metadata":{"unresolvedName":"response.setEncoding"}}],["external:response.on",{"id":"external:response.on","kind":"external","language":"jsts","metadata":{"unresolvedName":"response.on"}}],["external:req.on",{"id":"external:req.on","kind":"external","language":"jsts","metadata":{"unresolvedName":"req.on"}}],["external:req.end",{"id":"external:req.end","kind":"external","language":"jsts","metadata":{"unresolvedName":"req.end"}}],["external:expect(lanModelsRes.status).toBe",{"id":"external:expect(lanModelsRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(lanModelsRes.status).toBe"}}],["external:expect(lanPageRes.status).toBe",{"id":"external:expect(lanPageRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(lanPageRes.status).toBe"}}],["external:expect(lanPageRes.body).toContain",{"id":"external:expect(lanPageRes.body).toContain","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(lanPageRes.body).toContain"}}],["external:expect(sttSettingsRes.status).toBe",{"id":"external:expect(sttSettingsRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(sttSettingsRes.status).toBe"}}],["external:sttSettingsRes.json",{"id":"external:sttSettingsRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"sttSettingsRes.json"}}],["external:expect(initialSttSettings.apiKeyConfigured).toBe",{"id":"external:expect(initialSttSettings.apiKeyConfigured).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(initialSttSettings.apiKeyConfigured).toBe"}}],["external:expect(initialSttSettings.apiKey).toBeUndefined",{"id":"external:expect(initialSttSettings.apiKey).toBeUndefined","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(initialSttSettings.apiKey).toBeUndefined"}}],["external:expect(saveSttRes.status).toBe",{"id":"external:expect(saveSttRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(saveSttRes.status).toBe"}}],["external:saveSttRes.json",{"id":"external:saveSttRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"saveSttRes.json"}}],["external:expect(savedSttSettings.apiKeyConfigured).toBe",{"id":"external:expect(savedSttSettings.apiKeyConfigured).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(savedSttSettings.apiKeyConfigured).toBe"}}],["external:expect(savedSttSettings.apiKey).toBeUndefined",{"id":"external:expect(savedSttSettings.apiKey).toBeUndefined","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(savedSttSettings.apiKey).toBeUndefined"}}],["external:expect(init?.method).toBe",{"id":"external:expect(init?.method).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(init?.method).toBe"}}],["external:expect((init?.headers as Record).Authorization).toBe",{"id":"external:expect((init?.headers as Record).Authorization).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect((init?.headers as Record).Authorization).toBe"}}],["external:expect(body.get('model')).toBe",{"id":"external:expect(body.get('model')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(body.get('model')).toBe"}}],["external:body.get",{"id":"external:body.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"body.get"}}],["external:expect(body.get('language')).toBe",{"id":"external:expect(body.get('language')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(body.get('language')).toBe"}}],["external:expect(body.get('file')).toBeInstanceOf",{"id":"external:expect(body.get('file')).toBeInstanceOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(body.get('file')).toBeInstanceOf"}}],["external:originalFetch.call",{"id":"external:originalFetch.call","kind":"external","language":"jsts","metadata":{"unresolvedName":"originalFetch.call"}}],["external:Buffer.byteLength",{"id":"external:Buffer.byteLength","kind":"external","language":"jsts","metadata":{"unresolvedName":"Buffer.byteLength"}}],["external:expect(transcriptionRes.status).toBe",{"id":"external:expect(transcriptionRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(transcriptionRes.status).toBe"}}],["external:transcriptionRes.json",{"id":"external:transcriptionRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"transcriptionRes.json"}}],["external:expect(transcriptionData).toMatchObject",{"id":"external:expect(transcriptionData).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(transcriptionData).toMatchObject"}}],["external:expect(providerFetch).toHaveBeenCalledWith",{"id":"external:expect(providerFetch).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(providerFetch).toHaveBeenCalledWith"}}],["external:expect(keylessSttRes.status).toBe",{"id":"external:expect(keylessSttRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(keylessSttRes.status).toBe"}}],["external:keylessSttRes.json",{"id":"external:keylessSttRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"keylessSttRes.json"}}],["external:expect(keylessSttSettings.apiKeyConfigured).toBe",{"id":"external:expect(keylessSttSettings.apiKeyConfigured).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(keylessSttSettings.apiKeyConfigured).toBe"}}],["external:expect(keylessSttSettings.apiKeyRequired).toBe",{"id":"external:expect(keylessSttSettings.apiKeyRequired).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(keylessSttSettings.apiKeyRequired).toBe"}}],["external:expect(init?.headers).toEqual",{"id":"external:expect(init?.headers).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(init?.headers).toEqual"}}],["external:expect(keylessTranscriptionRes.status).toBe",{"id":"external:expect(keylessTranscriptionRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(keylessTranscriptionRes.status).toBe"}}],["external:expect(await keylessTranscriptionRes.json()).toMatchObject",{"id":"external:expect(await keylessTranscriptionRes.json()).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(await keylessTranscriptionRes.json()).toMatchObject"}}],["external:keylessTranscriptionRes.json",{"id":"external:keylessTranscriptionRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"keylessTranscriptionRes.json"}}],["external:expect(saveTtsRes.status).toBe",{"id":"external:expect(saveTtsRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(saveTtsRes.status).toBe"}}],["external:saveTtsRes.json",{"id":"external:saveTtsRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"saveTtsRes.json"}}],["external:expect(savedTtsSettings).toMatchObject",{"id":"external:expect(savedTtsSettings).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(savedTtsSettings).toMatchObject"}}],["external:expect(invalidSttRes.status).toBe",{"id":"external:expect(invalidSttRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(invalidSttRes.status).toBe"}}],["external:expect(commandsRes.status).toBe",{"id":"external:expect(commandsRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(commandsRes.status).toBe"}}],["external:commandsRes.json",{"id":"external:commandsRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"commandsRes.json"}}],["external:expect(commandsData.commands).toEqual",{"id":"external:expect(commandsData.commands).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(commandsData.commands).toEqual"}}],["external:expect(commandsData.groups).toMatchObject",{"id":"external:expect(commandsData.groups).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(commandsData.groups).toMatchObject"}}],["external:expect(skillsRes.status).toBe",{"id":"external:expect(skillsRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(skillsRes.status).toBe"}}],["external:skillsRes.json",{"id":"external:skillsRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"skillsRes.json"}}],["external:skillsData.skills.map",{"id":"external:skillsData.skills.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"skillsData.skills.map"}}],["external:expect(skillsData.skills[0].content).toContain",{"id":"external:expect(skillsData.skills[0].content).toContain","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(skillsData.skills[0].content).toContain"}}],["external:expect(skillsData.groups).toMatchObject",{"id":"external:expect(skillsData.groups).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(skillsData.groups).toMatchObject"}}],["external:expect(mcpRes.status).toBe",{"id":"external:expect(mcpRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(mcpRes.status).toBe"}}],["external:mcpRes.json",{"id":"external:mcpRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"mcpRes.json"}}],["external:expect(mcpData.configPaths).toEqual",{"id":"external:expect(mcpData.configPaths).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(mcpData.configPaths).toEqual"}}],["external:expect(mcpData.servers.context7).toMatchObject",{"id":"external:expect(mcpData.servers.context7).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(mcpData.servers.context7).toMatchObject"}}],["external:expect(mcpData.servers.localTool).toMatchObject",{"id":"external:expect(mcpData.servers.localTool).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(mcpData.servers.localTool).toMatchObject"}}],["external:expect(extensionsRes.status).toBe",{"id":"external:expect(extensionsRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(extensionsRes.status).toBe"}}],["external:extensionsRes.json",{"id":"external:extensionsRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"extensionsRes.json"}}],["external:expect(extensionsData.summary).toMatchObject",{"id":"external:expect(extensionsData.summary).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(extensionsData.summary).toMatchObject"}}],["external:expect(extensionsData.packages).toEqual",{"id":"external:expect(extensionsData.packages).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(extensionsData.packages).toEqual"}}],["symbol-name:encodeURIComponent",{"id":"symbol-name:encodeURIComponent","kind":"symbol","language":"jsts","symbolName":"encodeURIComponent","metadata":{"unresolvedName":"encodeURIComponent"}}],["external:expect(vcsStatusRes.status).toBe",{"id":"external:expect(vcsStatusRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(vcsStatusRes.status).toBe"}}],["external:vcsStatusRes.json",{"id":"external:vcsStatusRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"vcsStatusRes.json"}}],["external:expect(vcsStatusData).toMatchObject",{"id":"external:expect(vcsStatusData).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(vcsStatusData).toMatchObject"}}],["external:expect(vcsStatusData.files).toEqual",{"id":"external:expect(vcsStatusData.files).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(vcsStatusData.files).toEqual"}}],["external:expect(vcsBranchesRes.status).toBe",{"id":"external:expect(vcsBranchesRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(vcsBranchesRes.status).toBe"}}],["external:vcsBranchesRes.json",{"id":"external:vcsBranchesRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"vcsBranchesRes.json"}}],["external:expect(vcsBranchesData).toMatchObject",{"id":"external:expect(vcsBranchesData).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(vcsBranchesData).toMatchObject"}}],["external:expect(vcsBranchesData.branches).toEqual",{"id":"external:expect(vcsBranchesData.branches).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(vcsBranchesData.branches).toEqual"}}],["external:expect(stageRes.status).toBe",{"id":"external:expect(stageRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(stageRes.status).toBe"}}],["external:expect(commitRes.status).toBe",{"id":"external:expect(commitRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(commitRes.status).toBe"}}],["external:expect(await commitRes.json()).toMatchObject",{"id":"external:expect(await commitRes.json()).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(await commitRes.json()).toMatchObject"}}],["external:commitRes.json",{"id":"external:commitRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"commitRes.json"}}],["external:expect(contextRes.status).toBe",{"id":"external:expect(contextRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(contextRes.status).toBe"}}],["external:contextRes.json",{"id":"external:contextRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"contextRes.json"}}],["external:expect(contextData).toMatchObject",{"id":"external:expect(contextData).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(contextData).toMatchObject"}}],["external:expect(inactiveContextRes.status).toBe",{"id":"external:expect(inactiveContextRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(inactiveContextRes.status).toBe"}}],["external:inactiveContextRes.json",{"id":"external:inactiveContextRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"inactiveContextRes.json"}}],["external:expect(inactiveContextData).toMatchObject",{"id":"external:expect(inactiveContextData).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(inactiveContextData).toMatchObject"}}],["external:expect(getSessionsRes.status).toBe",{"id":"external:expect(getSessionsRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getSessionsRes.status).toBe"}}],["external:getSessionsRes.json",{"id":"external:getSessionsRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSessionsRes.json"}}],["external:expect(getSessionsData.sessions).toBeDefined",{"id":"external:expect(getSessionsData.sessions).toBeDefined","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getSessionsData.sessions).toBeDefined"}}],["external:expect(getSessionsData.sessions.map((session: any) => session.id)).toEqual",{"id":"external:expect(getSessionsData.sessions.map((session: any) => session.id)).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getSessionsData.sessions.map((session: any) => session.id)).toEqual"}}],["external:getSessionsData.sessions.map",{"id":"external:getSessionsData.sessions.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSessionsData.sessions.map"}}],["external:expect(sessionsById.get(otherSessionId)?.title).toBe",{"id":"external:expect(sessionsById.get(otherSessionId)?.title).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(sessionsById.get(otherSessionId)?.title).toBe"}}],["external:sessionsById.get",{"id":"external:sessionsById.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionsById.get"}}],["external:expect(sessionsById.get(namedSessionId)?.title).toBe",{"id":"external:expect(sessionsById.get(namedSessionId)?.title).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(sessionsById.get(namedSessionId)?.title).toBe"}}],["external:expect(sessionsById.get(noopSessionId)?.title).toBe",{"id":"external:expect(sessionsById.get(noopSessionId)?.title).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(sessionsById.get(noopSessionId)?.title).toBe"}}],["external:expect(createSessionRes.status).toBe",{"id":"external:expect(createSessionRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(createSessionRes.status).toBe"}}],["external:createSessionRes.json",{"id":"external:createSessionRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"createSessionRes.json"}}],["external:expect(createSessionData.id).not.toBe",{"id":"external:expect(createSessionData.id).not.toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(createSessionData.id).not.toBe"}}],["external:expect(createSessionData.title).toBe",{"id":"external:expect(createSessionData.title).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(createSessionData.title).toBe"}}],["external:expect(createSessionData.directory).toBe",{"id":"external:expect(createSessionData.directory).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(createSessionData.directory).toBe"}}],["external:fs\n .readdirSync(tempSessionDir)\n .filter",{"id":"external:fs\n .readdirSync(tempSessionDir)\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"fs\n .readdirSync(tempSessionDir)\n .filter"}}],["external:fs\n .readdirSync",{"id":"external:fs\n .readdirSync","kind":"external","language":"jsts","metadata":{"unresolvedName":"fs\n .readdirSync"}}],["external:file.endsWith",{"id":"external:file.endsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"file.endsWith"}}],["external:expect(createdSessionFiles).toHaveLength",{"id":"external:expect(createdSessionFiles).toHaveLength","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(createdSessionFiles).toHaveLength"}}],["external:expect(createdSessionContent).toContain",{"id":"external:expect(createdSessionContent).toContain","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(createdSessionContent).toContain"}}],["external:projectDir.replace",{"id":"external:projectDir.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"projectDir.replace"}}],["external:expect(switchSession).toHaveBeenCalledWith",{"id":"external:expect(switchSession).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(switchSession).toHaveBeenCalledWith"}}],["external:expect.any",{"id":"external:expect.any","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect.any"}}],["external:switchSession.mockClear",{"id":"external:switchSession.mockClear","kind":"external","language":"jsts","metadata":{"unresolvedName":"switchSession.mockClear"}}],["external:expect(abortRes.status).toBe",{"id":"external:expect(abortRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(abortRes.status).toBe"}}],["external:abortRes.json",{"id":"external:abortRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"abortRes.json"}}],["external:expect(abortData).toEqual",{"id":"external:expect(abortData).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(abortData).toEqual"}}],["external:expect(mockContext.abort).toHaveBeenCalled",{"id":"external:expect(mockContext.abort).toHaveBeenCalled","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(mockContext.abort).toHaveBeenCalled"}}],["external:expect(sendRes.status).toBe",{"id":"external:expect(sendRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(sendRes.status).toBe"}}],["external:expect(mockPi.sendUserMessage).toHaveBeenCalledWith",{"id":"external:expect(mockPi.sendUserMessage).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(mockPi.sendUserMessage).toHaveBeenCalledWith"}}],["external:expect(switchSession).not.toHaveBeenCalled",{"id":"external:expect(switchSession).not.toHaveBeenCalled","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(switchSession).not.toHaveBeenCalled"}}],["external:expect(sendOtherRes.status).toBe",{"id":"external:expect(sendOtherRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(sendOtherRes.status).toBe"}}],["external:expect(replacedSetModel).toHaveBeenCalledWith",{"id":"external:expect(replacedSetModel).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(replacedSetModel).toHaveBeenCalledWith"}}],["external:expect(replacedSendUserMessage).toHaveBeenCalledWith",{"id":"external:expect(replacedSendUserMessage).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(replacedSendUserMessage).toHaveBeenCalledWith"}}],["external:expect(missingSessionRes.status).toBe",{"id":"external:expect(missingSessionRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(missingSessionRes.status).toBe"}}],["external:expect(replacedSendUserMessage).not.toHaveBeenCalledWith",{"id":"external:expect(replacedSendUserMessage).not.toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(replacedSendUserMessage).not.toHaveBeenCalledWith"}}],["external:switchSession.mockImplementationOnce",{"id":"external:switchSession.mockImplementationOnce","kind":"external","language":"jsts","metadata":{"unresolvedName":"switchSession.mockImplementationOnce"}}],["external:expect(sessionPath).toBe",{"id":"external:expect(sessionPath).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(sessionPath).toBe"}}],["external:expect(noopSwitchRes.status).toBe",{"id":"external:expect(noopSwitchRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(noopSwitchRes.status).toBe"}}],["external:expect(cancelledSwitchRes.status).toBe",{"id":"external:expect(cancelledSwitchRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(cancelledSwitchRes.status).toBe"}}],["external:fs.appendFileSync",{"id":"external:fs.appendFileSync","kind":"external","language":"jsts","metadata":{"unresolvedName":"fs.appendFileSync"}}],["external:Date.now",{"id":"external:Date.now","kind":"external","language":"jsts","metadata":{"unresolvedName":"Date.now"}}],["external:expect(messagesRes.status).toBe",{"id":"external:expect(messagesRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(messagesRes.status).toBe"}}],["external:messagesRes.json",{"id":"external:messagesRes.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"messagesRes.json"}}],["external:expect(messagesData.messages).toBeDefined",{"id":"external:expect(messagesData.messages).toBeDefined","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(messagesData.messages).toBeDefined"}}],["external:expect(messagesData.messages.length).toBe",{"id":"external:expect(messagesData.messages.length).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(messagesData.messages.length).toBe"}}],["external:messagesData.messages.every",{"id":"external:messagesData.messages.every","kind":"external","language":"jsts","metadata":{"unresolvedName":"messagesData.messages.every"}}],["external:assistantMsg.parts.filter((p: any) => p.type === 'tool').map",{"id":"external:assistantMsg.parts.filter((p: any) => p.type === 'tool').map","kind":"external","language":"jsts","metadata":{"unresolvedName":"assistantMsg.parts.filter((p: any) => p.type === 'tool').map"}}],["external:assistantMsg.parts.filter",{"id":"external:assistantMsg.parts.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"assistantMsg.parts.filter"}}],["external:toolsById.get",{"id":"external:toolsById.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"toolsById.get"}}],["external:expect(toolPart).toBeDefined",{"id":"external:expect(toolPart).toBeDefined","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(toolPart).toBeDefined"}}],["external:expect(toolPart.id).toBe",{"id":"external:expect(toolPart.id).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(toolPart.id).toBe"}}],["external:expect(toolPart.callID).toBe",{"id":"external:expect(toolPart.callID).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(toolPart.callID).toBe"}}],["external:expect(toolPart.state.status).toBe",{"id":"external:expect(toolPart.state.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(toolPart.state.status).toBe"}}],["external:expect(toolPart.state.output).toBe",{"id":"external:expect(toolPart.state.output).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(toolPart.state.output).toBe"}}],["external:expect(chainedToolPart.state.status).toBe",{"id":"external:expect(chainedToolPart.state.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(chainedToolPart.state.status).toBe"}}],["external:expect(chainedToolPart.state.output).toBe",{"id":"external:expect(chainedToolPart.state.output).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(chainedToolPart.state.output).toBe"}}],["external:expect(failedChainedToolPart.state.status).toBe",{"id":"external:expect(failedChainedToolPart.state.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(failedChainedToolPart.state.status).toBe"}}],["external:expect(failedChainedToolPart.state.output).toBe",{"id":"external:expect(failedChainedToolPart.state.output).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(failedChainedToolPart.state.output).toBe"}}],["external:expect(failedChainedToolPart.state.error).toBe",{"id":"external:expect(failedChainedToolPart.state.error).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(failedChainedToolPart.state.error).toBe"}}],["external:expect(eventsRes.status).toBe",{"id":"external:expect(eventsRes.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(eventsRes.status).toBe"}}],["external:eventsRes.body?.getReader",{"id":"external:eventsRes.body?.getReader","kind":"external","language":"jsts","metadata":{"unresolvedName":"eventsRes.body?.getReader"}}],["external:expect(reader).toBeDefined",{"id":"external:expect(reader).toBeDefined","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(reader).toBeDefined"}}],["external:reader?.read",{"id":"external:reader?.read","kind":"external","language":"jsts","metadata":{"unresolvedName":"reader?.read"}}],["external:new TextDecoder().decode",{"id":"external:new TextDecoder().decode","kind":"external","language":"jsts","metadata":{"unresolvedName":"new TextDecoder().decode"}}],["external:expect(text1).toContain",{"id":"external:expect(text1).toContain","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(text1).toContain"}}],["external:expect(text2).toContain",{"id":"external:expect(text2).toContain","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(text2).toContain"}}],["symbol-name:listeners['agent_start']",{"id":"symbol-name:listeners['agent_start']","kind":"symbol","language":"jsts","symbolName":"listeners['agent_start']","metadata":{"unresolvedName":"listeners['agent_start']"}}],["external:expect(text3).toContain",{"id":"external:expect(text3).toContain","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(text3).toContain"}}],["external:reader?.cancel",{"id":"external:reader?.cancel","kind":"external","language":"jsts","metadata":{"unresolvedName":"reader?.cancel"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:on",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:on","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","symbolName":"on","symbolKind":"function","exported":false,"metadata":{"line":38,"column":11,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","metadata":{"lineCount":2346,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:@mariozechner/pi-coding-agent",{"id":"external:@mariozechner/pi-coding-agent","kind":"external","language":"jsts","metadata":{"source":"@mariozechner/pi-coding-agent"}}],["external:ws",{"id":"external:ws","kind":"external","language":"jsts","metadata":{"source":"ws"}}],["external:node:crypto",{"id":"external:node:crypto","kind":"external","language":"jsts","metadata":{"source":"node:crypto"}}],["module:./piagentui-settings-store.js",{"id":"module:./piagentui-settings-store.js","kind":"module","language":"jsts","metadata":{"source":"./piagentui-settings-store.js"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"getMessageId","symbolKind":"function","exported":false,"metadata":{"line":65,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:Math.random().toString(36).substring",{"id":"external:Math.random().toString(36).substring","kind":"external","language":"jsts","metadata":{"unresolvedName":"Math.random().toString(36).substring"}}],["external:Math.random().toString",{"id":"external:Math.random().toString","kind":"external","language":"jsts","metadata":{"unresolvedName":"Math.random().toString"}}],["external:Math.random",{"id":"external:Math.random","kind":"external","language":"jsts","metadata":{"unresolvedName":"Math.random"}}],["external:messageIds.get",{"id":"external:messageIds.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageIds.get"}}],["external:messageIds.set",{"id":"external:messageIds.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageIds.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:isVisibleChatRole",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:isVisibleChatRole","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"isVisibleChatRole","symbolKind":"function","exported":false,"metadata":{"line":86,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageText",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageText","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"getMessageText","symbolKind":"function","exported":false,"metadata":{"line":90,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:message.content\n .filter((c: any) => c && c.type === 'text')\n .map",{"id":"external:message.content\n .filter((c: any) => c && c.type === 'text')\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"message.content\n .filter((c: any) => c && c.type === 'text')\n .map"}}],["external:message.content\n .filter",{"id":"external:message.content\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"message.content\n .filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeCommandApiSource",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeCommandApiSource","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"normalizeCommandApiSource","symbolKind":"function","exported":false,"metadata":{"line":208,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:categoryForCommandSource",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:categoryForCommandSource","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"categoryForCommandSource","symbolKind":"function","exported":false,"metadata":{"line":214,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getAvailableCommands",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getAvailableCommands","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"getAvailableCommands","symbolKind":"function","exported":false,"metadata":{"line":219,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:pi.getCommands",{"id":"external:pi.getCommands","kind":"external","language":"jsts","metadata":{"unresolvedName":"pi.getCommands"}}],["external:commands.set",{"id":"external:commands.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"commands.set"}}],["external:commands.has",{"id":"external:commands.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"commands.has"}}],["symbol-name:normalizeCommandApiSource",{"id":"symbol-name:normalizeCommandApiSource","kind":"symbol","language":"jsts","symbolName":"normalizeCommandApiSource","metadata":{"unresolvedName":"normalizeCommandApiSource"}}],["symbol-name:categoryForCommandSource",{"id":"symbol-name:categoryForCommandSource","kind":"symbol","language":"jsts","symbolName":"categoryForCommandSource","metadata":{"unresolvedName":"categoryForCommandSource"}}],["external:[...commands.values()].sort",{"id":"external:[...commands.values()].sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"[...commands.values()].sort"}}],["external:commands.values",{"id":"external:commands.values","kind":"external","language":"jsts","metadata":{"unresolvedName":"commands.values"}}],["external:a.name.localeCompare",{"id":"external:a.name.localeCompare","kind":"external","language":"jsts","metadata":{"unresolvedName":"a.name.localeCompare"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:countCommandsBySource",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:countCommandsBySource","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"countCommandsBySource","symbolKind":"function","exported":false,"metadata":{"line":242,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:commands.reduce",{"id":"external:commands.reduce","kind":"external","language":"jsts","metadata":{"unresolvedName":"commands.reduce"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":2328,"column":31,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:decodeXml",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:decodeXml","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"decodeXml","symbolKind":"function","exported":false,"metadata":{"line":252,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:text\n .replace(/'/g, \"'\")\n .replace(/"/g, '\"')\n .replace",{"id":"external:text\n .replace(/'/g, \"'\")\n .replace(/"/g, '\"')\n .replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"text\n .replace(/'/g, \"'\")\n .replace(/"/g, '\"')\n .replace"}}],["external:text\n .replace(/'/g, \"'\")\n .replace",{"id":"external:text\n .replace(/'/g, \"'\")\n .replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"text\n .replace(/'/g, \"'\")\n .replace"}}],["external:text\n .replace",{"id":"external:text\n .replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"text\n .replace"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeComparablePath",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeComparablePath","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"normalizeComparablePath","symbolKind":"function","exported":false,"metadata":{"line":261,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:path\n .resolve(value || '')\n .replace(/\\\\/g, '/')\n .toLowerCase",{"id":"external:path\n .resolve(value || '')\n .replace(/\\\\/g, '/')\n .toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"path\n .resolve(value || '')\n .replace(/\\\\/g, '/')\n .toLowerCase"}}],["external:path\n .resolve(value || '')\n .replace",{"id":"external:path\n .resolve(value || '')\n .replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"path\n .resolve(value || '')\n .replace"}}],["external:path\n .resolve",{"id":"external:path\n .resolve","kind":"external","language":"jsts","metadata":{"unresolvedName":"path\n .resolve"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:classifySkillSource",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:classifySkillSource","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"classifySkillSource","symbolKind":"function","exported":false,"metadata":{"line":268,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:normalizeComparablePath",{"id":"symbol-name:normalizeComparablePath","kind":"symbol","language":"jsts","symbolName":"normalizeComparablePath","metadata":{"unresolvedName":"normalizeComparablePath"}}],["external:normalizedLocation.includes",{"id":"external:normalizedLocation.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalizedLocation.includes"}}],["external:normalizedLocation.startsWith",{"id":"external:normalizedLocation.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalizedLocation.startsWith"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:parseSkillsFromSystemPrompt",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:parseSkillsFromSystemPrompt","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"parseSkillsFromSystemPrompt","symbolKind":"function","exported":false,"metadata":{"line":280,"column":1,"cyclomaticComplexity":8,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:prompt.matchAll",{"id":"external:prompt.matchAll","kind":"external","language":"jsts","metadata":{"unresolvedName":"prompt.matchAll"}}],["symbol-name:decodeXml",{"id":"symbol-name:decodeXml","kind":"symbol","language":"jsts","symbolName":"decodeXml","metadata":{"unresolvedName":"decodeXml"}}],["external:match[3]?.trim",{"id":"external:match[3]?.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"match[3]?.trim"}}],["external:skills.push",{"id":"external:skills.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"skills.push"}}],["external:match[1]?.trim",{"id":"external:match[1]?.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"match[1]?.trim"}}],["external:match[2]?.trim",{"id":"external:match[2]?.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"match[2]?.trim"}}],["symbol-name:classifySkillSource",{"id":"symbol-name:classifySkillSource","kind":"symbol","language":"jsts","symbolName":"classifySkillSource","metadata":{"unresolvedName":"classifySkillSource"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:countSkillsBySource",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:countSkillsBySource","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"countSkillsBySource","symbolKind":"function","exported":false,"metadata":{"line":308,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:skills.reduce",{"id":"external:skills.reduce","kind":"external","language":"jsts","metadata":{"unresolvedName":"skills.reduce"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getHomeDir",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getHomeDir","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"getHomeDir","symbolKind":"function","exported":false,"metadata":{"line":318,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readJsonFile",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readJsonFile","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"readJsonFile","symbolKind":"function","exported":false,"metadata":{"line":322,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMcpConfigCandidates",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMcpConfigCandidates","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"getMcpConfigCandidates","symbolKind":"function","exported":false,"metadata":{"line":331,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:Boolean",{"id":"symbol-name:Boolean","kind":"symbol","language":"jsts","symbolName":"Boolean","metadata":{"unresolvedName":"Boolean"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeMcpTransport",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeMcpTransport","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"normalizeMcpTransport","symbolKind":"function","exported":false,"metadata":{"line":340,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeMcpServer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeMcpServer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"normalizeMcpServer","symbolKind":"function","exported":false,"metadata":{"line":347,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:config.args.map",{"id":"external:config.args.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"config.args.map"}}],["symbol-name:normalizeMcpTransport",{"id":"symbol-name:normalizeMcpTransport","kind":"symbol","language":"jsts","symbolName":"normalizeMcpTransport","metadata":{"unresolvedName":"normalizeMcpTransport"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:loadMcpStatus",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:loadMcpStatus","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"loadMcpStatus","symbolKind":"function","exported":false,"metadata":{"line":367,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getMcpConfigCandidates",{"id":"symbol-name:getMcpConfigCandidates","kind":"symbol","language":"jsts","symbolName":"getMcpConfigCandidates","metadata":{"unresolvedName":"getMcpConfigCandidates"}}],["external:configPaths.push",{"id":"external:configPaths.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"configPaths.push"}}],["symbol-name:normalizeMcpServer",{"id":"symbol-name:normalizeMcpServer","kind":"symbol","language":"jsts","symbolName":"normalizeMcpServer","metadata":{"unresolvedName":"normalizeMcpServer"}}],["external:Promise.resolve",{"id":"external:Promise.resolve","kind":"external","language":"jsts","metadata":{"unresolvedName":"Promise.resolve"}}],["external:sendQueue.catch(() => undefined).then",{"id":"external:sendQueue.catch(() => undefined).then","kind":"external","language":"jsts","metadata":{"unresolvedName":"sendQueue.catch(() => undefined).then"}}],["external:sendQueue.catch",{"id":"external:sendQueue.catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"sendQueue.catch"}}],["external:run.then",{"id":"external:run.then","kind":"external","language":"jsts","metadata":{"unresolvedName":"run.then"}}],["external:latestCtx?.sessionManager?.getSessionId",{"id":"external:latestCtx?.sessionManager?.getSessionId","kind":"external","language":"jsts","metadata":{"unresolvedName":"latestCtx?.sessionManager?.getSessionId"}}],["external:latestCtx?.sessionManager?.getSessionDir",{"id":"external:latestCtx?.sessionManager?.getSessionDir","kind":"external","language":"jsts","metadata":{"unresolvedName":"latestCtx?.sessionManager?.getSessionDir"}}],["external:fs.readdirSync(sessionDir).filter",{"id":"external:fs.readdirSync(sessionDir).filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"fs.readdirSync(sessionDir).filter"}}],["external:f.endsWith",{"id":"external:f.endsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"f.endsWith"}}],["external:files.find",{"id":"external:files.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"files.find"}}],["external:sessionId.slice",{"id":"external:sessionId.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionId.slice"}}],["symbol-name:randomUUID",{"id":"symbol-name:randomUUID","kind":"symbol","language":"jsts","symbolName":"randomUUID","metadata":{"unresolvedName":"randomUUID"}}],["external:randomUUID().slice",{"id":"external:randomUUID().slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"randomUUID().slice"}}],["symbol-name:createSessionId",{"id":"symbol-name:createSessionId","kind":"symbol","language":"jsts","symbolName":"createSessionId","metadata":{"unresolvedName":"createSessionId"}}],["external:timestamp.replace",{"id":"external:timestamp.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"timestamp.replace"}}],["external:process.cwd",{"id":"external:process.cwd","kind":"external","language":"jsts","metadata":{"unresolvedName":"process.cwd"}}],["symbol-name:normalizeSessionTitle",{"id":"symbol-name:normalizeSessionTitle","kind":"symbol","language":"jsts","symbolName":"normalizeSessionTitle","metadata":{"unresolvedName":"normalizeSessionTitle"}}],["external:entries.push",{"id":"external:entries.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"entries.push"}}],["symbol-name:createSessionEntryId",{"id":"symbol-name:createSessionEntryId","kind":"symbol","language":"jsts","symbolName":"createSessionEntryId","metadata":{"unresolvedName":"createSessionEntryId"}}],["external:entries.join",{"id":"external:entries.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"entries.join"}}],["symbol-name:createRealSessionFile",{"id":"symbol-name:createRealSessionFile","kind":"symbol","language":"jsts","symbolName":"createRealSessionFile","metadata":{"unresolvedName":"createRealSessionFile"}}],["external:latestCtx.switchSession",{"id":"external:latestCtx.switchSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"latestCtx.switchSession"}}],["symbol-name:readSessionMetadata",{"id":"symbol-name:readSessionMetadata","kind":"symbol","language":"jsts","symbolName":"readSessionMetadata","metadata":{"unresolvedName":"readSessionMetadata"}}],["symbol-name:getSessionInfo",{"id":"symbol-name:getSessionInfo","kind":"symbol","language":"jsts","symbolName":"getSessionInfo","metadata":{"unresolvedName":"getSessionInfo"}}],["external:path\n .basename(sessionFile)\n .replace",{"id":"external:path\n .basename(sessionFile)\n .replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"path\n .basename(sessionFile)\n .replace"}}],["external:path\n .basename",{"id":"external:path\n .basename","kind":"external","language":"jsts","metadata":{"unresolvedName":"path\n .basename"}}],["external:title\n .split('')\n .map",{"id":"external:title\n .split('')\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"title\n .split('')\n .map"}}],["external:title\n .split",{"id":"external:title\n .split","kind":"external","language":"jsts","metadata":{"unresolvedName":"title\n .split"}}],["external:char.charCodeAt",{"id":"external:char.charCodeAt","kind":"external","language":"jsts","metadata":{"unresolvedName":"char.charCodeAt"}}],["external:content.trim().split('\\n').filter",{"id":"external:content.trim().split('\\n').filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"content.trim().split('\\n').filter"}}],["external:content.trim().split",{"id":"external:content.trim().split","kind":"external","language":"jsts","metadata":{"unresolvedName":"content.trim().split"}}],["external:content.trim",{"id":"external:content.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"content.trim"}}],["external:lines.slice",{"id":"external:lines.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"lines.slice"}}],["symbol-name:getMessageText",{"id":"symbol-name:getMessageText","kind":"symbol","language":"jsts","symbolName":"getMessageText","metadata":{"unresolvedName":"getMessageText"}}],["external:new Date(header.timestamp).getTime",{"id":"external:new Date(header.timestamp).getTime","kind":"external","language":"jsts","metadata":{"unresolvedName":"new Date(header.timestamp).getTime"}}],["symbol-name:getFallbackSessionTitle",{"id":"symbol-name:getFallbackSessionTitle","kind":"symbol","language":"jsts","symbolName":"getFallbackSessionTitle","metadata":{"unresolvedName":"getFallbackSessionTitle"}}],["external:Number.isNaN",{"id":"external:Number.isNaN","kind":"external","language":"jsts","metadata":{"unresolvedName":"Number.isNaN"}}],["external:ctx.modelRegistry?.find",{"id":"external:ctx.modelRegistry?.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"ctx.modelRegistry?.find"}}],["external:console.log",{"id":"external:console.log","kind":"external","language":"jsts","metadata":{"unresolvedName":"console.log"}}],["external:ctx.setModel",{"id":"external:ctx.setModel","kind":"external","language":"jsts","metadata":{"unresolvedName":"ctx.setModel"}}],["external:pi.setModel",{"id":"external:pi.setModel","kind":"external","language":"jsts","metadata":{"unresolvedName":"pi.setModel"}}],["external:console.error",{"id":"external:console.error","kind":"external","language":"jsts","metadata":{"unresolvedName":"console.error"}}],["symbol-name:getCurrentSessionId",{"id":"symbol-name:getCurrentSessionId","kind":"symbol","language":"jsts","symbolName":"getCurrentSessionId","metadata":{"unresolvedName":"getCurrentSessionId"}}],["symbol-name:setRequestedModel",{"id":"symbol-name:setRequestedModel","kind":"symbol","language":"jsts","symbolName":"setRequestedModel","metadata":{"unresolvedName":"setRequestedModel"}}],["external:pi.sendUserMessage",{"id":"external:pi.sendUserMessage","kind":"external","language":"jsts","metadata":{"unresolvedName":"pi.sendUserMessage"}}],["external:p.catch",{"id":"external:p.catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"p.catch"}}],["symbol-name:getSessionFileForId",{"id":"symbol-name:getSessionFileForId","kind":"symbol","language":"jsts","symbolName":"getSessionFileForId","metadata":{"unresolvedName":"getSessionFileForId"}}],["external:replacedCtx.sendUserMessage",{"id":"external:replacedCtx.sendUserMessage","kind":"external","language":"jsts","metadata":{"unresolvedName":"replacedCtx.sendUserMessage"}}],["external:latestCtx.isIdle",{"id":"external:latestCtx.isIdle","kind":"external","language":"jsts","metadata":{"unresolvedName":"latestCtx.isIdle"}}],["symbol-name:broadcastSSE",{"id":"symbol-name:broadcastSSE","kind":"symbol","language":"jsts","symbolName":"broadcastSSE","metadata":{"unresolvedName":"broadcastSSE"}}],["external:res.write",{"id":"external:res.write","kind":"external","language":"jsts","metadata":{"unresolvedName":"res.write"}}],["external:Array.from({ length: 4 }, () => Math.random().toString(36).substring(2)).join",{"id":"external:Array.from({ length: 4 }, () => Math.random().toString(36).substring(2)).join","kind":"external","language":"jsts","metadata":{"unresolvedName":"Array.from({ length: 4 }, () => Math.random().toString(36).substring(2)).join"}}],["symbol-name:createPiAgentUiSettingsStore",{"id":"symbol-name:createPiAgentUiSettingsStore","kind":"symbol","language":"jsts","symbolName":"createPiAgentUiSettingsStore","metadata":{"unresolvedName":"createPiAgentUiSettingsStore"}}],["symbol-name:resolvePiAgentUiSettingsPaths",{"id":"symbol-name:resolvePiAgentUiSettingsPaths","kind":"symbol","language":"jsts","symbolName":"resolvePiAgentUiSettingsPaths","metadata":{"unresolvedName":"resolvePiAgentUiSettingsPaths"}}],["external:settingsStore.getSettings",{"id":"external:settingsStore.getSettings","kind":"external","language":"jsts","metadata":{"unresolvedName":"settingsStore.getSettings"}}],["external:settingsStore.saveSettings",{"id":"external:settingsStore.saveSettings","kind":"external","language":"jsts","metadata":{"unresolvedName":"settingsStore.saveSettings"}}],["symbol-name:getLocalSettings",{"id":"symbol-name:getLocalSettings","kind":"symbol","language":"jsts","symbolName":"getLocalSettings","metadata":{"unresolvedName":"getLocalSettings"}}],["symbol-name:buildBrowserUrl",{"id":"symbol-name:buildBrowserUrl","kind":"symbol","language":"jsts","symbolName":"buildBrowserUrl","metadata":{"unresolvedName":"buildBrowserUrl"}}],["symbol-name:getEffectiveSttSettings",{"id":"symbol-name:getEffectiveSttSettings","kind":"symbol","language":"jsts","symbolName":"getEffectiveSttSettings","metadata":{"unresolvedName":"getEffectiveSttSettings"}}],["external:body.trim",{"id":"external:body.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"body.trim"}}],["external:update.baseUrl.replace",{"id":"external:update.baseUrl.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"update.baseUrl.replace"}}],["external:update.transcriptionEndpoint.startsWith",{"id":"external:update.transcriptionEndpoint.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"update.transcriptionEndpoint.startsWith"}}],["external:update.transcriptionModel.trim",{"id":"external:update.transcriptionModel.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"update.transcriptionModel.trim"}}],["external:update.language.trim",{"id":"external:update.language.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"update.language.trim"}}],["external:Object.prototype.hasOwnProperty.call",{"id":"external:Object.prototype.hasOwnProperty.call","kind":"external","language":"jsts","metadata":{"unresolvedName":"Object.prototype.hasOwnProperty.call"}}],["external:update.apiKey.trim",{"id":"external:update.apiKey.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"update.apiKey.trim"}}],["symbol-name:saveLocalSettings",{"id":"symbol-name:saveLocalSettings","kind":"symbol","language":"jsts","symbolName":"saveLocalSettings","metadata":{"unresolvedName":"saveLocalSettings"}}],["symbol-name:sanitizeSttSettings",{"id":"symbol-name:sanitizeSttSettings","kind":"symbol","language":"jsts","symbolName":"sanitizeSttSettings","metadata":{"unresolvedName":"sanitizeSttSettings"}}],["symbol-name:getEffectiveTtsSettings",{"id":"symbol-name:getEffectiveTtsSettings","kind":"symbol","language":"jsts","symbolName":"getEffectiveTtsSettings","metadata":{"unresolvedName":"getEffectiveTtsSettings"}}],["symbol-name:isTtsResponseFormat",{"id":"symbol-name:isTtsResponseFormat","kind":"symbol","language":"jsts","symbolName":"isTtsResponseFormat","metadata":{"unresolvedName":"isTtsResponseFormat"}}],["external:update.speechEndpoint.startsWith",{"id":"external:update.speechEndpoint.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"update.speechEndpoint.startsWith"}}],["external:update.model.trim",{"id":"external:update.model.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"update.model.trim"}}],["external:update.voice.trim",{"id":"external:update.voice.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"update.voice.trim"}}],["symbol-name:sanitizeTtsSettings",{"id":"symbol-name:sanitizeTtsSettings","kind":"symbol","language":"jsts","symbolName":"sanitizeTtsSettings","metadata":{"unresolvedName":"sanitizeTtsSettings"}}],["external:chunks.push",{"id":"external:chunks.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"chunks.push"}}],["external:Buffer.isBuffer",{"id":"external:Buffer.isBuffer","kind":"external","language":"jsts","metadata":{"unresolvedName":"Buffer.isBuffer"}}],["external:Buffer.from",{"id":"external:Buffer.from","kind":"external","language":"jsts","metadata":{"unresolvedName":"Buffer.from"}}],["external:Buffer.concat",{"id":"external:Buffer.concat","kind":"external","language":"jsts","metadata":{"unresolvedName":"Buffer.concat"}}],["external:contentType?.match",{"id":"external:contentType?.match","kind":"external","language":"jsts","metadata":{"unresolvedName":"contentType?.match"}}],["external:body.toString",{"id":"external:body.toString","kind":"external","language":"jsts","metadata":{"unresolvedName":"body.toString"}}],["external:rawBody.split",{"id":"external:rawBody.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"rawBody.split"}}],["external:rawPart.replace",{"id":"external:rawPart.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"rawPart.replace"}}],["external:part.indexOf",{"id":"external:part.indexOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"part.indexOf"}}],["external:part.slice",{"id":"external:part.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"part.slice"}}],["external:part\n .slice(headerEnd + 4)\n .replace",{"id":"external:part\n .slice(headerEnd + 4)\n .replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"part\n .slice(headerEnd + 4)\n .replace"}}],["external:part\n .slice",{"id":"external:part\n .slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"part\n .slice"}}],["external:rawHeaders.match",{"id":"external:rawHeaders.match","kind":"external","language":"jsts","metadata":{"unresolvedName":"rawHeaders.match"}}],["external:disposition.match",{"id":"external:disposition.match","kind":"external","language":"jsts","metadata":{"unresolvedName":"disposition.match"}}],["external:rawHeaders.match(/content-type:\\s*([^\\r\\n]+)/i)?.[1]?.trim",{"id":"external:rawHeaders.match(/content-type:\\s*([^\\r\\n]+)/i)?.[1]?.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"rawHeaders.match(/content-type:\\s*([^\\r\\n]+)/i)?.[1]?.trim"}}],["external:form.set",{"id":"external:form.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"form.set"}}],["symbol-name:readRequestBuffer",{"id":"symbol-name:readRequestBuffer","kind":"symbol","language":"jsts","symbolName":"readRequestBuffer","metadata":{"unresolvedName":"readRequestBuffer"}}],["symbol-name:readMultipartFormData",{"id":"symbol-name:readMultipartFormData","kind":"symbol","language":"jsts","symbolName":"readMultipartFormData","metadata":{"unresolvedName":"readMultipartFormData"}}],["external:inputForm.get",{"id":"external:inputForm.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"inputForm.get"}}],["external:providerForm.set",{"id":"external:providerForm.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"providerForm.set"}}],["external:(settings.baseUrl || 'https://api.openai.com/v1').replace",{"id":"external:(settings.baseUrl || 'https://api.openai.com/v1').replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"(settings.baseUrl || 'https://api.openai.com/v1').replace"}}],["external:providerRes.text",{"id":"external:providerRes.text","kind":"external","language":"jsts","metadata":{"unresolvedName":"providerRes.text"}}],["symbol-name:readJsonBody",{"id":"symbol-name:readJsonBody","kind":"symbol","language":"jsts","symbolName":"readJsonBody","metadata":{"unresolvedName":"readJsonBody"}}],["external:requestBody.input.trim",{"id":"external:requestBody.input.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"requestBody.input.trim"}}],["external:providerRes.arrayBuffer",{"id":"external:providerRes.arrayBuffer","kind":"external","language":"jsts","metadata":{"unresolvedName":"providerRes.arrayBuffer"}}],["external:providerRes.headers.get",{"id":"external:providerRes.headers.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"providerRes.headers.get"}}],["external:res.writeHead",{"id":"external:res.writeHead","kind":"external","language":"jsts","metadata":{"unresolvedName":"res.writeHead"}}],["external:res.end",{"id":"external:res.end","kind":"external","language":"jsts","metadata":{"unresolvedName":"res.end"}}],["external:fs.statSync(filePath).isDirectory",{"id":"external:fs.statSync(filePath).isDirectory","kind":"external","language":"jsts","metadata":{"unresolvedName":"fs.statSync(filePath).isDirectory"}}],["external:path.extname(targetFile).toLowerCase",{"id":"external:path.extname(targetFile).toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.extname(targetFile).toLowerCase"}}],["external:path.extname",{"id":"external:path.extname","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.extname"}}],["symbol-name:serveIndexHtml",{"id":"symbol-name:serveIndexHtml","kind":"symbol","language":"jsts","symbolName":"serveIndexHtml","metadata":{"unresolvedName":"serveIndexHtml"}}],["external:path.extname(filePath).toLowerCase",{"id":"external:path.extname(filePath).toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.extname(filePath).toLowerCase"}}],["external:fs.createReadStream(filePath).pipe",{"id":"external:fs.createReadStream(filePath).pipe","kind":"external","language":"jsts","metadata":{"unresolvedName":"fs.createReadStream(filePath).pipe"}}],["external:fs.createReadStream",{"id":"external:fs.createReadStream","kind":"external","language":"jsts","metadata":{"unresolvedName":"fs.createReadStream"}}],["external:content.includes",{"id":"external:content.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"content.includes"}}],["external:content.replace",{"id":"external:content.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"content.replace"}}],["symbol-name:checkAuth",{"id":"symbol-name:checkAuth","kind":"symbol","language":"jsts","symbolName":"checkAuth","metadata":{"unresolvedName":"checkAuth"}}],["symbol-name:setInterval",{"id":"symbol-name:setInterval","kind":"symbol","language":"jsts","symbolName":"setInterval","metadata":{"unresolvedName":"setInterval"}}],["symbol-name:clearInterval",{"id":"symbol-name:clearInterval","kind":"symbol","language":"jsts","symbolName":"clearInterval","metadata":{"unresolvedName":"clearInterval"}}],["external:sseClients.delete",{"id":"external:sseClients.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"sseClients.delete"}}],["external:sseClients.add",{"id":"external:sseClients.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"sseClients.add"}}],["external:pathname.split('/').filter",{"id":"external:pathname.split('/').filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"pathname.split('/').filter"}}],["external:pathname.split",{"id":"external:pathname.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"pathname.split"}}],["symbol-name:getNetworkAccessInfo",{"id":"symbol-name:getNetworkAccessInfo","kind":"symbol","language":"jsts","symbolName":"getNetworkAccessInfo","metadata":{"unresolvedName":"getNetworkAccessInfo"}}],["symbol-name:updateSttSettings",{"id":"symbol-name:updateSttSettings","kind":"symbol","language":"jsts","symbolName":"updateSttSettings","metadata":{"unresolvedName":"updateSttSettings"}}],["symbol-name:updateTtsSettings",{"id":"symbol-name:updateTtsSettings","kind":"symbol","language":"jsts","symbolName":"updateTtsSettings","metadata":{"unresolvedName":"updateTtsSettings"}}],["external:parsedUrl.searchParams.get",{"id":"external:parsedUrl.searchParams.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"parsedUrl.searchParams.get"}}],["symbol-name:transcribeAudio",{"id":"symbol-name:transcribeAudio","kind":"symbol","language":"jsts","symbolName":"transcribeAudio","metadata":{"unresolvedName":"transcribeAudio"}}],["symbol-name:synthesizeSpeech",{"id":"symbol-name:synthesizeSpeech","kind":"symbol","language":"jsts","symbolName":"synthesizeSpeech","metadata":{"unresolvedName":"synthesizeSpeech"}}],["symbol-name:parseSkillsFromSystemPrompt",{"id":"symbol-name:parseSkillsFromSystemPrompt","kind":"symbol","language":"jsts","symbolName":"parseSkillsFromSystemPrompt","metadata":{"unresolvedName":"parseSkillsFromSystemPrompt"}}],["external:latestCtx?.getSystemPrompt",{"id":"external:latestCtx?.getSystemPrompt","kind":"external","language":"jsts","metadata":{"unresolvedName":"latestCtx?.getSystemPrompt"}}],["symbol-name:countSkillsBySource",{"id":"symbol-name:countSkillsBySource","kind":"symbol","language":"jsts","symbolName":"countSkillsBySource","metadata":{"unresolvedName":"countSkillsBySource"}}],["symbol-name:loadMcpStatus",{"id":"symbol-name:loadMcpStatus","kind":"symbol","language":"jsts","symbolName":"loadMcpStatus","metadata":{"unresolvedName":"loadMcpStatus"}}],["external:latestCtx?.modelRegistry?.getAvailable",{"id":"external:latestCtx?.modelRegistry?.getAvailable","kind":"external","language":"jsts","metadata":{"unresolvedName":"latestCtx?.modelRegistry?.getAvailable"}}],["external:latestCtx?.modelRegistry?.getAll",{"id":"external:latestCtx?.modelRegistry?.getAll","kind":"external","language":"jsts","metadata":{"unresolvedName":"latestCtx?.modelRegistry?.getAll"}}],["external:m.input?.includes",{"id":"external:m.input?.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"m.input?.includes"}}],["external:registryModels.map",{"id":"external:registryModels.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"registryModels.map"}}],["external:registryModels.find",{"id":"external:registryModels.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"registryModels.find"}}],["symbol-name:mapModel",{"id":"symbol-name:mapModel","kind":"symbol","language":"jsts","symbolName":"mapModel","metadata":{"unresolvedName":"mapModel"}}],["external:models.filter",{"id":"external:models.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"models.filter"}}],["external:models.unshift",{"id":"external:models.unshift","kind":"external","language":"jsts","metadata":{"unresolvedName":"models.unshift"}}],["external:latestCtx.abort",{"id":"external:latestCtx.abort","kind":"external","language":"jsts","metadata":{"unresolvedName":"latestCtx.abort"}}],["symbol-name:createAndSwitchToRealSession",{"id":"symbol-name:createAndSwitchToRealSession","kind":"symbol","language":"jsts","symbolName":"createAndSwitchToRealSession","metadata":{"unresolvedName":"createAndSwitchToRealSession"}}],["external:latestCtx.getContextUsage",{"id":"external:latestCtx.getContextUsage","kind":"external","language":"jsts","metadata":{"unresolvedName":"latestCtx.getContextUsage"}}],["external:filesWithTime.sort",{"id":"external:filesWithTime.sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"filesWithTime.sort"}}],["symbol-name:isVisibleChatRole",{"id":"symbol-name:isVisibleChatRole","kind":"symbol","language":"jsts","symbolName":"isVisibleChatRole","metadata":{"unresolvedName":"isVisibleChatRole"}}],["external:messageMap.has",{"id":"external:messageMap.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageMap.has"}}],["external:new Date(entry.timestamp).getTime",{"id":"external:new Date(entry.timestamp).getTime","kind":"external","language":"jsts","metadata":{"unresolvedName":"new Date(entry.timestamp).getTime"}}],["external:messageMap.set",{"id":"external:messageMap.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageMap.set"}}],["external:orderedMessageIds.push",{"id":"external:orderedMessageIds.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"orderedMessageIds.push"}}],["external:messageMap.get",{"id":"external:messageMap.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageMap.get"}}],["external:msgObj.parts.push",{"id":"external:msgObj.parts.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"msgObj.parts.push"}}],["external:toolCallMessageIds.set",{"id":"external:toolCallMessageIds.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"toolCallMessageIds.set"}}],["external:toolCallMessageIds.get",{"id":"external:toolCallMessageIds.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"toolCallMessageIds.get"}}],["external:parentMsg.parts.find",{"id":"external:parentMsg.parts.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"parentMsg.parts.find"}}],["external:entry.message.content\n .filter",{"id":"external:entry.message.content\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"entry.message.content\n .filter"}}],["external:parentMsg.parts.push",{"id":"external:parentMsg.parts.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"parentMsg.parts.push"}}],["external:orderedMessageIds.map",{"id":"external:orderedMessageIds.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"orderedMessageIds.map"}}],["external:msgObj.parts\n .filter",{"id":"external:msgObj.parts\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"msgObj.parts\n .filter"}}],["external:sessions.push",{"id":"external:sessions.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessions.push"}}],["external:sessions.sort",{"id":"external:sessions.sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessions.sort"}}],["symbol-name:enqueueSessionSend",{"id":"symbol-name:enqueueSessionSend","kind":"symbol","language":"jsts","symbolName":"enqueueSessionSend","metadata":{"unresolvedName":"enqueueSessionSend"}}],["symbol-name:sendUserMessageToRequestedSession",{"id":"symbol-name:sendUserMessageToRequestedSession","kind":"symbol","language":"jsts","symbolName":"sendUserMessageToRequestedSession","metadata":{"unresolvedName":"sendUserMessageToRequestedSession"}}],["symbol-name:getAvailableCommands",{"id":"symbol-name:getAvailableCommands","kind":"symbol","language":"jsts","symbolName":"getAvailableCommands","metadata":{"unresolvedName":"getAvailableCommands"}}],["symbol-name:countCommandsBySource",{"id":"symbol-name:countCommandsBySource","kind":"symbol","language":"jsts","symbolName":"countCommandsBySource","metadata":{"unresolvedName":"countCommandsBySource"}}],["symbol-name:action",{"id":"symbol-name:action","kind":"symbol","language":"jsts","symbolName":"action","metadata":{"unresolvedName":"action"}}],["symbol-name:sendGitAction",{"id":"symbol-name:sendGitAction","kind":"symbol","language":"jsts","symbolName":"sendGitAction","metadata":{"unresolvedName":"sendGitAction"}}],["symbol-name:pullGitBranch",{"id":"symbol-name:pullGitBranch","kind":"symbol","language":"jsts","symbolName":"pullGitBranch","metadata":{"unresolvedName":"pullGitBranch"}}],["symbol-name:pushGitBranch",{"id":"symbol-name:pushGitBranch","kind":"symbol","language":"jsts","symbolName":"pushGitBranch","metadata":{"unresolvedName":"pushGitBranch"}}],["external:entries.map",{"id":"external:entries.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"entries.map"}}],["external:path.relative(targetDir, fullEntryPath).replace",{"id":"external:path.relative(targetDir, fullEntryPath).replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.relative(targetDir, fullEntryPath).replace"}}],["external:http.createServer",{"id":"external:http.createServer","kind":"external","language":"jsts","metadata":{"unresolvedName":"http.createServer"}}],["external:probe.once",{"id":"external:probe.once","kind":"external","language":"jsts","metadata":{"unresolvedName":"probe.once"}}],["external:probe.close",{"id":"external:probe.close","kind":"external","language":"jsts","metadata":{"unresolvedName":"probe.close"}}],["external:probe.listen",{"id":"external:probe.listen","kind":"external","language":"jsts","metadata":{"unresolvedName":"probe.listen"}}],["symbol-name:canReserveLoopbackPort",{"id":"symbol-name:canReserveLoopbackPort","kind":"symbol","language":"jsts","symbolName":"canReserveLoopbackPort","metadata":{"unresolvedName":"canReserveLoopbackPort"}}],["symbol-name:tryListen",{"id":"symbol-name:tryListen","kind":"symbol","language":"jsts","symbolName":"tryListen","metadata":{"unresolvedName":"tryListen"}}],["external:srv.removeListener",{"id":"external:srv.removeListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"srv.removeListener"}}],["external:srv.once",{"id":"external:srv.once","kind":"external","language":"jsts","metadata":{"unresolvedName":"srv.once"}}],["external:srv.listen",{"id":"external:srv.listen","kind":"external","language":"jsts","metadata":{"unresolvedName":"srv.listen"}}],["external:ctx.ui.setWidget",{"id":"external:ctx.ui.setWidget","kind":"external","language":"jsts","metadata":{"unresolvedName":"ctx.ui.setWidget"}}],["symbol-name:setWebLinkWidget",{"id":"symbol-name:setWebLinkWidget","kind":"symbol","language":"jsts","symbolName":"setWebLinkWidget","metadata":{"unresolvedName":"setWebLinkWidget"}}],["symbol-name:generateBearerToken",{"id":"symbol-name:generateBearerToken","kind":"symbol","language":"jsts","symbolName":"generateBearerToken","metadata":{"unresolvedName":"generateBearerToken"}}],["external:urlPath.startsWith",{"id":"external:urlPath.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"urlPath.startsWith"}}],["external:handleApiRequest(req, res).catch",{"id":"external:handleApiRequest(req, res).catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"handleApiRequest(req, res).catch"}}],["symbol-name:handleApiRequest",{"id":"symbol-name:handleApiRequest","kind":"symbol","language":"jsts","symbolName":"handleApiRequest","metadata":{"unresolvedName":"handleApiRequest"}}],["symbol-name:handleStaticFile",{"id":"symbol-name:handleStaticFile","kind":"symbol","language":"jsts","symbolName":"handleStaticFile","metadata":{"unresolvedName":"handleStaticFile"}}],["external:server.on",{"id":"external:server.on","kind":"external","language":"jsts","metadata":{"unresolvedName":"server.on"}}],["external:socket.write",{"id":"external:socket.write","kind":"external","language":"jsts","metadata":{"unresolvedName":"socket.write"}}],["external:socket.destroy",{"id":"external:socket.destroy","kind":"external","language":"jsts","metadata":{"unresolvedName":"socket.destroy"}}],["external:wss!.handleUpgrade",{"id":"external:wss!.handleUpgrade","kind":"external","language":"jsts","metadata":{"unresolvedName":"wss!.handleUpgrade"}}],["external:wss!.emit",{"id":"external:wss!.emit","kind":"external","language":"jsts","metadata":{"unresolvedName":"wss!.emit"}}],["external:wss.on",{"id":"external:wss.on","kind":"external","language":"jsts","metadata":{"unresolvedName":"wss.on"}}],["external:clients.add",{"id":"external:clients.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"clients.add"}}],["external:ws.send",{"id":"external:ws.send","kind":"external","language":"jsts","metadata":{"unresolvedName":"ws.send"}}],["external:ws.on",{"id":"external:ws.on","kind":"external","language":"jsts","metadata":{"unresolvedName":"ws.on"}}],["external:clients.delete",{"id":"external:clients.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"clients.delete"}}],["external:listenOnAvailablePort(server, DEFAULT_PORT, '0.0.0.0')\n .then",{"id":"external:listenOnAvailablePort(server, DEFAULT_PORT, '0.0.0.0')\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"listenOnAvailablePort(server, DEFAULT_PORT, '0.0.0.0')\n .then"}}],["symbol-name:listenOnAvailablePort",{"id":"symbol-name:listenOnAvailablePort","kind":"symbol","language":"jsts","symbolName":"listenOnAvailablePort","metadata":{"unresolvedName":"listenOnAvailablePort"}}],["external:latestCtx.ui.setWidget",{"id":"external:latestCtx.ui.setWidget","kind":"external","language":"jsts","metadata":{"unresolvedName":"latestCtx.ui.setWidget"}}],["external:fs.unlinkSync",{"id":"external:fs.unlinkSync","kind":"external","language":"jsts","metadata":{"unresolvedName":"fs.unlinkSync"}}],["external:sseClients.clear",{"id":"external:sseClients.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"sseClients.clear"}}],["external:createdParts.clear",{"id":"external:createdParts.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"createdParts.clear"}}],["external:client.close",{"id":"external:client.close","kind":"external","language":"jsts","metadata":{"unresolvedName":"client.close"}}],["external:clients.clear",{"id":"external:clients.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"clients.clear"}}],["external:wss.close",{"id":"external:wss.close","kind":"external","language":"jsts","metadata":{"unresolvedName":"wss.close"}}],["external:server.close",{"id":"external:server.close","kind":"external","language":"jsts","metadata":{"unresolvedName":"server.close"}}],["external:pi.on",{"id":"external:pi.on","kind":"external","language":"jsts","metadata":{"unresolvedName":"pi.on"}}],["symbol-name:startServer",{"id":"symbol-name:startServer","kind":"symbol","language":"jsts","symbolName":"startServer","metadata":{"unresolvedName":"startServer"}}],["external:ctx.sessionManager?.getSessionId",{"id":"external:ctx.sessionManager?.getSessionId","kind":"external","language":"jsts","metadata":{"unresolvedName":"ctx.sessionManager?.getSessionId"}}],["symbol-name:stopServer",{"id":"symbol-name:stopServer","kind":"symbol","language":"jsts","symbolName":"stopServer","metadata":{"unresolvedName":"stopServer"}}],["symbol-name:broadcastSessionUpdated",{"id":"symbol-name:broadcastSessionUpdated","kind":"symbol","language":"jsts","symbolName":"broadcastSessionUpdated","metadata":{"unresolvedName":"broadcastSessionUpdated"}}],["symbol-name:getMessageId",{"id":"symbol-name:getMessageId","kind":"symbol","language":"jsts","symbolName":"getMessageId","metadata":{"unresolvedName":"getMessageId"}}],["external:createdParts.has",{"id":"external:createdParts.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"createdParts.has"}}],["external:createdParts.add",{"id":"external:createdParts.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"createdParts.add"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:enqueueSessionSend",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:enqueueSessionSend","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"enqueueSessionSend","symbolKind":"function","exported":false,"metadata":{"line":396,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getCurrentSessionId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getCurrentSessionId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"getCurrentSessionId","symbolKind":"function","exported":false,"metadata":{"line":405,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionFileForId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionFileForId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"getSessionFileForId","symbolKind":"function","exported":false,"metadata":{"line":409,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getFallbackSessionTitle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getFallbackSessionTitle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"getFallbackSessionTitle","symbolKind":"function","exported":false,"metadata":{"line":418,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createSessionId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createSessionId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"createSessionId","symbolKind":"function","exported":false,"metadata":{"line":422,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":true,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createSessionEntryId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createSessionEntryId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"createSessionEntryId","symbolKind":"function","exported":false,"metadata":{"line":426,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createRealSessionFile",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createRealSessionFile","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"createRealSessionFile","symbolKind":"function","exported":false,"metadata":{"line":430,"column":3,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createAndSwitchToRealSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createAndSwitchToRealSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"createAndSwitchToRealSession","symbolKind":"function","exported":false,"metadata":{"line":470,"column":3,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:withSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:withSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"withSession","symbolKind":"function","exported":false,"metadata":{"line":622,"column":22,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeSessionTitle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeSessionTitle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"normalizeSessionTitle","symbolKind":"function","exported":false,"metadata":{"line":506,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"readSessionMetadata","symbolKind":"function","exported":false,"metadata":{"line":519,"column":3,"cyclomaticComplexity":18,"maxNestingDepth":6,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setRequestedModel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setRequestedModel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"setRequestedModel","symbolKind":"function","exported":false,"metadata":{"line":567,"column":3,"cyclomaticComplexity":9,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendUserMessageToRequestedSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendUserMessageToRequestedSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"sendUserMessageToRequestedSession","symbolKind":"function","exported":false,"metadata":{"line":588,"column":3,"cyclomaticComplexity":12,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionInfo",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionInfo","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"getSessionInfo","symbolKind":"function","exported":false,"metadata":{"line":646,"column":3,"cyclomaticComplexity":9,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSessionUpdated",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSessionUpdated","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"broadcastSessionUpdated","symbolKind":"function","exported":false,"metadata":{"line":663,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"broadcastSSE","symbolKind":"function","exported":false,"metadata":{"line":672,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:generateBearerToken",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:generateBearerToken","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"generateBearerToken","symbolKind":"function","exported":false,"metadata":{"line":692,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getLocalSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getLocalSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"getLocalSettings","symbolKind":"function","exported":false,"metadata":{"line":698,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":true,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:saveLocalSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:saveLocalSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"saveLocalSettings","symbolKind":"function","exported":false,"metadata":{"line":702,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:buildBrowserUrl",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:buildBrowserUrl","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"buildBrowserUrl","symbolKind":"function","exported":false,"metadata":{"line":706,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getNetworkAccessInfo",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getNetworkAccessInfo","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"getNetworkAccessInfo","symbolKind":"function","exported":false,"metadata":{"line":710,"column":3,"cyclomaticComplexity":5,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getEffectiveSttSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getEffectiveSttSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"getEffectiveSttSettings","symbolKind":"function","exported":false,"metadata":{"line":726,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sanitizeSttSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sanitizeSttSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"sanitizeSttSettings","symbolKind":"function","exported":false,"metadata":{"line":740,"column":3,"cyclomaticComplexity":9,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readJsonBody",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readJsonBody","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"readJsonBody","symbolKind":"function","exported":false,"metadata":{"line":757,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateSttSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateSttSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"updateSttSettings","symbolKind":"function","exported":false,"metadata":{"line":774,"column":3,"cyclomaticComplexity":30,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getEffectiveTtsSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getEffectiveTtsSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"getEffectiveTtsSettings","symbolKind":"function","exported":false,"metadata":{"line":828,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sanitizeTtsSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sanitizeTtsSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"sanitizeTtsSettings","symbolKind":"function","exported":false,"metadata":{"line":843,"column":3,"cyclomaticComplexity":9,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:isTtsResponseFormat",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:isTtsResponseFormat","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"isTtsResponseFormat","symbolKind":"function","exported":false,"metadata":{"line":859,"column":3,"cyclomaticComplexity":6,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateTtsSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateTtsSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"updateTtsSettings","symbolKind":"function","exported":false,"metadata":{"line":865,"column":3,"cyclomaticComplexity":29,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readRequestBuffer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readRequestBuffer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"readRequestBuffer","symbolKind":"function","exported":false,"metadata":{"line":917,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readMultipartFormData",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readMultipartFormData","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"readMultipartFormData","symbolKind":"function","exported":false,"metadata":{"line":926,"column":3,"cyclomaticComplexity":13,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:transcribeAudio",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:transcribeAudio","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"transcribeAudio","symbolKind":"function","exported":false,"metadata":{"line":957,"column":3,"cyclomaticComplexity":19,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:synthesizeSpeech",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:synthesizeSpeech","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"synthesizeSpeech","symbolKind":"function","exported":false,"metadata":{"line":1011,"column":3,"cyclomaticComplexity":16,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"handleStaticFile","symbolKind":"function","exported":false,"metadata":{"line":1075,"column":3,"cyclomaticComplexity":11,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:serveIndexHtml",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:serveIndexHtml","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"serveIndexHtml","symbolKind":"function","exported":false,"metadata":{"line":1117,"column":3,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:checkAuth",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:checkAuth","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"checkAuth","symbolKind":"function","exported":false,"metadata":{"line":1148,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"handleApiRequest","symbolKind":"function","exported":false,"metadata":{"line":1160,"column":3,"cyclomaticComplexity":232,"maxNestingDepth":15,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendGitAction",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendGitAction","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"sendGitAction","symbolKind":"function","exported":false,"metadata":{"line":1864,"column":9,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:listenOnAvailablePort",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:listenOnAvailablePort","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"listenOnAvailablePort","symbolKind":"function","exported":false,"metadata":{"line":1990,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:canReserveLoopbackPort",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:canReserveLoopbackPort","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"canReserveLoopbackPort","symbolKind":"function","exported":false,"metadata":{"line":1991,"column":5,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:tryListen",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:tryListen","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"tryListen","symbolKind":"function","exported":false,"metadata":{"line":2005,"column":7,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:onError",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:onError","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"onError","symbolKind":"function","exported":false,"metadata":{"line":2012,"column":25,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:onListening",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:onListening","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"onListening","symbolKind":"function","exported":false,"metadata":{"line":2022,"column":29,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setWebLinkWidget",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setWebLinkWidget","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"setWebLinkWidget","symbolKind":"function","exported":false,"metadata":{"line":2036,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"startServer","symbolKind":"function","exported":false,"metadata":{"line":2050,"column":3,"cyclomaticComplexity":12,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:stopServer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:stopServer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","symbolName":"stopServer","symbolKind":"function","exported":false,"metadata":{"line":2143,"column":3,"cyclomaticComplexity":13,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts","metadata":{"lineCount":100,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:makeTempHome",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:makeTempHome","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts","symbolName":"makeTempHome","symbolKind":"function","exported":false,"metadata":{"line":9,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:tempDirs.push",{"id":"external:tempDirs.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"tempDirs.push"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":68,"column":64,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:tempDirs.splice",{"id":"external:tempDirs.splice","kind":"external","language":"jsts","metadata":{"unresolvedName":"tempDirs.splice"}}],["symbol-name:makeTempHome",{"id":"symbol-name:makeTempHome","kind":"symbol","language":"jsts","symbolName":"makeTempHome","metadata":{"unresolvedName":"makeTempHome"}}],["external:first.saveSettings",{"id":"external:first.saveSettings","kind":"external","language":"jsts","metadata":{"unresolvedName":"first.saveSettings"}}],["external:first.close",{"id":"external:first.close","kind":"external","language":"jsts","metadata":{"unresolvedName":"first.close"}}],["external:expect(fs.existsSync(paths.databasePath)).toBe",{"id":"external:expect(fs.existsSync(paths.databasePath)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(fs.existsSync(paths.databasePath)).toBe"}}],["external:expect(second.getSettings()).toMatchObject",{"id":"external:expect(second.getSettings()).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(second.getSettings()).toMatchObject"}}],["external:second.getSettings",{"id":"external:second.getSettings","kind":"external","language":"jsts","metadata":{"unresolvedName":"second.getSettings"}}],["external:second.close",{"id":"external:second.close","kind":"external","language":"jsts","metadata":{"unresolvedName":"second.close"}}],["external:expect(store.getSettings()).toMatchObject",{"id":"external:expect(store.getSettings()).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(store.getSettings()).toMatchObject"}}],["external:store.getSettings",{"id":"external:store.getSettings","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.getSettings"}}],["external:expect(store.getMeta('legacy_json_imported_at')).toEqual",{"id":"external:expect(store.getMeta('legacy_json_imported_at')).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(store.getMeta('legacy_json_imported_at')).toEqual"}}],["external:store.getMeta",{"id":"external:store.getMeta","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.getMeta"}}],["external:store.close",{"id":"external:store.close","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.close"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","metadata":{"lineCount":215,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:node:module",{"id":"external:node:module","kind":"external","language":"jsts","metadata":{"source":"node:module"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:resolvePiAgentUiSettingsPaths",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:resolvePiAgentUiSettingsPaths","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","symbolName":"resolvePiAgentUiSettingsPaths","symbolKind":"function","exported":true,"metadata":{"line":63,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:isObject",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:isObject","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","symbolName":"isObject","symbolKind":"function","exported":false,"metadata":{"line":73,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:parseJsonObject",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:parseJsonObject","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","symbolName":"parseJsonObject","symbolKind":"function","exported":false,"metadata":{"line":77,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:isObject",{"id":"symbol-name:isObject","kind":"symbol","language":"jsts","symbolName":"isObject","metadata":{"unresolvedName":"isObject"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:normalizeSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:normalizeSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","symbolName":"normalizeSettings","symbolKind":"function","exported":false,"metadata":{"line":87,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:readLegacyJsonSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:readLegacyJsonSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","symbolName":"readLegacyJsonSettings","symbolKind":"function","exported":false,"metadata":{"line":104,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:normalizeSettings",{"id":"symbol-name:normalizeSettings","kind":"symbol","language":"jsts","symbolName":"normalizeSettings","metadata":{"unresolvedName":"normalizeSettings"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:close",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:close","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","symbolName":"close","symbolKind":"function","exported":false,"metadata":{"line":123,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.db.close",{"id":"external:this.db.close","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.db.close"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:getMeta",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:getMeta","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","symbolName":"getMeta","symbolKind":"function","exported":false,"metadata":{"line":127,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.db.prepare('SELECT value FROM app_meta WHERE key = ?').get",{"id":"external:this.db.prepare('SELECT value FROM app_meta WHERE key = ?').get","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.db.prepare('SELECT value FROM app_meta WHERE key = ?').get"}}],["external:this.db.prepare",{"id":"external:this.db.prepare","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.db.prepare"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:setMeta",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:setMeta","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","symbolName":"setMeta","symbolKind":"function","exported":false,"metadata":{"line":132,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.db\n .prepare",{"id":"external:this.db\n .prepare","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.db\n .prepare"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:getSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:getSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","symbolName":"getSettings","symbolKind":"function","exported":false,"metadata":{"line":142,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.getNamespace",{"id":"external:this.getNamespace","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getNamespace"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:saveSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:saveSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","symbolName":"saveSettings","symbolKind":"function","exported":false,"metadata":{"line":151,"column":3,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.db.exec",{"id":"external:this.db.exec","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.db.exec"}}],["external:this.setNamespace",{"id":"external:this.setNamespace","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.setNamespace"}}],["external:this.setMeta",{"id":"external:this.setMeta","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.setMeta"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:initialize",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:initialize","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","symbolName":"initialize","symbolKind":"function","exported":false,"metadata":{"line":166,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:importLegacyJsonOnce",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:importLegacyJsonOnce","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","symbolName":"importLegacyJsonOnce","symbolKind":"function","exported":false,"metadata":{"line":186,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.getMeta",{"id":"external:this.getMeta","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getMeta"}}],["symbol-name:readLegacyJsonSettings",{"id":"symbol-name:readLegacyJsonSettings","kind":"symbol","language":"jsts","symbolName":"readLegacyJsonSettings","metadata":{"unresolvedName":"readLegacyJsonSettings"}}],["external:this.saveSettings",{"id":"external:this.saveSettings","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.saveSettings"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:getNamespace",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:getNamespace","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","symbolName":"getNamespace","symbolKind":"function","exported":false,"metadata":{"line":194,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:parseJsonObject",{"id":"symbol-name:parseJsonObject","kind":"symbol","language":"jsts","symbolName":"parseJsonObject","metadata":{"unresolvedName":"parseJsonObject"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:setNamespace",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:setNamespace","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","symbolName":"setNamespace","symbolKind":"function","exported":false,"metadata":{"line":201,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:createPiAgentUiSettingsStore",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:createPiAgentUiSettingsStore","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","symbolName":"createPiAgentUiSettingsStore","symbolKind":"function","exported":true,"metadata":{"line":212,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js","metadata":{"lineCount":40,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":22,"column":74,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:event.notification.close",{"id":"external:event.notification.close","kind":"external","language":"jsts","metadata":{"unresolvedName":"event.notification.close"}}],["external:event.waitUntil",{"id":"external:event.waitUntil","kind":"external","language":"jsts","metadata":{"unresolvedName":"event.waitUntil"}}],["external:clients.matchAll({ type: 'window', includeUncontrolled: true }).then",{"id":"external:clients.matchAll({ type: 'window', includeUncontrolled: true }).then","kind":"external","language":"jsts","metadata":{"unresolvedName":"clients.matchAll({ type: 'window', includeUncontrolled: true }).then"}}],["external:clients.matchAll",{"id":"external:clients.matchAll","kind":"external","language":"jsts","metadata":{"unresolvedName":"clients.matchAll"}}],["external:client.url.startsWith",{"id":"external:client.url.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"client.url.startsWith"}}],["external:client.postMessage",{"id":"external:client.postMessage","kind":"external","language":"jsts","metadata":{"unresolvedName":"client.postMessage"}}],["external:client.focus",{"id":"external:client.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"client.focus"}}],["external:clients.openWindow",{"id":"external:clients.openWindow","kind":"external","language":"jsts","metadata":{"unresolvedName":"clients.openWindow"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs","metadata":{"lineCount":205,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:fs",{"id":"external:fs","kind":"external","language":"jsts","metadata":{"source":"fs"}}],["external:child_process",{"id":"external:child_process","kind":"external","language":"jsts","metadata":{"source":"child_process"}}],["external:path",{"id":"external:path","kind":"external","language":"jsts","metadata":{"source":"path"}}],["external:url",{"id":"external:url","kind":"external","language":"jsts","metadata":{"source":"url"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:formatWithPrettier",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:formatWithPrettier","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs","symbolName":"formatWithPrettier","symbolKind":"function","exported":false,"metadata":{"line":55,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:execSync",{"id":"symbol-name:execSync","kind":"symbol","language":"jsts","symbolName":"execSync","metadata":{"unresolvedName":"execSync"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:replaceCargoPackageVersion",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:replaceCargoPackageVersion","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs","symbolName":"replaceCargoPackageVersion","symbolKind":"function","exported":false,"metadata":{"line":62,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:lockContent.split",{"id":"external:lockContent.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"lockContent.split"}}],["external:packageBlocks.map",{"id":"external:packageBlocks.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"packageBlocks.map"}}],["external:block.includes",{"id":"external:block.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"block.includes"}}],["external:block.replace",{"id":"external:block.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"block.replace"}}],["external:updatedBlocks.join",{"id":"external:updatedBlocks.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"updatedBlocks.join"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":64,"column":43,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:getReleaseBaseTag",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:getReleaseBaseTag","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs","symbolName":"getReleaseBaseTag","symbolKind":"function","exported":false,"metadata":{"line":72,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:tag.trim",{"id":"external:tag.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"tag.trim"}}],["external:mergedTags.find",{"id":"external:mergedTags.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"mergedTags.find"}}],["external:stableTagRe.test",{"id":"external:stableTagRe.test","kind":"external","language":"jsts","metadata":{"unresolvedName":"stableTagRe.test"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/copy-material-icons.mjs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/copy-material-icons.mjs","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/copy-material-icons.mjs","metadata":{"lineCount":71,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs","metadata":{"lineCount":95,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs:run",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs:run","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs","symbolName":"run","symbolKind":"function","exported":false,"metadata":{"line":38,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs:read",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs:read","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs","symbolName":"read","symbolKind":"function","exported":false,"metadata":{"line":43,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts","metadata":{"lineCount":30,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","metadata":{"lineCount":116,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","metadata":{"lineCount":68,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts:getAgents",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts:getAgents","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts","symbolName":"getAgents","symbolKind":"function","exported":true,"metadata":{"line":11,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:piClient.get",{"id":"external:piClient.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"piClient.get"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts:getSelectableAgents",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts:getSelectableAgents","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts","symbolName":"getSelectableAgents","symbolKind":"function","exported":true,"metadata":{"line":26,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getAgents",{"id":"symbol-name:getAgents","kind":"symbol","language":"jsts","symbolName":"getAgents","metadata":{"unresolvedName":"getAgents"}}],["external:agents.filter",{"id":"external:agents.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"agents.filter"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts","metadata":{"lineCount":74,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","metadata":{"lineCount":141,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":46,"column":65,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:beforeEach",{"id":"symbol-name:beforeEach","kind":"symbol","language":"jsts","symbolName":"beforeEach","metadata":{"unresolvedName":"beforeEach"}}],["external:vi.mocked(piClient.get).mockReset",{"id":"external:vi.mocked(piClient.get).mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockReset"}}],["external:vi.mocked",{"id":"external:vi.mocked","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked"}}],["external:vi.mocked(piClient.get).mockResolvedValue",{"id":"external:vi.mocked(piClient.get).mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockResolvedValue"}}],["symbol-name:getActiveModels",{"id":"symbol-name:getActiveModels","kind":"symbol","language":"jsts","symbolName":"getActiveModels","metadata":{"unresolvedName":"getActiveModels"}}],["external:expect(models).toHaveLength",{"id":"external:expect(models).toHaveLength","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(models).toHaveLength"}}],["external:expect(models[0]).toMatchObject",{"id":"external:expect(models[0]).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(models[0]).toMatchObject"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","metadata":{"lineCount":300,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getActiveModels",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getActiveModels","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","symbolName":"getActiveModels","symbolKind":"function","exported":true,"metadata":{"line":38,"column":1,"cyclomaticComplexity":20,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:data.models.map",{"id":"external:data.models.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"data.models.map"}}],["external:model.input?.includes",{"id":"external:model.input?.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"model.input?.includes"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getDefaultModels",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getDefaultModels","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","symbolName":"getDefaultModels","symbolKind":"function","exported":true,"metadata":{"line":79,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getCurrentProject",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getCurrentProject","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","symbolName":"getCurrentProject","symbolKind":"function","exported":true,"metadata":{"line":90,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:formatPathForApi",{"id":"symbol-name:formatPathForApi","kind":"symbol","language":"jsts","symbolName":"formatPathForApi","metadata":{"unresolvedName":"formatPathForApi"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getProjects",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getProjects","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","symbolName":"getProjects","symbolKind":"function","exported":true,"metadata":{"line":98,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:initGitProject",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:initGitProject","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","symbolName":"initGitProject","symbolKind":"function","exported":true,"metadata":{"line":108,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:updateProject",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:updateProject","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","symbolName":"updateProject","symbolKind":"function","exported":true,"metadata":{"line":116,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getPath",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getPath","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","symbolName":"getPath","symbolKind":"function","exported":true,"metadata":{"line":135,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts","metadata":{"lineCount":67,"featureKind":"service","trustBoundaries":["network","external-api","serialization","user-input","process-exec"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","metadata":{"lineCount":108,"featureKind":"service","trustBoundaries":["network","external-api","serialization","user-input","process-exec"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":49,"column":100,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","user-input","process-exec"]}}],["symbol-name:getCommands",{"id":"symbol-name:getCommands","kind":"symbol","language":"jsts","symbolName":"getCommands","metadata":{"unresolvedName":"getCommands"}}],["external:expect(commands).toEqual",{"id":"external:expect(commands).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(commands).toEqual"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","metadata":{"lineCount":573,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/i18n.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/i18n.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/i18n.ts","metadata":{"lineCount":42,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getFrontendCommands",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getFrontendCommands","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","symbolName":"getFrontendCommands","symbolKind":"function","exported":false,"metadata":{"line":28,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","user-input","process-exec"]}}],["external:i18n.t",{"id":"external:i18n.t","kind":"external","language":"jsts","metadata":{"unresolvedName":"i18n.t"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommandCacheKey",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommandCacheKey","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","symbolName":"getCommandCacheKey","symbolKind":"function","exported":false,"metadata":{"line":40,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","user-input","process-exec"]}}],["external:serverStore.getActiveServerId",{"id":"external:serverStore.getActiveServerId","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStore.getActiveServerId"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:fetchCommands",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:fetchCommands","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","symbolName":"fetchCommands","symbolKind":"function","exported":false,"metadata":{"line":44,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","user-input","process-exec"]}}],["symbol-name:getFrontendCommands",{"id":"symbol-name:getFrontendCommands","kind":"symbol","language":"jsts","symbolName":"getFrontendCommands","metadata":{"unresolvedName":"getFrontendCommands"}}],["external:frontendCommands.map",{"id":"external:frontendCommands.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"frontendCommands.map"}}],["external:apiCommands\n .map",{"id":"external:apiCommands\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"apiCommands\n .map"}}],["external:frontendNames.has",{"id":"external:frontendNames.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"frontendNames.has"}}],["external:commandsFromApi.map",{"id":"external:commandsFromApi.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"commandsFromApi.map"}}],["external:frontendCommands.filter",{"id":"external:frontendCommands.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"frontendCommands.filter"}}],["external:apiNames.has",{"id":"external:apiNames.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"apiNames.has"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","symbolName":"getCommands","symbolKind":"function","exported":true,"metadata":{"line":65,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","user-input","process-exec"]}}],["symbol-name:getCommandCacheKey",{"id":"symbol-name:getCommandCacheKey","kind":"symbol","language":"jsts","symbolName":"getCommandCacheKey","metadata":{"unresolvedName":"getCommandCacheKey"}}],["external:commandCache.get",{"id":"external:commandCache.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"commandCache.get"}}],["external:commandInflight.get",{"id":"external:commandInflight.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"commandInflight.get"}}],["external:fetchCommands(directory)\n .then",{"id":"external:fetchCommands(directory)\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"fetchCommands(directory)\n .then"}}],["symbol-name:fetchCommands",{"id":"symbol-name:fetchCommands","kind":"symbol","language":"jsts","symbolName":"fetchCommands","metadata":{"unresolvedName":"fetchCommands"}}],["external:commandCache.set",{"id":"external:commandCache.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"commandCache.set"}}],["external:commandInflight.delete",{"id":"external:commandInflight.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"commandInflight.delete"}}],["external:commandInflight.set",{"id":"external:commandInflight.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"commandInflight.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":83,"column":14,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","user-input","process-exec"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:prefetchCommands",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:prefetchCommands","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","symbolName":"prefetchCommands","symbolKind":"function","exported":true,"metadata":{"line":91,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","user-input","process-exec"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:executeCommand",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:executeCommand","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","symbolName":"executeCommand","symbolKind":"function","exported":true,"metadata":{"line":95,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","user-input","process-exec"]}}],["external:piClient.post",{"id":"external:piClient.post","kind":"external","language":"jsts","metadata":{"unresolvedName":"piClient.post"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts","metadata":{"lineCount":59,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/config.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/config.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/config.ts","metadata":{"lineCount":49,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/model.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/model.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/model.ts","metadata":{"lineCount":54,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts:getConfig",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts:getConfig","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts","symbolName":"getConfig","symbolKind":"function","exported":true,"metadata":{"line":11,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts:updateConfig",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts:updateConfig","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts","symbolName":"updateConfig","symbolKind":"function","exported":true,"metadata":{"line":21,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts:getProviderConfigs",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts:getProviderConfigs","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts","symbolName":"getProviderConfigs","symbolKind":"function","exported":true,"metadata":{"line":28,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","metadata":{"lineCount":318,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/event.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/event.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/event.ts","metadata":{"lineCount":174,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:concatBytes",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:concatBytes","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","symbolName":"concatBytes","symbolKind":"function","exported":false,"metadata":{"line":15,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:parts.reduce",{"id":"external:parts.reduce","kind":"external","language":"jsts","metadata":{"unresolvedName":"parts.reduce"}}],["external:result.set",{"id":"external:result.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunks",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunks","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","symbolName":"createEventChunks","symbolKind":"function","exported":false,"metadata":{"line":28,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:raw.split",{"id":"external:raw.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"raw.split"}}],["external:encoder.encode",{"id":"external:encoder.encode","kind":"external","language":"jsts","metadata":{"unresolvedName":"encoder.encode"}}],["symbol-name:concatBytes",{"id":"symbol-name:concatBytes","kind":"symbol","language":"jsts","symbolName":"concatBytes","metadata":{"unresolvedName":"concatBytes"}}],["external:deltaBytes.slice",{"id":"external:deltaBytes.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"deltaBytes.slice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createStream",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createStream","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","symbolName":"createStream","symbolKind":"function","exported":false,"metadata":{"line":52,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:controller.enqueue",{"id":"external:controller.enqueue","kind":"external","language":"jsts","metadata":{"unresolvedName":"controller.enqueue"}}],["external:controller.close",{"id":"external:controller.close","kind":"external","language":"jsts","metadata":{"unresolvedName":"controller.close"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:start",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:start","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","symbolName":"start","symbolKind":"function","exported":false,"metadata":{"line":54,"column":5,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createFetchResponse",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createFetchResponse","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","symbolName":"createFetchResponse","symbolKind":"function","exported":false,"metadata":{"line":63,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:createStream",{"id":"symbol-name:createStream","kind":"symbol","language":"jsts","symbolName":"createStream","metadata":{"unresolvedName":"createStream"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createDeferred",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createDeferred","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","symbolName":"createDeferred","symbolKind":"function","exported":false,"metadata":{"line":70,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":288,"column":89,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunk",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunk","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","symbolName":"createEventChunk","symbolKind":"function","exported":false,"metadata":{"line":80,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:vi.resetModules",{"id":"external:vi.resetModules","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.resetModules"}}],["symbol-name:afterEach",{"id":"symbol-name:afterEach","kind":"symbol","language":"jsts","symbolName":"afterEach","metadata":{"unresolvedName":"afterEach"}}],["external:vi.restoreAllMocks",{"id":"external:vi.restoreAllMocks","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.restoreAllMocks"}}],["external:vi.unstubAllGlobals",{"id":"external:vi.unstubAllGlobals","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.unstubAllGlobals"}}],["external:vi.fn().mockResolvedValue",{"id":"external:vi.fn().mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.fn().mockResolvedValue"}}],["symbol-name:createFetchResponse",{"id":"symbol-name:createFetchResponse","kind":"symbol","language":"jsts","symbolName":"createFetchResponse","metadata":{"unresolvedName":"createFetchResponse"}}],["symbol-name:createEventChunks",{"id":"symbol-name:createEventChunks","kind":"symbol","language":"jsts","symbolName":"createEventChunks","metadata":{"unresolvedName":"createEventChunks"}}],["external:vi.stubGlobal",{"id":"external:vi.stubGlobal","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.stubGlobal"}}],["symbol-name:import",{"id":"symbol-name:import","kind":"symbol","language":"jsts","symbolName":"import","metadata":{"unresolvedName":"import"}}],["symbol-name:subscribeToEvents",{"id":"symbol-name:subscribeToEvents","kind":"symbol","language":"jsts","symbolName":"subscribeToEvents","metadata":{"unresolvedName":"subscribeToEvents"}}],["symbol-name:unsubscribe",{"id":"symbol-name:unsubscribe","kind":"symbol","language":"jsts","symbolName":"unsubscribe","metadata":{"unresolvedName":"unsubscribe"}}],["external:expect(received).toBe",{"id":"external:expect(received).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(received).toBe"}}],["symbol-name:createEventChunk",{"id":"symbol-name:createEventChunk","kind":"symbol","language":"jsts","symbolName":"createEventChunk","metadata":{"unresolvedName":"createEventChunk"}}],["external:expect(received).toMatchObject",{"id":"external:expect(received).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(received).toMatchObject"}}],["symbol-name:createDeferred",{"id":"symbol-name:createDeferred","kind":"symbol","language":"jsts","symbolName":"createDeferred","metadata":{"unresolvedName":"createDeferred"}}],["external:vi\n .fn()\n .mockImplementationOnce",{"id":"external:vi\n .fn()\n .mockImplementationOnce","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi\n .fn()\n .mockImplementationOnce"}}],["external:vi\n .fn",{"id":"external:vi\n .fn","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi\n .fn"}}],["external:received.push",{"id":"external:received.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"received.push"}}],["symbol-name:reconnectSSE",{"id":"symbol-name:reconnectSSE","kind":"symbol","language":"jsts","symbolName":"reconnectSSE","metadata":{"unresolvedName":"reconnectSSE"}}],["external:secondFetch.resolve",{"id":"external:secondFetch.resolve","kind":"external","language":"jsts","metadata":{"unresolvedName":"secondFetch.resolve"}}],["external:vi.waitFor",{"id":"external:vi.waitFor","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.waitFor"}}],["external:expect(received).toEqual",{"id":"external:expect(received).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(received).toEqual"}}],["external:firstFetch.resolve",{"id":"external:firstFetch.resolve","kind":"external","language":"jsts","metadata":{"unresolvedName":"firstFetch.resolve"}}],["external:firstFetch.reject",{"id":"external:firstFetch.reject","kind":"external","language":"jsts","metadata":{"unresolvedName":"firstFetch.reject"}}],["external:expect(onError).not.toHaveBeenCalled",{"id":"external:expect(onError).not.toHaveBeenCalled","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(onError).not.toHaveBeenCalled"}}],["external:expect(getConnectionInfo().state).toBe",{"id":"external:expect(getConnectionInfo().state).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getConnectionInfo().state).toBe"}}],["symbol-name:getConnectionInfo",{"id":"symbol-name:getConnectionInfo","kind":"symbol","language":"jsts","symbolName":"getConnectionInfo","metadata":{"unresolvedName":"getConnectionInfo"}}],["external:secondFetch.reject",{"id":"external:secondFetch.reject","kind":"external","language":"jsts","metadata":{"unresolvedName":"secondFetch.reject"}}],["external:Object.assign",{"id":"external:Object.assign","kind":"external","language":"jsts","metadata":{"unresolvedName":"Object.assign"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onPartDelta",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onPartDelta","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","symbolName":"onPartDelta","symbolKind":"function","exported":false,"metadata":{"line":124,"column":9,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","symbolName":"onError","symbolKind":"function","exported":false,"metadata":{"line":227,"column":9,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onServerConnected",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onServerConnected","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","symbolName":"onServerConnected","symbolKind":"function","exported":false,"metadata":{"line":250,"column":7,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onMessageUpdated",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onMessageUpdated","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","symbolName":"onMessageUpdated","symbolKind":"function","exported":false,"metadata":{"line":188,"column":9,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onPartUpdated",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onPartUpdated","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","symbolName":"onPartUpdated","symbolKind":"function","exported":false,"metadata":{"line":223,"column":9,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","metadata":{"lineCount":897,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts","metadata":{"lineCount":48,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts","metadata":{"lineCount":37,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","metadata":{"lineCount":40,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","metadata":{"lineCount":64,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"updateConnectionState","symbolKind":"function","exported":false,"metadata":{"line":42,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:connectionListeners.forEach",{"id":"external:connectionListeners.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"connectionListeners.forEach"}}],["symbol-name:fn",{"id":"symbol-name:fn","kind":"symbol","language":"jsts","symbolName":"fn","metadata":{"unresolvedName":"fn"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":887,"column":10,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:getConnectionInfo",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:getConnectionInfo","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"getConnectionInfo","symbolKind":"function","exported":true,"metadata":{"line":49,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToConnectionState",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToConnectionState","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"subscribeToConnectionState","symbolKind":"function","exported":true,"metadata":{"line":53,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:connectionListeners.add",{"id":"external:connectionListeners.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"connectionListeners.add"}}],["external:connectionListeners.delete",{"id":"external:connectionListeners.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"connectionListeners.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:finalizeConnectionAttempt",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:finalizeConnectionAttempt","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"finalizeConnectionAttempt","symbolKind":"function","exported":false,"metadata":{"line":97,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastReconnected",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastReconnected","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"broadcastReconnected","symbolKind":"function","exported":false,"metadata":{"line":108,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:allSubscribers.forEach",{"id":"external:allSubscribers.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"allSubscribers.forEach"}}],["external:cb.onReconnected",{"id":"external:cb.onReconnected","kind":"external","language":"jsts","metadata":{"unresolvedName":"cb.onReconnected"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectTauri",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectTauri","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"disconnectTauri","symbolKind":"function","exported":false,"metadata":{"line":127,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:isTauri",{"id":"symbol-name:isTauri","kind":"symbol","language":"jsts","symbolName":"isTauri","metadata":{"unresolvedName":"isTauri"}}],["external:pendingDisconnect.then",{"id":"external:pendingDisconnect.then","kind":"external","language":"jsts","metadata":{"unresolvedName":"pendingDisconnect.then"}}],["external:import('@tauri-apps/api/core')\n .then",{"id":"external:import('@tauri-apps/api/core')\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"import('@tauri-apps/api/core')\n .then"}}],["external:invoke('bridge_disconnect', { args: { bridgeId: 'sse' } }).then",{"id":"external:invoke('bridge_disconnect', { args: { bridgeId: 'sse' } }).then","kind":"external","language":"jsts","metadata":{"unresolvedName":"invoke('bridge_disconnect', { args: { bridgeId: 'sse' } }).then"}}],["symbol-name:invoke",{"id":"symbol-name:invoke","kind":"symbol","language":"jsts","symbolName":"invoke","metadata":{"unresolvedName":"invoke"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:resetHeartbeat",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:resetHeartbeat","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"resetHeartbeat","symbolKind":"function","exported":false,"metadata":{"line":139,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:clearTimeout",{"id":"symbol-name:clearTimeout","kind":"symbol","language":"jsts","symbolName":"clearTimeout","metadata":{"unresolvedName":"clearTimeout"}}],["symbol-name:updateConnectionState",{"id":"symbol-name:updateConnectionState","kind":"symbol","language":"jsts","symbolName":"updateConnectionState","metadata":{"unresolvedName":"updateConnectionState"}}],["external:console.warn",{"id":"external:console.warn","kind":"external","language":"jsts","metadata":{"unresolvedName":"console.warn"}}],["symbol-name:forceReconnectNow",{"id":"symbol-name:forceReconnectNow","kind":"symbol","language":"jsts","symbolName":"forceReconnectNow","metadata":{"unresolvedName":"forceReconnectNow"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:scheduleReconnect",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:scheduleReconnect","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"scheduleReconnect","symbolKind":"function","exported":false,"metadata":{"line":154,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:Math.min",{"id":"external:Math.min","kind":"external","language":"jsts","metadata":{"unresolvedName":"Math.min"}}],["symbol-name:connectSingleton",{"id":"symbol-name:connectSingleton","kind":"symbol","language":"jsts","symbolName":"connectSingleton","metadata":{"unresolvedName":"connectSingleton"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"connectSingleton","symbolKind":"function","exported":false,"metadata":{"line":173,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:Math.round",{"id":"external:Math.round","kind":"external","language":"jsts","metadata":{"unresolvedName":"Math.round"}}],["symbol-name:disconnectTauri",{"id":"symbol-name:disconnectTauri","kind":"symbol","language":"jsts","symbolName":"disconnectTauri","metadata":{"unresolvedName":"disconnectTauri"}}],["external:singletonController.abort",{"id":"external:singletonController.abort","kind":"external","language":"jsts","metadata":{"unresolvedName":"singletonController.abort"}}],["symbol-name:registerLifecycleListeners",{"id":"symbol-name:registerLifecycleListeners","kind":"symbol","language":"jsts","symbolName":"registerLifecycleListeners","metadata":{"unresolvedName":"registerLifecycleListeners"}}],["symbol-name:connectViaTauri",{"id":"symbol-name:connectViaTauri","kind":"symbol","language":"jsts","symbolName":"connectViaTauri","metadata":{"unresolvedName":"connectViaTauri"}}],["symbol-name:connectViaBrowser",{"id":"symbol-name:connectViaBrowser","kind":"symbol","language":"jsts","symbolName":"connectViaBrowser","metadata":{"unresolvedName":"connectViaBrowser"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"connectViaTauri","symbolKind":"function","exported":false,"metadata":{"line":232,"column":1,"cyclomaticComplexity":21,"maxNestingDepth":4,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getApiBaseUrl",{"id":"symbol-name:getApiBaseUrl","kind":"symbol","language":"jsts","symbolName":"getApiBaseUrl","metadata":{"unresolvedName":"getApiBaseUrl"}}],["symbol-name:getAuthHeader",{"id":"symbol-name:getAuthHeader","kind":"symbol","language":"jsts","symbolName":"getAuthHeader","metadata":{"unresolvedName":"getAuthHeader"}}],["symbol-name:createSseTextParser",{"id":"symbol-name:createSseTextParser","kind":"symbol","language":"jsts","symbolName":"createSseTextParser","metadata":{"unresolvedName":"createSseTextParser"}}],["symbol-name:resetHeartbeat",{"id":"symbol-name:resetHeartbeat","kind":"symbol","language":"jsts","symbolName":"resetHeartbeat","metadata":{"unresolvedName":"resetHeartbeat"}}],["symbol-name:broadcastReconnected",{"id":"symbol-name:broadcastReconnected","kind":"symbol","language":"jsts","symbolName":"broadcastReconnected","metadata":{"unresolvedName":"broadcastReconnected"}}],["external:sseParser.push",{"id":"external:sseParser.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"sseParser.push"}}],["symbol-name:parseGlobalEvent",{"id":"symbol-name:parseGlobalEvent","kind":"symbol","language":"jsts","symbolName":"parseGlobalEvent","metadata":{"unresolvedName":"parseGlobalEvent"}}],["symbol-name:broadcastEvent",{"id":"symbol-name:broadcastEvent","kind":"symbol","language":"jsts","symbolName":"broadcastEvent","metadata":{"unresolvedName":"broadcastEvent"}}],["symbol-name:scheduleReconnect",{"id":"symbol-name:scheduleReconnect","kind":"symbol","language":"jsts","symbolName":"scheduleReconnect","metadata":{"unresolvedName":"scheduleReconnect"}}],["external:cb.onError",{"id":"external:cb.onError","kind":"external","language":"jsts","metadata":{"unresolvedName":"cb.onError"}}],["symbol-name:finalizeConnectionAttempt",{"id":"symbol-name:finalizeConnectionAttempt","kind":"symbol","language":"jsts","symbolName":"finalizeConnectionAttempt","metadata":{"unresolvedName":"finalizeConnectionAttempt"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"connectViaBrowser","symbolKind":"function","exported":false,"metadata":{"line":345,"column":1,"cyclomaticComplexity":17,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:response.body?.cancel?.().catch",{"id":"external:response.body?.cancel?.().catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"response.body?.cancel?.().catch"}}],["external:response.body?.cancel",{"id":"external:response.body?.cancel","kind":"external","language":"jsts","metadata":{"unresolvedName":"response.body?.cancel"}}],["external:response.body?.getReader",{"id":"external:response.body?.getReader","kind":"external","language":"jsts","metadata":{"unresolvedName":"response.body?.getReader"}}],["external:reader.cancel().catch",{"id":"external:reader.cancel().catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"reader.cancel().catch"}}],["external:reader.cancel",{"id":"external:reader.cancel","kind":"external","language":"jsts","metadata":{"unresolvedName":"reader.cancel"}}],["external:reader.read",{"id":"external:reader.read","kind":"external","language":"jsts","metadata":{"unresolvedName":"reader.read"}}],["external:decoder.decode",{"id":"external:decoder.decode","kind":"external","language":"jsts","metadata":{"unresolvedName":"decoder.decode"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:parseGlobalEvent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:parseGlobalEvent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"parseGlobalEvent","symbolKind":"function","exported":false,"metadata":{"line":450,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:isGlobalEvent",{"id":"symbol-name:isGlobalEvent","kind":"symbol","language":"jsts","symbolName":"isGlobalEvent","metadata":{"unresolvedName":"isGlobalEvent"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isGlobalEvent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isGlobalEvent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"isGlobalEvent","symbolKind":"function","exported":false,"metadata":{"line":462,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:isRecord",{"id":"symbol-name:isRecord","kind":"symbol","language":"jsts","symbolName":"isRecord","metadata":{"unresolvedName":"isRecord"}}],["symbol-name:isEventType",{"id":"symbol-name:isEventType","kind":"symbol","language":"jsts","symbolName":"isEventType","metadata":{"unresolvedName":"isEventType"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isEventType",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isEventType","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"isEventType","symbolKind":"function","exported":false,"metadata":{"line":470,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:EVENT_TYPE_SET.has",{"id":"external:EVENT_TYPE_SET.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"EVENT_TYPE_SET.has"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isRecord",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isRecord","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"isRecord","symbolKind":"function","exported":false,"metadata":{"line":474,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:getMessageInfo",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:getMessageInfo","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"getMessageInfo","symbolKind":"function","exported":false,"metadata":{"line":478,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:startBackgroundKeepalive",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:startBackgroundKeepalive","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"startBackgroundKeepalive","symbolKind":"function","exported":false,"metadata":{"line":493,"column":1,"cyclomaticComplexity":9,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:stopBackgroundKeepalive",{"id":"symbol-name:stopBackgroundKeepalive","kind":"symbol","language":"jsts","symbolName":"stopBackgroundKeepalive","metadata":{"unresolvedName":"stopBackgroundKeepalive"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:stopBackgroundKeepalive",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:stopBackgroundKeepalive","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"stopBackgroundKeepalive","symbolKind":"function","exported":false,"metadata":{"line":533,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectSingleton",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectSingleton","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"disconnectSingleton","symbolKind":"function","exported":false,"metadata":{"line":540,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleVisibilityChange",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleVisibilityChange","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"handleVisibilityChange","symbolKind":"function","exported":false,"metadata":{"line":562,"column":1,"cyclomaticComplexity":9,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:startBackgroundKeepalive",{"id":"symbol-name:startBackgroundKeepalive","kind":"symbol","language":"jsts","symbolName":"startBackgroundKeepalive","metadata":{"unresolvedName":"startBackgroundKeepalive"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:forceReconnectNow",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:forceReconnectNow","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"forceReconnectNow","symbolKind":"function","exported":false,"metadata":{"line":619,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleOnline",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleOnline","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"handleOnline","symbolKind":"function","exported":false,"metadata":{"line":636,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleOffline",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleOffline","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"handleOffline","symbolKind":"function","exported":false,"metadata":{"line":645,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:registerLifecycleListeners",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:registerLifecycleListeners","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"registerLifecycleListeners","symbolKind":"function","exported":false,"metadata":{"line":665,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:document.addEventListener",{"id":"external:document.addEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.addEventListener"}}],["external:window.addEventListener",{"id":"external:window.addEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.addEventListener"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:unregisterLifecycleListeners",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:unregisterLifecycleListeners","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"unregisterLifecycleListeners","symbolKind":"function","exported":false,"metadata":{"line":674,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:document.removeEventListener",{"id":"external:document.removeEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.removeEventListener"}}],["external:window.removeEventListener",{"id":"external:window.removeEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.removeEventListener"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:shouldLogSseEvents",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:shouldLogSseEvents","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"shouldLogSseEvents","symbolKind":"function","exported":false,"metadata":{"line":683,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:window.localStorage.getItem",{"id":"external:window.localStorage.getItem","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.localStorage.getItem"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastEvent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastEvent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"broadcastEvent","symbolKind":"function","exported":false,"metadata":{"line":689,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:shouldLogSseEvents",{"id":"symbol-name:shouldLogSseEvents","kind":"symbol","language":"jsts","symbolName":"shouldLogSseEvents","metadata":{"unresolvedName":"shouldLogSseEvents"}}],["external:console.debug",{"id":"external:console.debug","kind":"external","language":"jsts","metadata":{"unresolvedName":"console.debug"}}],["symbol-name:handleEventForSubscriber",{"id":"symbol-name:handleEventForSubscriber","kind":"symbol","language":"jsts","symbolName":"handleEventForSubscriber","metadata":{"unresolvedName":"handleEventForSubscriber"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"handleEventForSubscriber","symbolKind":"function","exported":false,"metadata":{"line":704,"column":1,"cyclomaticComplexity":25,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getMessageInfo",{"id":"symbol-name:getMessageInfo","kind":"symbol","language":"jsts","symbolName":"getMessageInfo","metadata":{"unresolvedName":"getMessageInfo"}}],["external:callbacks.onMessageUpdated",{"id":"external:callbacks.onMessageUpdated","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onMessageUpdated"}}],["external:callbacks.onPartUpdated",{"id":"external:callbacks.onPartUpdated","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onPartUpdated"}}],["external:callbacks.onPartDelta",{"id":"external:callbacks.onPartDelta","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onPartDelta"}}],["external:callbacks.onPartRemoved",{"id":"external:callbacks.onPartRemoved","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onPartRemoved"}}],["external:callbacks.onSessionUpdated",{"id":"external:callbacks.onSessionUpdated","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onSessionUpdated"}}],["external:callbacks.onSessionCreated",{"id":"external:callbacks.onSessionCreated","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onSessionCreated"}}],["external:callbacks.onSessionDeleted",{"id":"external:callbacks.onSessionDeleted","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onSessionDeleted"}}],["external:callbacks.onProjectUpdated",{"id":"external:callbacks.onProjectUpdated","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onProjectUpdated"}}],["external:callbacks.onSessionError",{"id":"external:callbacks.onSessionError","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onSessionError"}}],["symbol-name:normalizeSessionError",{"id":"symbol-name:normalizeSessionError","kind":"symbol","language":"jsts","symbolName":"normalizeSessionError","metadata":{"unresolvedName":"normalizeSessionError"}}],["external:callbacks.onSessionIdle",{"id":"external:callbacks.onSessionIdle","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onSessionIdle"}}],["external:callbacks.onSessionStatus",{"id":"external:callbacks.onSessionStatus","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onSessionStatus"}}],["external:callbacks.onPermissionAsked",{"id":"external:callbacks.onPermissionAsked","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onPermissionAsked"}}],["external:callbacks.onPermissionReplied",{"id":"external:callbacks.onPermissionReplied","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onPermissionReplied"}}],["external:callbacks.onQuestionAsked",{"id":"external:callbacks.onQuestionAsked","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onQuestionAsked"}}],["external:callbacks.onQuestionReplied",{"id":"external:callbacks.onQuestionReplied","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onQuestionReplied"}}],["external:callbacks.onQuestionRejected",{"id":"external:callbacks.onQuestionRejected","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onQuestionRejected"}}],["external:callbacks.onWorktreeReady",{"id":"external:callbacks.onWorktreeReady","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onWorktreeReady"}}],["external:callbacks.onWorktreeFailed",{"id":"external:callbacks.onWorktreeFailed","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onWorktreeFailed"}}],["external:callbacks.onVcsBranchUpdated",{"id":"external:callbacks.onVcsBranchUpdated","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onVcsBranchUpdated"}}],["external:callbacks.onTodoUpdated",{"id":"external:callbacks.onTodoUpdated","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onTodoUpdated"}}],["symbol-name:normalizeTodoItems",{"id":"symbol-name:normalizeTodoItems","kind":"symbol","language":"jsts","symbolName":"normalizeTodoItems","metadata":{"unresolvedName":"normalizeTodoItems"}}],["external:callbacks.onServerConnected",{"id":"external:callbacks.onServerConnected","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks.onServerConnected"}}],["symbol-name:normalizeServerConnected",{"id":"symbol-name:normalizeServerConnected","kind":"symbol","language":"jsts","symbolName":"normalizeServerConnected","metadata":{"unresolvedName":"normalizeServerConnected"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:normalizeServerConnected",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:normalizeServerConnected","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"normalizeServerConnected","symbolKind":"function","exported":false,"metadata":{"line":792,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:normalizeSessionError",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:normalizeSessionError","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"normalizeSessionError","symbolKind":"function","exported":false,"metadata":{"line":799,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:reconnectSSE",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:reconnectSSE","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"reconnectSSE","symbolKind":"function","exported":true,"metadata":{"line":838,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","symbolName":"subscribeToEvents","symbolKind":"function","exported":true,"metadata":{"line":878,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:allSubscribers.add",{"id":"external:allSubscribers.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"allSubscribers.add"}}],["external:allSubscribers.delete",{"id":"external:allSubscribers.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"allSubscribers.delete"}}],["symbol-name:disconnectSingleton",{"id":"symbol-name:disconnectSingleton","kind":"symbol","language":"jsts","symbolName":"disconnectSingleton","metadata":{"unresolvedName":"disconnectSingleton"}}],["symbol-name:unregisterLifecycleListeners",{"id":"symbol-name:unregisterLifecycleListeners","kind":"symbol","language":"jsts","symbolName":"unregisterLifecycleListeners","metadata":{"unresolvedName":"unregisterLifecycleListeners"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts","metadata":{"lineCount":44,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts","metadata":{"lineCount":37,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":20,"column":78,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:vi.mocked(piClient.post).mockReset",{"id":"external:vi.mocked(piClient.post).mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(piClient.post).mockReset"}}],["external:vi.mocked(piClient.delete).mockReset",{"id":"external:vi.mocked(piClient.delete).mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(piClient.delete).mockReset"}}],["external:vi.mocked(piClient.post).mockResolvedValue",{"id":"external:vi.mocked(piClient.post).mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(piClient.post).mockResolvedValue"}}],["external:vi.mocked(piClient.delete).mockResolvedValue",{"id":"external:vi.mocked(piClient.delete).mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(piClient.delete).mockResolvedValue"}}],["external:expect(getExtensions('/repo')).resolves.toMatchObject",{"id":"external:expect(getExtensions('/repo')).resolves.toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getExtensions('/repo')).resolves.toMatchObject"}}],["symbol-name:getExtensions",{"id":"symbol-name:getExtensions","kind":"symbol","language":"jsts","symbolName":"getExtensions","metadata":{"unresolvedName":"getExtensions"}}],["symbol-name:installExtension",{"id":"symbol-name:installExtension","kind":"symbol","language":"jsts","symbolName":"installExtension","metadata":{"unresolvedName":"installExtension"}}],["symbol-name:removeExtensionPackage",{"id":"symbol-name:removeExtensionPackage","kind":"symbol","language":"jsts","symbolName":"removeExtensionPackage","metadata":{"unresolvedName":"removeExtensionPackage"}}],["external:expect(piClient.get).toHaveBeenCalledWith",{"id":"external:expect(piClient.get).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(piClient.get).toHaveBeenCalledWith"}}],["external:expect(piClient.post).toHaveBeenCalledWith",{"id":"external:expect(piClient.post).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(piClient.post).toHaveBeenCalledWith"}}],["external:expect(piClient.delete).toHaveBeenCalledWith",{"id":"external:expect(piClient.delete).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(piClient.delete).toHaveBeenCalledWith"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/extension.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/extension.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/extension.ts","metadata":{"lineCount":60,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:withDirectoryQuery",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:withDirectoryQuery","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts","symbolName":"withDirectoryQuery","symbolKind":"function","exported":false,"metadata":{"line":10,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:getExtensions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:getExtensions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts","symbolName":"getExtensions","symbolKind":"function","exported":true,"metadata":{"line":15,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:withDirectoryQuery",{"id":"symbol-name:withDirectoryQuery","kind":"symbol","language":"jsts","symbolName":"withDirectoryQuery","metadata":{"unresolvedName":"withDirectoryQuery"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:installExtension",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:installExtension","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts","symbolName":"installExtension","symbolKind":"function","exported":true,"metadata":{"line":19,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:removeExtensionPackage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:removeExtensionPackage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts","symbolName":"removeExtensionPackage","symbolKind":"function","exported":true,"metadata":{"line":26,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:piClient.delete",{"id":"external:piClient.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"piClient.delete"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","metadata":{"lineCount":152,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:isRootDirectoryPath",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:isRootDirectoryPath","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","symbolName":"isRootDirectoryPath","symbolKind":"function","exported":false,"metadata":{"line":15,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getRootDirectoryCacheKey",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getRootDirectoryCacheKey","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","symbolName":"getRootDirectoryCacheKey","symbolKind":"function","exported":false,"metadata":{"line":19,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:fetchDirectory",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:fetchDirectory","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","symbolName":"fetchDirectory","symbolKind":"function","exported":false,"metadata":{"line":23,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:/^[a-zA-Z]:/.test",{"id":"external:/^[a-zA-Z]:/.test","kind":"external","language":"jsts","metadata":{"unresolvedName":"/^[a-zA-Z]:/.test"}}],["external:path.startsWith",{"id":"external:path.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.startsWith"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchFiles",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchFiles","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","symbolName":"searchFiles","symbolKind":"function","exported":true,"metadata":{"line":40,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","symbolName":"listDirectory","symbolKind":"function","exported":true,"metadata":{"line":60,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:isRootDirectoryPath",{"id":"symbol-name:isRootDirectoryPath","kind":"symbol","language":"jsts","symbolName":"isRootDirectoryPath","metadata":{"unresolvedName":"isRootDirectoryPath"}}],["symbol-name:fetchDirectory",{"id":"symbol-name:fetchDirectory","kind":"symbol","language":"jsts","symbolName":"fetchDirectory","metadata":{"unresolvedName":"fetchDirectory"}}],["symbol-name:getRootDirectoryCacheKey",{"id":"symbol-name:getRootDirectoryCacheKey","kind":"symbol","language":"jsts","symbolName":"getRootDirectoryCacheKey","metadata":{"unresolvedName":"getRootDirectoryCacheKey"}}],["external:rootDirectoryCache.get",{"id":"external:rootDirectoryCache.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"rootDirectoryCache.get"}}],["external:rootDirectoryInflight.get",{"id":"external:rootDirectoryInflight.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"rootDirectoryInflight.get"}}],["external:fetchDirectory(path === '' ? '.' : path, directory)\n .then",{"id":"external:fetchDirectory(path === '' ? '.' : path, directory)\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"fetchDirectory(path === '' ? '.' : path, directory)\n .then"}}],["external:rootDirectoryCache.set",{"id":"external:rootDirectoryCache.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"rootDirectoryCache.set"}}],["external:rootDirectoryInflight.delete",{"id":"external:rootDirectoryInflight.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"rootDirectoryInflight.delete"}}],["external:rootDirectoryInflight.set",{"id":"external:rootDirectoryInflight.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"rootDirectoryInflight.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":82,"column":14,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:prefetchRootDirectory",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:prefetchRootDirectory","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","symbolName":"prefetchRootDirectory","symbolKind":"function","exported":true,"metadata":{"line":90,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:listDirectory",{"id":"symbol-name:listDirectory","kind":"symbol","language":"jsts","symbolName":"listDirectory","metadata":{"unresolvedName":"listDirectory"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getFileContent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getFileContent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","symbolName":"getFileContent","symbolKind":"function","exported":true,"metadata":{"line":97,"column":1,"cyclomaticComplexity":8,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getFileStatus",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getFileStatus","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","symbolName":"getFileStatus","symbolKind":"function","exported":true,"metadata":{"line":119,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchSymbols",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchSymbols","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","symbolName":"searchSymbols","symbolKind":"function","exported":true,"metadata":{"line":132,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchDirectories",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchDirectories","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","symbolName":"searchDirectories","symbolKind":"function","exported":true,"metadata":{"line":145,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:searchFiles",{"id":"symbol-name:searchFiles","kind":"symbol","language":"jsts","symbolName":"searchFiles","metadata":{"unresolvedName":"searchFiles"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts","metadata":{"lineCount":47,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts:getHealth",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts:getHealth","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts","symbolName":"getHealth","symbolKind":"function","exported":true,"metadata":{"line":16,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts:disposeGlobal",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts:disposeGlobal","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts","symbolName":"disposeGlobal","symbolKind":"function","exported":true,"metadata":{"line":27,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts:disposeInstance",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts:disposeInstance","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts","symbolName":"disposeInstance","symbolKind":"function","exported":true,"metadata":{"line":39,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","metadata":{"lineCount":42,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":37,"column":36,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(buildQueryString({})).toBe",{"id":"external:expect(buildQueryString({})).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(buildQueryString({})).toBe"}}],["symbol-name:buildQueryString",{"id":"symbol-name:buildQueryString","kind":"symbol","language":"jsts","symbolName":"buildQueryString","metadata":{"unresolvedName":"buildQueryString"}}],["external:expect(buildQueryString({ a: 'hello', b: undefined })).toBe",{"id":"external:expect(buildQueryString({ a: 'hello', b: undefined })).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(buildQueryString({ a: 'hello', b: undefined })).toBe"}}],["external:expect(result).toBe",{"id":"external:expect(result).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result).toBe"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:getApiBaseUrl",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:getApiBaseUrl","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts","symbolName":"getApiBaseUrl","symbolKind":"function","exported":true,"metadata":{"line":12,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":true,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:serverStore.getActiveBaseUrl",{"id":"external:serverStore.getActiveBaseUrl","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStore.getActiveBaseUrl"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:getAuthHeader",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:getAuthHeader","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts","symbolName":"getAuthHeader","symbolKind":"function","exported":true,"metadata":{"line":20,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:serverStore.getActiveToken",{"id":"external:serverStore.getActiveToken","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStore.getActiveToken"}}],["external:serverStore.getActiveAuth",{"id":"external:serverStore.getActiveAuth","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStore.getActiveAuth"}}],["symbol-name:makeBasicAuthHeader",{"id":"symbol-name:makeBasicAuthHeader","kind":"symbol","language":"jsts","symbolName":"makeBasicAuthHeader","metadata":{"unresolvedName":"makeBasicAuthHeader"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:buildQueryString",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:buildQueryString","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts","symbolName":"buildQueryString","symbolKind":"function","exported":true,"metadata":{"line":39,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:parts.push",{"id":"external:parts.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"parts.push"}}],["external:parts.join",{"id":"external:parts.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"parts.join"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/index.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/index.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/index.ts","metadata":{"lineCount":4,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/lsp.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/lsp.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/lsp.ts","metadata":{"lineCount":30,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/lsp.ts:getLspStatus",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/lsp.ts:getLspStatus","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/lsp.ts","symbolName":"getLspStatus","symbolKind":"function","exported":true,"metadata":{"line":15,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/lsp.ts:getFormatterStatus",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/lsp.ts:getFormatterStatus","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/lsp.ts","symbolName":"getFormatterStatus","symbolKind":"function","exported":true,"metadata":{"line":27,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts","metadata":{"lineCount":41,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","metadata":{"lineCount":63,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":16,"column":71,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getMcpStatus",{"id":"symbol-name:getMcpStatus","kind":"symbol","language":"jsts","symbolName":"getMcpStatus","metadata":{"unresolvedName":"getMcpStatus"}}],["external:expect(status.servers.context7).toMatchObject",{"id":"external:expect(status.servers.context7).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(status.servers.context7).toMatchObject"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/mcp.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/mcp.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/mcp.ts","metadata":{"lineCount":68,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:getMcpStatus",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:getMcpStatus","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","symbolName":"getMcpStatus","symbolKind":"function","exported":true,"metadata":{"line":11,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:addMcpServer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:addMcpServer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","symbolName":"addMcpServer","symbolKind":"function","exported":true,"metadata":{"line":18,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:connectMcpServer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:connectMcpServer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","symbolName":"connectMcpServer","symbolKind":"function","exported":true,"metadata":{"line":25,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:disconnectMcpServer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:disconnectMcpServer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","symbolName":"disconnectMcpServer","symbolKind":"function","exported":true,"metadata":{"line":32,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:startMcpAuth",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:startMcpAuth","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","symbolName":"startMcpAuth","symbolKind":"function","exported":true,"metadata":{"line":39,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:Promise.reject",{"id":"external:Promise.reject","kind":"external","language":"jsts","metadata":{"unresolvedName":"Promise.reject"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:removeMcpAuth",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:removeMcpAuth","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","symbolName":"removeMcpAuth","symbolKind":"function","exported":true,"metadata":{"line":46,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:completeMcpAuth",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:completeMcpAuth","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","symbolName":"completeMcpAuth","symbolKind":"function","exported":true,"metadata":{"line":53,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:authenticateMcp",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:authenticateMcp","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","symbolName":"authenticateMcp","symbolKind":"function","exported":true,"metadata":{"line":60,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","metadata":{"lineCount":157,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:isTextUserContentPart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:isTextUserContentPart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","symbolName":"isTextUserContentPart","symbolKind":"function","exported":false,"metadata":{"line":29,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:isFileUserContentPart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:isFileUserContentPart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","symbolName":"isFileUserContentPart","symbolKind":"function","exported":false,"metadata":{"line":33,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:isAgentUserContentPart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:isAgentUserContentPart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","symbolName":"isAgentUserContentPart","symbolKind":"function","exported":false,"metadata":{"line":37,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessages",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessages","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","symbolName":"getSessionMessages","symbolKind":"function","exported":true,"metadata":{"line":48,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessageCount",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessageCount","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","symbolName":"getSessionMessageCount","symbolKind":"function","exported":true,"metadata":{"line":66,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["symbol-name:getSessionMessages",{"id":"symbol-name:getSessionMessages","kind":"symbol","language":"jsts","symbolName":"getSessionMessages","metadata":{"unresolvedName":"getSessionMessages"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:extractUserMessageContent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:extractUserMessageContent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","symbolName":"extractUserMessageContent","symbolKind":"function","exported":true,"metadata":{"line":78,"column":1,"cyclomaticComplexity":18,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:parts.filter",{"id":"external:parts.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"parts.filter"}}],["symbol-name:isTextUserContentPart",{"id":"symbol-name:isTextUserContentPart","kind":"symbol","language":"jsts","symbolName":"isTextUserContentPart","metadata":{"unresolvedName":"isTextUserContentPart"}}],["external:textParts.map(p => p.text).join",{"id":"external:textParts.map(p => p.text).join","kind":"external","language":"jsts","metadata":{"unresolvedName":"textParts.map(p => p.text).join"}}],["external:textParts.map",{"id":"external:textParts.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"textParts.map"}}],["symbol-name:isFileUserContentPart",{"id":"symbol-name:isFileUserContentPart","kind":"symbol","language":"jsts","symbolName":"isFileUserContentPart","metadata":{"unresolvedName":"isFileUserContentPart"}}],["symbol-name:getSourcePath",{"id":"symbol-name:getSourcePath","kind":"symbol","language":"jsts","symbolName":"getSourcePath","metadata":{"unresolvedName":"getSourcePath"}}],["external:attachments.push",{"id":"external:attachments.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"attachments.push"}}],["external:crypto.randomUUID",{"id":"external:crypto.randomUUID","kind":"external","language":"jsts","metadata":{"unresolvedName":"crypto.randomUUID"}}],["symbol-name:isAgentUserContentPart",{"id":"symbol-name:isAgentUserContentPart","kind":"symbol","language":"jsts","symbolName":"isAgentUserContentPart","metadata":{"unresolvedName":"isAgentUserContentPart"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSourcePath",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSourcePath","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","symbolName":"getSourcePath","symbolKind":"function","exported":false,"metadata":{"line":86,"column":25,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:sendMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:sendMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","symbolName":"sendMessage","symbolKind":"function","exported":true,"metadata":{"line":137,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:sendMessageAsync",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:sendMessageAsync","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","symbolName":"sendMessageAsync","symbolKind":"function","exported":true,"metadata":{"line":149,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts","metadata":{"lineCount":48,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts","metadata":{"lineCount":11,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":33,"column":33,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getNetworkAccess",{"id":"symbol-name:getNetworkAccess","kind":"symbol","language":"jsts","symbolName":"getNetworkAccess","metadata":{"unresolvedName":"getNetworkAccess"}}],["external:expect(info.primaryLanUrl).toBe",{"id":"external:expect(info.primaryLanUrl).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(info.primaryLanUrl).toBe"}}],["symbol-name:updateNetworkAccess",{"id":"symbol-name:updateNetworkAccess","kind":"symbol","language":"jsts","symbolName":"updateNetworkAccess","metadata":{"unresolvedName":"updateNetworkAccess"}}],["external:expect(info.lanAccessEnabled).toBe",{"id":"external:expect(info.lanAccessEnabled).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(info.lanAccessEnabled).toBe"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/network.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/network.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/network.ts","metadata":{"lineCount":13,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts:getNetworkAccess",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts:getNetworkAccess","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts","symbolName":"getNetworkAccess","symbolKind":"function","exported":true,"metadata":{"line":4,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts:updateNetworkAccess",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts:updateNetworkAccess","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts","symbolName":"updateNetworkAccess","symbolKind":"function","exported":true,"metadata":{"line":8,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","metadata":{"lineCount":112,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingPermissions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingPermissions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","symbolName":"getPendingPermissions","symbolKind":"function","exported":true,"metadata":{"line":16,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:permissions.filter",{"id":"external:permissions.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"permissions.filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:replyPermission",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:replyPermission","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","symbolName":"replyPermission","symbolKind":"function","exported":true,"metadata":{"line":30,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingQuestions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingQuestions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","symbolName":"getPendingQuestions","symbolKind":"function","exported":true,"metadata":{"line":67,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:questions.filter",{"id":"external:questions.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"questions.filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:replyQuestion",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:replyQuestion","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","symbolName":"replyQuestion","symbolKind":"function","exported":true,"metadata":{"line":81,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:rejectQuestion",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:rejectQuestion","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","symbolName":"rejectQuestion","symbolKind":"function","exported":true,"metadata":{"line":101,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts","metadata":{"lineCount":52,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":36,"column":80,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:localStorage.clear",{"id":"external:localStorage.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"localStorage.clear"}}],["external:sessionStorage.clear",{"id":"external:sessionStorage.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionStorage.clear"}}],["external:vi.spyOn(serverStore, 'isPiMode').mockReturnValue",{"id":"external:vi.spyOn(serverStore, 'isPiMode').mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.spyOn(serverStore, 'isPiMode').mockReturnValue"}}],["external:vi.spyOn",{"id":"external:vi.spyOn","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.spyOn"}}],["external:vi.spyOn(serverStore, 'getActiveToken').mockReturnValue",{"id":"external:vi.spyOn(serverStore, 'getActiveToken').mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.spyOn(serverStore, 'getActiveToken').mockReturnValue"}}],["external:vi.spyOn(serverStore, 'getActiveBaseUrl').mockReturnValue",{"id":"external:vi.spyOn(serverStore, 'getActiveBaseUrl').mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.spyOn(serverStore, 'getActiveBaseUrl').mockReturnValue"}}],["external:vi\n .spyOn(globalThis, 'fetch')\n .mockImplementation",{"id":"external:vi\n .spyOn(globalThis, 'fetch')\n .mockImplementation","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi\n .spyOn(globalThis, 'fetch')\n .mockImplementation"}}],["external:vi\n .spyOn",{"id":"external:vi\n .spyOn","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi\n .spyOn"}}],["external:expect(result.ok).toBe",{"id":"external:expect(result.ok).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.ok).toBe"}}],["external:expect(fetchSpy).toHaveBeenCalledWith",{"id":"external:expect(fetchSpy).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(fetchSpy).toHaveBeenCalledWith"}}],["external:vi.spyOn(globalThis, 'fetch').mockImplementation",{"id":"external:vi.spyOn(globalThis, 'fetch').mockImplementation","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.spyOn(globalThis, 'fetch').mockImplementation"}}],["external:expect(piClient.get('/api/vcs/status')).rejects.toThrow",{"id":"external:expect(piClient.get('/api/vcs/status')).rejects.toThrow","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(piClient.get('/api/vcs/status')).rejects.toThrow"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getTauriFetch",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getTauriFetch","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","symbolName":"getTauriFetch","symbolKind":"function","exported":false,"metadata":{"line":6,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getFetch",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getFetch","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","symbolName":"getFetch","symbolKind":"function","exported":false,"metadata":{"line":13,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getTauriFetch",{"id":"symbol-name:getTauriFetch","kind":"symbol","language":"jsts","symbolName":"getTauriFetch","metadata":{"unresolvedName":"getTauriFetch"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:buildHeaders",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:buildHeaders","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","symbolName":"buildHeaders","symbolKind":"function","exported":false,"metadata":{"line":24,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:btoa",{"id":"symbol-name:btoa","kind":"symbol","language":"jsts","symbolName":"btoa","metadata":{"unresolvedName":"btoa"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getResponseErrorMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getResponseErrorMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","symbolName":"getResponseErrorMessage","symbolKind":"function","exported":false,"metadata":{"line":42,"column":1,"cyclomaticComplexity":9,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:response.text",{"id":"external:response.text","kind":"external","language":"jsts","metadata":{"unresolvedName":"response.text"}}],["external:data.error.trim",{"id":"external:data.error.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"data.error.trim"}}],["external:data.message.trim",{"id":"external:data.message.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"data.message.trim"}}],["external:text.trim",{"id":"external:text.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"text.trim"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:throwIfNotOk",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:throwIfNotOk","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","symbolName":"throwIfNotOk","symbolKind":"function","exported":false,"metadata":{"line":63,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getResponseErrorMessage",{"id":"symbol-name:getResponseErrorMessage","kind":"symbol","language":"jsts","symbolName":"getResponseErrorMessage","metadata":{"unresolvedName":"getResponseErrorMessage"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:get",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:get","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","symbolName":"get","symbolKind":"function","exported":false,"metadata":{"line":69,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:buildHeaders",{"id":"symbol-name:buildHeaders","kind":"symbol","language":"jsts","symbolName":"buildHeaders","metadata":{"unresolvedName":"buildHeaders"}}],["symbol-name:getFetch",{"id":"symbol-name:getFetch","kind":"symbol","language":"jsts","symbolName":"getFetch","metadata":{"unresolvedName":"getFetch"}}],["symbol-name:f",{"id":"symbol-name:f","kind":"symbol","language":"jsts","symbolName":"f","metadata":{"unresolvedName":"f"}}],["symbol-name:throwIfNotOk",{"id":"symbol-name:throwIfNotOk","kind":"symbol","language":"jsts","symbolName":"throwIfNotOk","metadata":{"unresolvedName":"throwIfNotOk"}}],["external:response.json",{"id":"external:response.json","kind":"external","language":"jsts","metadata":{"unresolvedName":"response.json"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:post",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:post","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","symbolName":"post","symbolKind":"function","exported":false,"metadata":{"line":84,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:delete",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:delete","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","symbolName":"delete","symbolKind":"function","exported":false,"metadata":{"line":100,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piContract.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piContract.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piContract.ts","metadata":{"lineCount":52,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/compat.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/compat.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/compat.ts","metadata":{"lineCount":273,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","metadata":{"lineCount":54,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/pty.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/pty.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/pty.ts","metadata":{"lineCount":30,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:listPtySessions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:listPtySessions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","symbolName":"listPtySessions","symbolKind":"function","exported":true,"metadata":{"line":16,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:createPtySession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:createPtySession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","symbolName":"createPtySession","symbolKind":"function","exported":true,"metadata":{"line":23,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:getPtySession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:getPtySession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","symbolName":"getPtySession","symbolKind":"function","exported":true,"metadata":{"line":30,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:updatePtySession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:updatePtySession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","symbolName":"updatePtySession","symbolKind":"function","exported":true,"metadata":{"line":37,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:removePtySession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:removePtySession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","symbolName":"removePtySession","symbolKind":"function","exported":true,"metadata":{"line":44,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:getPtyConnectUrl",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:getPtyConnectUrl","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","symbolName":"getPtyConnectUrl","symbolKind":"function","exported":true,"metadata":{"line":51,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts","metadata":{"lineCount":26,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts:connectTauriPty",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts:connectTauriPty","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts","symbolName":"connectTauriPty","symbolKind":"function","exported":true,"metadata":{"line":16,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:onError",{"id":"symbol-name:onError","kind":"symbol","language":"jsts","symbolName":"onError","metadata":{"unresolvedName":"onError"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts:send",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts:send","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts","symbolName":"send","symbolKind":"function","exported":false,"metadata":{"line":22,"column":5,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts:close",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts:close","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts","symbolName":"close","symbolKind":"function","exported":false,"metadata":{"line":23,"column":5,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts","metadata":{"lineCount":45,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","metadata":{"lineCount":216,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":16,"column":65,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["symbol-name:getSessionContextUsage",{"id":"symbol-name:getSessionContextUsage","kind":"symbol","language":"jsts","symbolName":"getSessionContextUsage","metadata":{"unresolvedName":"getSessionContextUsage"}}],["external:expect(usage).toMatchObject",{"id":"external:expect(usage).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(usage).toMatchObject"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/session.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/session.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/session.ts","metadata":{"lineCount":43,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:fallbackSessionTitle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:fallbackSessionTitle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","symbolName":"fallbackSessionTitle","symbolKind":"function","exported":false,"metadata":{"line":25,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionStatus",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionStatus","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","symbolName":"getSessionStatus","symbolKind":"function","exported":true,"metadata":{"line":33,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionDiff",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionDiff","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","symbolName":"getSessionDiff","symbolKind":"function","exported":true,"metadata":{"line":37,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getLastTurnDiff",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getLastTurnDiff","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","symbolName":"getLastTurnDiff","symbolKind":"function","exported":true,"metadata":{"line":45,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionContextUsage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionContextUsage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","symbolName":"getSessionContextUsage","symbolKind":"function","exported":true,"metadata":{"line":49,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","symbolName":"getSessions","symbolKind":"function","exported":true,"metadata":{"line":57,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["symbol-name:fallbackSessionTitle",{"id":"symbol-name:fallbackSessionTitle","kind":"symbol","language":"jsts","symbolName":"fallbackSessionTitle","metadata":{"unresolvedName":"fallbackSessionTitle"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","symbolName":"getSession","symbolKind":"function","exported":true,"metadata":{"line":75,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:createSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:createSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","symbolName":"createSession","symbolKind":"function","exported":true,"metadata":{"line":86,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:updateSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:updateSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","symbolName":"updateSession","symbolKind":"function","exported":true,"metadata":{"line":107,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:deleteSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:deleteSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","symbolName":"deleteSession","symbolKind":"function","exported":true,"metadata":{"line":122,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:abortSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:abortSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","symbolName":"abortSession","symbolKind":"function","exported":true,"metadata":{"line":130,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:revertMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:revertMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","symbolName":"revertMessage","symbolKind":"function","exported":true,"metadata":{"line":139,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unrevertSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unrevertSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","symbolName":"unrevertSession","symbolKind":"function","exported":true,"metadata":{"line":155,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:shareSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:shareSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","symbolName":"shareSession","symbolKind":"function","exported":true,"metadata":{"line":166,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unshareSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unshareSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","symbolName":"unshareSession","symbolKind":"function","exported":true,"metadata":{"line":177,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:forkSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:forkSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","symbolName":"forkSession","symbolKind":"function","exported":true,"metadata":{"line":188,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:summarizeSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:summarizeSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","symbolName":"summarizeSession","symbolKind":"function","exported":true,"metadata":{"line":199,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionChildren",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionChildren","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","symbolName":"getSessionChildren","symbolKind":"function","exported":true,"metadata":{"line":207,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionTodos",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionTodos","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","symbolName":"getSessionTodos","symbolKind":"function","exported":true,"metadata":{"line":213,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts","metadata":{"lineCount":36,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts","metadata":{"lineCount":19,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":16,"column":63,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getSkills",{"id":"symbol-name:getSkills","kind":"symbol","language":"jsts","symbolName":"getSkills","metadata":{"unresolvedName":"getSkills"}}],["external:expect(skills[0]).toMatchObject",{"id":"external:expect(skills[0]).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(skills[0]).toMatchObject"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/skill.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/skill.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/skill.ts","metadata":{"lineCount":13,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts:getSkills",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts:getSkills","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts","symbolName":"getSkills","symbolKind":"function","exported":true,"metadata":{"line":11,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts","metadata":{"lineCount":20,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":13,"column":46,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(parser.push('data: {\"text\":\"中')).toEqual",{"id":"external:expect(parser.push('data: {\"text\":\"中')).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(parser.push('data: {\"text\":\"中')).toEqual"}}],["external:parser.push",{"id":"external:parser.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"parser.push"}}],["external:expect(parser.push('文\"}\\n')).toEqual",{"id":"external:expect(parser.push('文\"}\\n')).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(parser.push('文\"}\\n')).toEqual"}}],["external:expect(parser.push('data: 第二行\\n\\n')).toEqual",{"id":"external:expect(parser.push('data: 第二行\\n\\n')).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(parser.push('data: 第二行\\n\\n')).toEqual"}}],["external:expect(parser.push('data: 你好\\r\\n')).toEqual",{"id":"external:expect(parser.push('data: 你好\\r\\n')).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(parser.push('data: 你好\\r\\n')).toEqual"}}],["external:expect(parser.push('data: 世界\\r\\n\\r\\n')).toEqual",{"id":"external:expect(parser.push('data: 世界\\r\\n\\r\\n')).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(parser.push('data: 世界\\r\\n\\r\\n')).toEqual"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:createSseTextParser",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:createSseTextParser","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts","symbolName":"createSseTextParser","symbolKind":"function","exported":true,"metadata":{"line":5,"column":1,"cyclomaticComplexity":8,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:buffer.replace(/\\r\\n/g, '\\n').replace",{"id":"external:buffer.replace(/\\r\\n/g, '\\n').replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"buffer.replace(/\\r\\n/g, '\\n').replace"}}],["external:buffer.replace",{"id":"external:buffer.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"buffer.replace"}}],["external:buffer.split",{"id":"external:buffer.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"buffer.split"}}],["external:blocks.pop",{"id":"external:blocks.pop","kind":"external","language":"jsts","metadata":{"unresolvedName":"blocks.pop"}}],["external:block.split",{"id":"external:block.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"block.split"}}],["external:dataLines.push",{"id":"external:dataLines.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"dataLines.push"}}],["external:events.push",{"id":"external:events.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"events.push"}}],["external:dataLines.join",{"id":"external:dataLines.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"dataLines.join"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:push",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:push","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts","symbolName":"push","symbolKind":"function","exported":false,"metadata":{"line":9,"column":5,"cyclomaticComplexity":8,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts","metadata":{"lineCount":94,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","metadata":{"lineCount":45,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":61,"column":63,"cyclomaticComplexity":1,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:vi.mocked(serverStore.getActiveBaseUrl).mockReturnValue",{"id":"external:vi.mocked(serverStore.getActiveBaseUrl).mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(serverStore.getActiveBaseUrl).mockReturnValue"}}],["external:vi.mocked(serverStore.getActiveToken).mockReturnValue",{"id":"external:vi.mocked(serverStore.getActiveToken).mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(serverStore.getActiveToken).mockReturnValue"}}],["external:expect((await getSttSettings()).apiKeyConfigured).toBe",{"id":"external:expect((await getSttSettings()).apiKeyConfigured).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect((await getSttSettings()).apiKeyConfigured).toBe"}}],["symbol-name:getSttSettings",{"id":"symbol-name:getSttSettings","kind":"symbol","language":"jsts","symbolName":"getSttSettings","metadata":{"unresolvedName":"getSttSettings"}}],["external:expect(updated.language).toBe",{"id":"external:expect(updated.language).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(updated.language).toBe"}}],["external:expect(fetchMock).toHaveBeenCalledWith",{"id":"external:expect(fetchMock).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(fetchMock).toHaveBeenCalledWith"}}],["external:expect(result.text).toBe",{"id":"external:expect(result.text).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.text).toBe"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/stt.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/stt.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/stt.ts","metadata":{"lineCount":37,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:getSttSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:getSttSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","symbolName":"getSttSettings","symbolKind":"function","exported":true,"metadata":{"line":5,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:updateSttSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:updateSttSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","symbolName":"updateSttSettings","symbolKind":"function","exported":true,"metadata":{"line":9,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:buildUploadHeaders",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:buildUploadHeaders","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","symbolName":"buildUploadHeaders","symbolKind":"function","exported":false,"metadata":{"line":13,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:transcribeAudio",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:transcribeAudio","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","symbolName":"transcribeAudio","symbolKind":"function","exported":true,"metadata":{"line":28,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:buildUploadHeaders",{"id":"symbol-name:buildUploadHeaders","kind":"symbol","language":"jsts","symbolName":"buildUploadHeaders","metadata":{"unresolvedName":"buildUploadHeaders"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:buildTodoId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:buildTodoId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","symbolName":"buildTodoId","symbolKind":"function","exported":false,"metadata":{"line":9,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:String(todo.content ?? '').slice",{"id":"external:String(todo.content ?? '').slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"String(todo.content ?? '').slice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:isTodoStatus",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:isTodoStatus","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","symbolName":"isTodoStatus","symbolKind":"function","exported":false,"metadata":{"line":16,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:isTodoPriority",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:isTodoPriority","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","symbolName":"isTodoPriority","symbolKind":"function","exported":false,"metadata":{"line":20,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoStatus",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoStatus","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","symbolName":"normalizeTodoStatus","symbolKind":"function","exported":false,"metadata":{"line":24,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:isTodoStatus",{"id":"symbol-name:isTodoStatus","kind":"symbol","language":"jsts","symbolName":"isTodoStatus","metadata":{"unresolvedName":"isTodoStatus"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoPriority",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoPriority","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","symbolName":"normalizeTodoPriority","symbolKind":"function","exported":false,"metadata":{"line":28,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:isTodoPriority",{"id":"symbol-name:isTodoPriority","kind":"symbol","language":"jsts","symbolName":"isTodoPriority","metadata":{"unresolvedName":"isTodoPriority"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoItems",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoItems","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","symbolName":"normalizeTodoItems","symbolKind":"function","exported":true,"metadata":{"line":32,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:(todos ?? []).map",{"id":"external:(todos ?? []).map","kind":"external","language":"jsts","metadata":{"unresolvedName":"(todos ?? []).map"}}],["symbol-name:buildTodoId",{"id":"symbol-name:buildTodoId","kind":"symbol","language":"jsts","symbolName":"buildTodoId","metadata":{"unresolvedName":"buildTodoId"}}],["symbol-name:normalizeTodoStatus",{"id":"symbol-name:normalizeTodoStatus","kind":"symbol","language":"jsts","symbolName":"normalizeTodoStatus","metadata":{"unresolvedName":"normalizeTodoStatus"}}],["symbol-name:normalizeTodoPriority",{"id":"symbol-name:normalizeTodoPriority","kind":"symbol","language":"jsts","symbolName":"normalizeTodoPriority","metadata":{"unresolvedName":"normalizeTodoPriority"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts","metadata":{"lineCount":33,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/tool.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/tool.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/tool.ts","metadata":{"lineCount":10,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts:getToolIds",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts:getToolIds","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts","symbolName":"getToolIds","symbolKind":"function","exported":true,"metadata":{"line":11,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts:getTools",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts:getTools","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts","symbolName":"getTools","symbolKind":"function","exported":true,"metadata":{"line":24,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts","metadata":{"lineCount":39,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/tts.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/tts.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/tts.ts","metadata":{"lineCount":29,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:getTtsSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:getTtsSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts","symbolName":"getTtsSettings","symbolKind":"function","exported":true,"metadata":{"line":5,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:updateTtsSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:updateTtsSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts","symbolName":"updateTtsSettings","symbolKind":"function","exported":true,"metadata":{"line":9,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:buildSpeechHeaders",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:buildSpeechHeaders","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts","symbolName":"buildSpeechHeaders","symbolKind":"function","exported":false,"metadata":{"line":13,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:synthesizeSpeech",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:synthesizeSpeech","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts","symbolName":"synthesizeSpeech","symbolKind":"function","exported":true,"metadata":{"line":26,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:buildSpeechHeaders",{"id":"symbol-name:buildSpeechHeaders","kind":"symbol","language":"jsts","symbolName":"buildSpeechHeaders","metadata":{"unresolvedName":"buildSpeechHeaders"}}],["external:response.blob",{"id":"external:response.blob","kind":"external","language":"jsts","metadata":{"unresolvedName":"response.blob"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/ui.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/ui.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/ui.ts","metadata":{"lineCount":110,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts","metadata":{"lineCount":62,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","metadata":{"lineCount":90,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":40,"column":38,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:vi.mocked(piClient.get)\n .mockResolvedValueOnce",{"id":"external:vi.mocked(piClient.get)\n .mockResolvedValueOnce","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(piClient.get)\n .mockResolvedValueOnce"}}],["symbol-name:getVcsStatus",{"id":"symbol-name:getVcsStatus","kind":"symbol","language":"jsts","symbolName":"getVcsStatus","metadata":{"unresolvedName":"getVcsStatus"}}],["symbol-name:getVcsBranches",{"id":"symbol-name:getVcsBranches","kind":"symbol","language":"jsts","symbolName":"getVcsBranches","metadata":{"unresolvedName":"getVcsBranches"}}],["external:expect(piClient.get).toHaveBeenNthCalledWith",{"id":"external:expect(piClient.get).toHaveBeenNthCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(piClient.get).toHaveBeenNthCalledWith"}}],["external:expect(piClient.post).toHaveBeenNthCalledWith",{"id":"external:expect(piClient.post).toHaveBeenNthCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(piClient.post).toHaveBeenNthCalledWith"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/vcs.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/vcs.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/vcs.ts","metadata":{"lineCount":61,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:directoryQuery",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:directoryQuery","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","symbolName":"directoryQuery","symbolKind":"function","exported":false,"metadata":{"line":20,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsInfo",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsInfo","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","symbolName":"getVcsInfo","symbolKind":"function","exported":true,"metadata":{"line":27,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:directoryQuery",{"id":"symbol-name:directoryQuery","kind":"symbol","language":"jsts","symbolName":"directoryQuery","metadata":{"unresolvedName":"directoryQuery"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsDiff",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsDiff","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","symbolName":"getVcsDiff","symbolKind":"function","exported":true,"metadata":{"line":39,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsStatus",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsStatus","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","symbolName":"getVcsStatus","symbolKind":"function","exported":true,"metadata":{"line":49,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsBranches",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsBranches","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","symbolName":"getVcsBranches","symbolKind":"function","exported":true,"metadata":{"line":53,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:checkoutGitBranch",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:checkoutGitBranch","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","symbolName":"checkoutGitBranch","symbolKind":"function","exported":true,"metadata":{"line":57,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:createGitBranch",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:createGitBranch","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","symbolName":"createGitBranch","symbolKind":"function","exported":true,"metadata":{"line":64,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:stageGitPaths",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:stageGitPaths","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","symbolName":"stageGitPaths","symbolKind":"function","exported":true,"metadata":{"line":68,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:unstageGitPaths",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:unstageGitPaths","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","symbolName":"unstageGitPaths","symbolKind":"function","exported":true,"metadata":{"line":72,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:commitGitChanges",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:commitGitChanges","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","symbolName":"commitGitChanges","symbolKind":"function","exported":true,"metadata":{"line":76,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:pullGitBranch",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:pullGitBranch","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","symbolName":"pullGitBranch","symbolKind":"function","exported":true,"metadata":{"line":83,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:pushGitBranch",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:pushGitBranch","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","symbolName":"pushGitBranch","symbolKind":"function","exported":true,"metadata":{"line":87,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts","metadata":{"lineCount":35,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/worktree.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/worktree.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/worktree.ts","metadata":{"lineCount":20,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:listWorktrees",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:listWorktrees","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts","symbolName":"listWorktrees","symbolKind":"function","exported":true,"metadata":{"line":11,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:createWorktree",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:createWorktree","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts","symbolName":"createWorktree","symbolKind":"function","exported":true,"metadata":{"line":18,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:removeWorktree",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:removeWorktree","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts","symbolName":"removeWorktree","symbolKind":"function","exported":true,"metadata":{"line":25,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:resetWorktree",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:resetWorktree","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts","symbolName":"resetWorktree","symbolKind":"function","exported":true,"metadata":{"line":32,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","metadata":{"lineCount":632,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:react",{"id":"external:react","kind":"external","language":"jsts","metadata":{"source":"react"}}],["external:react-i18next",{"id":"external:react-i18next","kind":"external","language":"jsts","metadata":{"source":"react-i18next"}}],["external:@tauri-apps/api/core",{"id":"external:@tauri-apps/api/core","kind":"external","language":"jsts","metadata":{"source":"@tauri-apps/api/core"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat"}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","metadata":{"lineCount":911,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","metadata":{"lineCount":206,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","metadata":{"lineCount":308,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","metadata":{"lineCount":219,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","metadata":{"lineCount":270,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","metadata":{"lineCount":325,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","metadata":{"lineCount":191,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks"}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","metadata":{"lineCount":78,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","metadata":{"lineCount":51,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","metadata":{"lineCount":47,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","metadata":{"lineCount":144,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","metadata":{"lineCount":790,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store"}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","metadata":{"lineCount":372,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils"}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","metadata":{"lineCount":74,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","metadata":{"lineCount":1294,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","metadata":{"lineCount":431,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","symbolName":"App","symbolKind":"function","exported":false,"metadata":{"line":50,"column":1,"cyclomaticComplexity":54,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useTranslation",{"id":"symbol-name:useTranslation","kind":"symbol","language":"jsts","symbolName":"useTranslation","metadata":{"unresolvedName":"useTranslation"}}],["symbol-name:useRouter",{"id":"symbol-name:useRouter","kind":"symbol","language":"jsts","symbolName":"useRouter","metadata":{"unresolvedName":"useRouter"}}],["symbol-name:useDirectory",{"id":"symbol-name:useDirectory","kind":"symbol","language":"jsts","symbolName":"useDirectory","metadata":{"unresolvedName":"useDirectory"}}],["symbol-name:useLayoutStore",{"id":"symbol-name:useLayoutStore","kind":"symbol","language":"jsts","symbolName":"useLayoutStore","metadata":{"unresolvedName":"useLayoutStore"}}],["symbol-name:useChatViewportController",{"id":"symbol-name:useChatViewportController","kind":"symbol","language":"jsts","symbolName":"useChatViewportController","metadata":{"unresolvedName":"useChatViewportController"}}],["symbol-name:canUseSplitPane",{"id":"symbol-name:canUseSplitPane","kind":"symbol","language":"jsts","symbolName":"canUseSplitPane","metadata":{"unresolvedName":"canUseSplitPane"}}],["symbol-name:usePaneLayout",{"id":"symbol-name:usePaneLayout","kind":"symbol","language":"jsts","symbolName":"usePaneLayout","metadata":{"unresolvedName":"usePaneLayout"}}],["symbol-name:usePaneController",{"id":"symbol-name:usePaneController","kind":"symbol","language":"jsts","symbolName":"usePaneController","metadata":{"unresolvedName":"usePaneController"}}],["symbol-name:usePaneControllers",{"id":"symbol-name:usePaneControllers","kind":"symbol","language":"jsts","symbolName":"usePaneControllers","metadata":{"unresolvedName":"usePaneControllers"}}],["symbol-name:useRef",{"id":"symbol-name:useRef","kind":"symbol","language":"jsts","symbolName":"useRef","metadata":{"unresolvedName":"useRef"}}],["symbol-name:useEffect",{"id":"symbol-name:useEffect","kind":"symbol","language":"jsts","symbolName":"useEffect","metadata":{"unresolvedName":"useEffect"}}],["symbol-name:initNotificationSound",{"id":"symbol-name:initNotificationSound","kind":"symbol","language":"jsts","symbolName":"initNotificationSound","metadata":{"unresolvedName":"initNotificationSound"}}],["symbol-name:isTauriMobile",{"id":"symbol-name:isTauriMobile","kind":"symbol","language":"jsts","symbolName":"isTauriMobile","metadata":{"unresolvedName":"isTauriMobile"}}],["external:invoke('desktop_window_ready').catch",{"id":"external:invoke('desktop_window_ready').catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"invoke('desktop_window_ready').catch"}}],["external:updateStore.checkForUpdates",{"id":"external:updateStore.checkForUpdates","kind":"external","language":"jsts","metadata":{"unresolvedName":"updateStore.checkForUpdates"}}],["symbol-name:useViewportHeight",{"id":"symbol-name:useViewportHeight","kind":"symbol","language":"jsts","symbolName":"useViewportHeight","metadata":{"unresolvedName":"useViewportHeight"}}],["symbol-name:useWakeLock",{"id":"symbol-name:useWakeLock","kind":"symbol","language":"jsts","symbolName":"useWakeLock","metadata":{"unresolvedName":"useWakeLock"}}],["symbol-name:useMemo",{"id":"symbol-name:useMemo","kind":"symbol","language":"jsts","symbolName":"useMemo","metadata":{"unresolvedName":"useMemo"}}],["symbol-name:collectActiveDirectories",{"id":"symbol-name:collectActiveDirectories","kind":"symbol","language":"jsts","symbolName":"collectActiveDirectories","metadata":{"unresolvedName":"collectActiveDirectories"}}],["external:paneControllers\r\n .map",{"id":"external:paneControllers\r\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneControllers\r\n .map"}}],["external:savedDirectories.map",{"id":"external:savedDirectories.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"savedDirectories.map"}}],["symbol-name:useGlobalEvents",{"id":"symbol-name:useGlobalEvents","kind":"symbol","language":"jsts","symbolName":"useGlobalEvents","metadata":{"unresolvedName":"useGlobalEvents"}}],["external:paneLayoutStore.getFocusedSessionId",{"id":"external:paneLayoutStore.getFocusedSessionId","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneLayoutStore.getFocusedSessionId"}}],["external:paneLayoutStore.setFocusedSession",{"id":"external:paneLayoutStore.setFocusedSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneLayoutStore.setFocusedSession"}}],["symbol-name:isSameDirectory",{"id":"symbol-name:isSameDirectory","kind":"symbol","language":"jsts","symbolName":"isSameDirectory","metadata":{"unresolvedName":"isSameDirectory"}}],["symbol-name:replaceSession",{"id":"symbol-name:replaceSession","kind":"symbol","language":"jsts","symbolName":"replaceSession","metadata":{"unresolvedName":"replaceSession"}}],["symbol-name:useCallback",{"id":"symbol-name:useCallback","kind":"symbol","language":"jsts","symbolName":"useCallback","metadata":{"unresolvedName":"useCallback"}}],["external:paneLayoutStore.focusPane",{"id":"external:paneLayoutStore.focusPane","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneLayoutStore.focusPane"}}],["external:paneLayoutStore.setPaneSession",{"id":"external:paneLayoutStore.setPaneSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneLayoutStore.setPaneSession"}}],["symbol-name:navigateRouteToSession",{"id":"symbol-name:navigateRouteToSession","kind":"symbol","language":"jsts","symbolName":"navigateRouteToSession","metadata":{"unresolvedName":"navigateRouteToSession"}}],["symbol-name:navigateRouteHome",{"id":"symbol-name:navigateRouteHome","kind":"symbol","language":"jsts","symbolName":"navigateRouteHome","metadata":{"unresolvedName":"navigateRouteHome"}}],["external:paneLayoutStore.getFocusedPaneId",{"id":"external:paneLayoutStore.getFocusedPaneId","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneLayoutStore.getFocusedPaneId"}}],["symbol-name:navigatePaneToSession",{"id":"symbol-name:navigatePaneToSession","kind":"symbol","language":"jsts","symbolName":"navigatePaneToSession","metadata":{"unresolvedName":"navigatePaneToSession"}}],["symbol-name:navigatePaneHome",{"id":"symbol-name:navigatePaneHome","kind":"symbol","language":"jsts","symbolName":"navigatePaneHome","metadata":{"unresolvedName":"navigatePaneHome"}}],["external:paneLayoutStore.enterSplitMode",{"id":"external:paneLayoutStore.enterSplitMode","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneLayoutStore.enterSplitMode"}}],["external:paneLayoutStore.togglePaneFullscreen",{"id":"external:paneLayoutStore.togglePaneFullscreen","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneLayoutStore.togglePaneFullscreen"}}],["symbol-name:setSidebarExpanded",{"id":"symbol-name:setSidebarExpanded","kind":"symbol","language":"jsts","symbolName":"setSidebarExpanded","metadata":{"unresolvedName":"setSidebarExpanded"}}],["symbol-name:useState",{"id":"symbol-name:useState","kind":"symbol","language":"jsts","symbolName":"useState","metadata":{"unresolvedName":"useState"}}],["symbol-name:setSettingsInitialTab",{"id":"symbol-name:setSettingsInitialTab","kind":"symbol","language":"jsts","symbolName":"setSettingsInitialTab","metadata":{"unresolvedName":"setSettingsInitialTab"}}],["symbol-name:setSettingsDialogOpen",{"id":"symbol-name:setSettingsDialogOpen","kind":"symbol","language":"jsts","symbolName":"setSettingsDialogOpen","metadata":{"unresolvedName":"setSettingsDialogOpen"}}],["symbol-name:openSettingsTab",{"id":"symbol-name:openSettingsTab","kind":"symbol","language":"jsts","symbolName":"openSettingsTab","metadata":{"unresolvedName":"openSettingsTab"}}],["symbol-name:setProjectDialogOpen",{"id":"symbol-name:setProjectDialogOpen","kind":"symbol","language":"jsts","symbolName":"setProjectDialogOpen","metadata":{"unresolvedName":"setProjectDialogOpen"}}],["symbol-name:openProject",{"id":"symbol-name:openProject","kind":"symbol","language":"jsts","symbolName":"openProject","metadata":{"unresolvedName":"openProject"}}],["symbol-name:openSettings",{"id":"symbol-name:openSettings","kind":"symbol","language":"jsts","symbolName":"openSettings","metadata":{"unresolvedName":"openSettings"}}],["symbol-name:createPtySession",{"id":"symbol-name:createPtySession","kind":"symbol","language":"jsts","symbolName":"createPtySession","metadata":{"unresolvedName":"createPtySession"}}],["symbol-name:t",{"id":"symbol-name:t","kind":"symbol","language":"jsts","symbolName":"t","metadata":{"unresolvedName":"t"}}],["external:layoutStore.addTerminalTab",{"id":"external:layoutStore.addTerminalTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.addTerminalTab"}}],["symbol-name:uiErrorHandler",{"id":"symbol-name:uiErrorHandler","kind":"symbol","language":"jsts","symbolName":"uiErrorHandler","metadata":{"unresolvedName":"uiErrorHandler"}}],["symbol-name:setCommandPaletteOpen",{"id":"symbol-name:setCommandPaletteOpen","kind":"symbol","language":"jsts","symbolName":"setCommandPaletteOpen","metadata":{"unresolvedName":"setCommandPaletteOpen"}}],["external:layoutStore.toggleRightPanel",{"id":"external:layoutStore.toggleRightPanel","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.toggleRightPanel"}}],["external:document.querySelector",{"id":"external:document.querySelector","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.querySelector"}}],["external:input?.focus",{"id":"external:input?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"input?.focus"}}],["external:focusedController?.newSession",{"id":"external:focusedController?.newSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"focusedController?.newSession"}}],["external:focusedController?.archiveSession",{"id":"external:focusedController?.archiveSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"focusedController?.archiveSession"}}],["external:focusedController?.previousSession",{"id":"external:focusedController?.previousSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"focusedController?.previousSession"}}],["external:focusedController?.nextSession",{"id":"external:focusedController?.nextSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"focusedController?.nextSession"}}],["external:layoutStore.toggleBottomPanel",{"id":"external:layoutStore.toggleBottomPanel","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.toggleBottomPanel"}}],["external:focusedController?.openModelSelector",{"id":"external:focusedController?.openModelSelector","kind":"external","language":"jsts","metadata":{"unresolvedName":"focusedController?.openModelSelector"}}],["external:focusedController?.toggleAgent",{"id":"external:focusedController?.toggleAgent","kind":"external","language":"jsts","metadata":{"unresolvedName":"focusedController?.toggleAgent"}}],["external:focusedController?.cancelMessage",{"id":"external:focusedController?.cancelMessage","kind":"external","language":"jsts","metadata":{"unresolvedName":"focusedController?.cancelMessage"}}],["external:focusedController?.copyLastResponse",{"id":"external:focusedController?.copyLastResponse","kind":"external","language":"jsts","metadata":{"unresolvedName":"focusedController?.copyLastResponse"}}],["external:focusedController?.toggleFullAuto",{"id":"external:focusedController?.toggleFullAuto","kind":"external","language":"jsts","metadata":{"unresolvedName":"focusedController?.toggleFullAuto"}}],["external:paneLayoutStore.focusNextPane",{"id":"external:paneLayoutStore.focusNextPane","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneLayoutStore.focusNextPane"}}],["symbol-name:requestAnimationFrame",{"id":"symbol-name:requestAnimationFrame","kind":"symbol","language":"jsts","symbolName":"requestAnimationFrame","metadata":{"unresolvedName":"requestAnimationFrame"}}],["external:paneLayoutStore.focusPrevPane",{"id":"external:paneLayoutStore.focusPrevPane","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneLayoutStore.focusPrevPane"}}],["external:paneLayoutStore.splitPane",{"id":"external:paneLayoutStore.splitPane","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneLayoutStore.splitPane"}}],["external:paneLayoutStore.closePane",{"id":"external:paneLayoutStore.closePane","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneLayoutStore.closePane"}}],["symbol-name:handleToggleFocusedPaneFullscreen",{"id":"symbol-name:handleToggleFocusedPaneFullscreen","kind":"symbol","language":"jsts","symbolName":"handleToggleFocusedPaneFullscreen","metadata":{"unresolvedName":"handleToggleFocusedPaneFullscreen"}}],["symbol-name:useGlobalKeybindings",{"id":"symbol-name:useGlobalKeybindings","kind":"symbol","language":"jsts","symbolName":"useGlobalKeybindings","metadata":{"unresolvedName":"useGlobalKeybindings"}}],["external:keybindingStore.getKey",{"id":"external:keybindingStore.getKey","kind":"external","language":"jsts","metadata":{"unresolvedName":"keybindingStore.getKey"}}],["symbol-name:getShortcut",{"id":"symbol-name:getShortcut","kind":"symbol","language":"jsts","symbolName":"getShortcut","metadata":{"unresolvedName":"getShortcut"}}],["symbol-name:useCloseServiceDialog",{"id":"symbol-name:useCloseServiceDialog","kind":"symbol","language":"jsts","symbolName":"useCloseServiceDialog","metadata":{"unresolvedName":"useCloseServiceDialog"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":347,"column":43,"cyclomaticComplexity":11,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusInput",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusInput","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","symbolName":"focusInput","symbolKind":"function","exported":false,"metadata":{"line":279,"column":19,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusNextPane",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusNextPane","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","symbolName":"focusNextPane","symbolKind":"function","exported":false,"metadata":{"line":295,"column":22,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusPrevPane",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusPrevPane","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","symbolName":"focusPrevPane","symbolKind":"function","exported":false,"metadata":{"line":305,"column":22,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:splitRight",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:splitRight","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","symbolName":"splitRight","symbolKind":"function","exported":false,"metadata":{"line":315,"column":19,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:splitDown",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:splitDown","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","symbolName":"splitDown","symbolKind":"function","exported":false,"metadata":{"line":319,"column":18,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:closePane",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:closePane","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","symbolName":"closePane","symbolKind":"function","exported":false,"metadata":{"line":323,"column":18,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:togglePaneFullscreen",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:togglePaneFullscreen","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","symbolName":"togglePaneFullscreen","symbolKind":"function","exported":false,"metadata":{"line":327,"column":29,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","symbolName":"action","symbolKind":"function","exported":false,"metadata":{"line":542,"column":17,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","metadata":{"lineCount":213,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","metadata":{"lineCount":714,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","metadata":{"lineCount":302,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/logger.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/logger.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/logger.ts","metadata":{"lineCount":23,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:PanelFallback",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:PanelFallback","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","symbolName":"PanelFallback","symbolKind":"function","exported":false,"metadata":{"line":26,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":306,"column":29,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useMessageStore",{"id":"symbol-name:useMessageStore","kind":"symbol","language":"jsts","symbolName":"useMessageStore","metadata":{"unresolvedName":"useMessageStore"}}],["symbol-name:useChatViewport",{"id":"symbol-name:useChatViewport","kind":"symbol","language":"jsts","symbolName":"useChatViewport","metadata":{"unresolvedName":"useChatViewport"}}],["symbol-name:normalizeToForwardSlash",{"id":"symbol-name:normalizeToForwardSlash","kind":"symbol","language":"jsts","symbolName":"normalizeToForwardSlash","metadata":{"unresolvedName":"normalizeToForwardSlash"}}],["external:layoutStore.setCurrentTerminalDirectory",{"id":"external:layoutStore.setCurrentTerminalDirectory","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.setCurrentTerminalDirectory"}}],["symbol-name:setIsPanelResizing",{"id":"symbol-name:setIsPanelResizing","kind":"symbol","language":"jsts","symbolName":"setIsPanelResizing","metadata":{"unresolvedName":"setIsPanelResizing"}}],["symbol-name:setIsRestoring",{"id":"symbol-name:setIsRestoring","kind":"symbol","language":"jsts","symbolName":"setIsRestoring","metadata":{"unresolvedName":"setIsRestoring"}}],["symbol-name:listPtySessions",{"id":"symbol-name:listPtySessions","kind":"symbol","language":"jsts","symbolName":"listPtySessions","metadata":{"unresolvedName":"listPtySessions"}}],["external:logger.log",{"id":"external:logger.log","kind":"external","language":"jsts","metadata":{"unresolvedName":"logger.log"}}],["external:layoutStore.syncTerminalSessions",{"id":"external:layoutStore.syncTerminalSessions","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.syncTerminalSessions"}}],["external:sessions.map",{"id":"external:sessions.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessions.map"}}],["symbol-name:restoreSessions",{"id":"symbol-name:restoreSessions","kind":"symbol","language":"jsts","symbolName":"restoreSessions","metadata":{"unresolvedName":"restoreSessions"}}],["symbol-name:removePtySession",{"id":"symbol-name:removePtySession","kind":"symbol","language":"jsts","symbolName":"removePtySession","metadata":{"unresolvedName":"removePtySession"}}],["external:layoutStore.setBottomPanelHeight",{"id":"external:layoutStore.setBottomPanelHeight","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.setBottomPanelHeight"}}],["external:layoutStore.closeBottomPanel",{"id":"external:layoutStore.closeBottomPanel","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.closeBottomPanel"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:restoreSessions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:restoreSessions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","symbolName":"restoreSessions","symbolKind":"function","exported":false,"metadata":{"line":72,"column":29,"cyclomaticComplexity":6,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:panelTabs.filter",{"id":"external:panelTabs.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"panelTabs.filter"}}],["external:terminalTabs.map",{"id":"external:terminalTabs.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"terminalTabs.map"}}],["external:fileTabs.map",{"id":"external:fileTabs.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"fileTabs.map"}}],["external:changeTabs.map",{"id":"external:changeTabs.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"changeTabs.map"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CircularProgress.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CircularProgress.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CircularProgress.tsx","metadata":{"lineCount":64,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CircularProgress.tsx:CircularProgress",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CircularProgress.tsx:CircularProgress","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CircularProgress.tsx","symbolName":"CircularProgress","symbolKind":"function","exported":true,"metadata":{"line":20,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:Math.max",{"id":"external:Math.max","kind":"external","language":"jsts","metadata":{"unresolvedName":"Math.max"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx","metadata":{"lineCount":68,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","metadata":{"lineCount":382,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx","metadata":{"lineCount":56,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx:CloseServiceDialog",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx:CloseServiceDialog","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx","symbolName":"CloseServiceDialog","symbolKind":"function","exported":true,"metadata":{"line":18,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setClosing",{"id":"symbol-name:setClosing","kind":"symbol","language":"jsts","symbolName":"setClosing","metadata":{"unresolvedName":"setClosing"}}],["symbol-name:onConfirm",{"id":"symbol-name:onConfirm","kind":"symbol","language":"jsts","symbolName":"onConfirm","metadata":{"unresolvedName":"onConfirm"}}],["symbol-name:handleConfirm",{"id":"symbol-name:handleConfirm","kind":"symbol","language":"jsts","symbolName":"handleConfirm","metadata":{"unresolvedName":"handleConfirm"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx:handleConfirm",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx:handleConfirm","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx","symbolName":"handleConfirm","symbolKind":"function","exported":false,"metadata":{"line":22,"column":25,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx","metadata":{"lineCount":61,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:@testing-library/react",{"id":"external:@testing-library/react","kind":"external","language":"jsts","metadata":{"source":"@testing-library/react"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx","metadata":{"lineCount":157,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":52,"column":52,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:useIsMobileMock.mockReset",{"id":"external:useIsMobileMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"useIsMobileMock.mockReset"}}],["external:useIsMobileMock.mockReturnValue",{"id":"external:useIsMobileMock.mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"useIsMobileMock.mockReturnValue"}}],["symbol-name:render",{"id":"symbol-name:render","kind":"symbol","language":"jsts","symbolName":"render","metadata":{"unresolvedName":"render"}}],["external:expect(container.firstChild).toHaveAttribute",{"id":"external:expect(container.firstChild).toHaveAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(container.firstChild).toHaveAttribute"}}],["external:screen.getByRole",{"id":"external:screen.getByRole","kind":"external","language":"jsts","metadata":{"unresolvedName":"screen.getByRole"}}],["external:expect(container.firstChild).not.toHaveAttribute",{"id":"external:expect(container.firstChild).not.toHaveAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(container.firstChild).not.toHaveAttribute"}}],["external:expect(screen.getByText('ts')).toBeInTheDocument",{"id":"external:expect(screen.getByText('ts')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('ts')).toBeInTheDocument"}}],["external:screen.getByText",{"id":"external:screen.getByText","kind":"external","language":"jsts","metadata":{"unresolvedName":"screen.getByText"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts","metadata":{"lineCount":23,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","metadata":{"lineCount":510,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","metadata":{"lineCount":956,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui"}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts","metadata":{"lineCount":43,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":77,"column":5,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useSyncExternalStore",{"id":"symbol-name:useSyncExternalStore","kind":"symbol","language":"jsts","symbolName":"useSyncExternalStore","metadata":{"unresolvedName":"useSyncExternalStore"}}],["symbol-name:useIsMobile",{"id":"symbol-name:useIsMobile","kind":"symbol","language":"jsts","symbolName":"useIsMobile","metadata":{"unresolvedName":"useIsMobile"}}],["symbol-name:useInView",{"id":"symbol-name:useInView","kind":"symbol","language":"jsts","symbolName":"useInView","metadata":{"unresolvedName":"useInView"}}],["external:code.includes",{"id":"external:code.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"code.includes"}}],["symbol-name:useSyntaxHighlight",{"id":"symbol-name:useSyntaxHighlight","kind":"symbol","language":"jsts","symbolName":"useSyntaxHighlight","metadata":{"unresolvedName":"useSyntaxHighlight"}}],["external:HIDDEN_LANGS.has",{"id":"external:HIDDEN_LANGS.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"HIDDEN_LANGS.has"}}],["external:language.toLowerCase",{"id":"external:language.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"language.toLowerCase"}}],["external:event.target.closest",{"id":"external:event.target.closest","kind":"external","language":"jsts","metadata":{"unresolvedName":"event.target.closest"}}],["external:event.currentTarget.focus",{"id":"external:event.currentTarget.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"event.currentTarget.focus"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","metadata":{"lineCount":87,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:@codemirror/state",{"id":"external:@codemirror/state","kind":"external","language":"jsts","metadata":{"source":"@codemirror/state"}}],["external:@codemirror/search",{"id":"external:@codemirror/search","kind":"external","language":"jsts","metadata":{"source":"@codemirror/search"}}],["external:@codemirror/view",{"id":"external:@codemirror/view","kind":"external","language":"jsts","metadata":{"source":"@codemirror/view"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","metadata":{"lineCount":268,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts","metadata":{"lineCount":15,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:CodeMirrorReadonly",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:CodeMirrorReadonly","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","symbolName":"CodeMirrorReadonly","symbolKind":"function","exported":true,"metadata":{"line":22,"column":1,"cyclomaticComplexity":11,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getLineNumberColumnWidth",{"id":"symbol-name:getLineNumberColumnWidth","kind":"symbol","language":"jsts","symbolName":"getLineNumberColumnWidth","metadata":{"unresolvedName":"getLineNumberColumnWidth"}}],["symbol-name:getLineCount",{"id":"symbol-name:getLineCount","kind":"symbol","language":"jsts","symbolName":"getLineCount","metadata":{"unresolvedName":"getLineCount"}}],["symbol-name:createReadonlyCodeMirrorExtensions",{"id":"symbol-name:createReadonlyCodeMirrorExtensions","kind":"symbol","language":"jsts","symbolName":"createReadonlyCodeMirrorExtensions","metadata":{"unresolvedName":"createReadonlyCodeMirrorExtensions"}}],["external:EditorState.create",{"id":"external:EditorState.create","kind":"external","language":"jsts","metadata":{"unresolvedName":"EditorState.create"}}],["symbol-name:dispatchShikiTokens",{"id":"symbol-name:dispatchShikiTokens","kind":"symbol","language":"jsts","symbolName":"dispatchShikiTokens","metadata":{"unresolvedName":"dispatchShikiTokens"}}],["external:view.destroy",{"id":"external:view.destroy","kind":"external","language":"jsts","metadata":{"unresolvedName":"view.destroy"}}],["external:event.key.toLowerCase",{"id":"external:event.key.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"event.key.toLowerCase"}}],["external:event.preventDefault",{"id":"external:event.preventDefault","kind":"external","language":"jsts","metadata":{"unresolvedName":"event.preventDefault"}}],["symbol-name:openSearchPanel",{"id":"symbol-name:openSearchPanel","kind":"symbol","language":"jsts","symbolName":"openSearchPanel","metadata":{"unresolvedName":"openSearchPanel"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":68,"column":44,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:@codemirror/commands",{"id":"external:@codemirror/commands","kind":"external","language":"jsts","metadata":{"source":"@codemirror/commands"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:codeLineHeight",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:codeLineHeight","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","symbolName":"codeLineHeight","symbolKind":"function","exported":true,"metadata":{"line":27,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createReadonlyCodeMirrorExtensions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createReadonlyCodeMirrorExtensions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","symbolName":"createReadonlyCodeMirrorExtensions","symbolKind":"function","exported":true,"metadata":{"line":31,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:EditorState.readOnly.of",{"id":"external:EditorState.readOnly.of","kind":"external","language":"jsts","metadata":{"unresolvedName":"EditorState.readOnly.of"}}],["symbol-name:highlightActiveLineGutter",{"id":"symbol-name:highlightActiveLineGutter","kind":"symbol","language":"jsts","symbolName":"highlightActiveLineGutter","metadata":{"unresolvedName":"highlightActiveLineGutter"}}],["symbol-name:drawSelection",{"id":"symbol-name:drawSelection","kind":"symbol","language":"jsts","symbolName":"drawSelection","metadata":{"unresolvedName":"drawSelection"}}],["external:keymap.of",{"id":"external:keymap.of","kind":"external","language":"jsts","metadata":{"unresolvedName":"keymap.of"}}],["symbol-name:search",{"id":"symbol-name:search","kind":"symbol","language":"jsts","symbolName":"search","metadata":{"unresolvedName":"search"}}],["symbol-name:highlightSelectionMatches",{"id":"symbol-name:highlightSelectionMatches","kind":"symbol","language":"jsts","symbolName":"highlightSelectionMatches","metadata":{"unresolvedName":"highlightSelectionMatches"}}],["symbol-name:readonlyCodeMirrorTheme",{"id":"symbol-name:readonlyCodeMirrorTheme","kind":"symbol","language":"jsts","symbolName":"readonlyCodeMirrorTheme","metadata":{"unresolvedName":"readonlyCodeMirrorTheme"}}],["external:extensions.unshift",{"id":"external:extensions.unshift","kind":"external","language":"jsts","metadata":{"unresolvedName":"extensions.unshift"}}],["symbol-name:lineNumbers",{"id":"symbol-name:lineNumbers","kind":"symbol","language":"jsts","symbolName":"lineNumbers","metadata":{"unresolvedName":"lineNumbers"}}],["external:extensions.push",{"id":"external:extensions.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"extensions.push"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:dispatchShikiTokens",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:dispatchShikiTokens","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","symbolName":"dispatchShikiTokens","symbolKind":"function","exported":true,"metadata":{"line":64,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:view.dispatch",{"id":"external:view.dispatch","kind":"external","language":"jsts","metadata":{"unresolvedName":"view.dispatch"}}],["external:setShikiTokensEffect.of",{"id":"external:setShikiTokensEffect.of","kind":"external","language":"jsts","metadata":{"unresolvedName":"setShikiTokensEffect.of"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:update",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:update","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","symbolName":"update","symbolKind":"function","exported":false,"metadata":{"line":72,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:effect.is",{"id":"external:effect.is","kind":"external","language":"jsts","metadata":{"unresolvedName":"effect.is"}}],["symbol-name:buildShikiDecorations",{"id":"symbol-name:buildShikiDecorations","kind":"symbol","language":"jsts","symbolName":"buildShikiDecorations","metadata":{"unresolvedName":"buildShikiDecorations"}}],["external:decorations.map",{"id":"external:decorations.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"decorations.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:buildShikiDecorations",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:buildShikiDecorations","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","symbolName":"buildShikiDecorations","symbolKind":"function","exported":false,"metadata":{"line":81,"column":1,"cyclomaticComplexity":8,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:state.doc.line",{"id":"external:state.doc.line","kind":"external","language":"jsts","metadata":{"unresolvedName":"state.doc.line"}}],["external:ranges.push",{"id":"external:ranges.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"ranges.push"}}],["external:Decoration.mark({ attributes: { style: `color: ${token.color}` } }).range",{"id":"external:Decoration.mark({ attributes: { style: `color: ${token.color}` } }).range","kind":"external","language":"jsts","metadata":{"unresolvedName":"Decoration.mark({ attributes: { style: `color: ${token.color}` } }).range"}}],["external:Decoration.mark",{"id":"external:Decoration.mark","kind":"external","language":"jsts","metadata":{"unresolvedName":"Decoration.mark"}}],["external:Decoration.set",{"id":"external:Decoration.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"Decoration.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:readonlyCodeMirrorTheme",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:readonlyCodeMirrorTheme","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","symbolName":"readonlyCodeMirrorTheme","symbolKind":"function","exported":false,"metadata":{"line":101,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:EditorView.theme",{"id":"external:EditorView.theme","kind":"external","language":"jsts","metadata":{"unresolvedName":"EditorView.theme"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","symbolName":"createCodeMirrorSearchPanel","symbolKind":"function","exported":false,"metadata":{"line":152,"column":1,"cyclomaticComplexity":8,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:document.createElement",{"id":"external:document.createElement","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.createElement"}}],["external:input.setAttribute",{"id":"external:input.setAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"input.setAttribute"}}],["symbol-name:createSearchButton",{"id":"symbol-name:createSearchButton","kind":"symbol","language":"jsts","symbolName":"createSearchButton","metadata":{"unresolvedName":"createSearchButton"}}],["symbol-name:applyQuery",{"id":"symbol-name:applyQuery","kind":"symbol","language":"jsts","symbolName":"applyQuery","metadata":{"unresolvedName":"applyQuery"}}],["external:input.focus",{"id":"external:input.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"input.focus"}}],["external:inputWrap.append",{"id":"external:inputWrap.append","kind":"external","language":"jsts","metadata":{"unresolvedName":"inputWrap.append"}}],["external:nav.append",{"id":"external:nav.append","kind":"external","language":"jsts","metadata":{"unresolvedName":"nav.append"}}],["symbol-name:findPrevious",{"id":"symbol-name:findPrevious","kind":"symbol","language":"jsts","symbolName":"findPrevious","metadata":{"unresolvedName":"findPrevious"}}],["symbol-name:findNext",{"id":"symbol-name:findNext","kind":"symbol","language":"jsts","symbolName":"findNext","metadata":{"unresolvedName":"findNext"}}],["symbol-name:selectMatches",{"id":"symbol-name:selectMatches","kind":"symbol","language":"jsts","symbolName":"selectMatches","metadata":{"unresolvedName":"selectMatches"}}],["symbol-name:createSearchToggle",{"id":"symbol-name:createSearchToggle","kind":"symbol","language":"jsts","symbolName":"createSearchToggle","metadata":{"unresolvedName":"createSearchToggle"}}],["external:options.append",{"id":"external:options.append","kind":"external","language":"jsts","metadata":{"unresolvedName":"options.append"}}],["symbol-name:closeSearchPanel",{"id":"symbol-name:closeSearchPanel","kind":"symbol","language":"jsts","symbolName":"closeSearchPanel","metadata":{"unresolvedName":"closeSearchPanel"}}],["external:view.focus",{"id":"external:view.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"view.focus"}}],["external:dom.append",{"id":"external:dom.append","kind":"external","language":"jsts","metadata":{"unresolvedName":"dom.append"}}],["symbol-name:createSearchDivider",{"id":"symbol-name:createSearchDivider","kind":"symbol","language":"jsts","symbolName":"createSearchDivider","metadata":{"unresolvedName":"createSearchDivider"}}],["symbol-name:getSearchQuery",{"id":"symbol-name:getSearchQuery","kind":"symbol","language":"jsts","symbolName":"getSearchQuery","metadata":{"unresolvedName":"getSearchQuery"}}],["external:caseSensitive.setPressed",{"id":"external:caseSensitive.setPressed","kind":"external","language":"jsts","metadata":{"unresolvedName":"caseSensitive.setPressed"}}],["external:regexp.setPressed",{"id":"external:regexp.setPressed","kind":"external","language":"jsts","metadata":{"unresolvedName":"regexp.setPressed"}}],["external:wholeWord.setPressed",{"id":"external:wholeWord.setPressed","kind":"external","language":"jsts","metadata":{"unresolvedName":"wholeWord.setPressed"}}],["symbol-name:getSearchCountLabel",{"id":"symbol-name:getSearchCountLabel","kind":"symbol","language":"jsts","symbolName":"getSearchCountLabel","metadata":{"unresolvedName":"getSearchCountLabel"}}],["external:setSearchQuery.of",{"id":"external:setSearchQuery.of","kind":"external","language":"jsts","metadata":{"unresolvedName":"setSearchQuery.of"}}],["external:caseSensitive.pressed",{"id":"external:caseSensitive.pressed","kind":"external","language":"jsts","metadata":{"unresolvedName":"caseSensitive.pressed"}}],["external:regexp.pressed",{"id":"external:regexp.pressed","kind":"external","language":"jsts","metadata":{"unresolvedName":"regexp.pressed"}}],["external:wholeWord.pressed",{"id":"external:wholeWord.pressed","kind":"external","language":"jsts","metadata":{"unresolvedName":"wholeWord.pressed"}}],["external:input.addEventListener",{"id":"external:input.addEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"input.addEventListener"}}],["external:option.button.addEventListener",{"id":"external:option.button.addEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"option.button.addEventListener"}}],["external:option.setPressed",{"id":"external:option.setPressed","kind":"external","language":"jsts","metadata":{"unresolvedName":"option.setPressed"}}],["external:option.pressed",{"id":"external:option.pressed","kind":"external","language":"jsts","metadata":{"unresolvedName":"option.pressed"}}],["symbol-name:syncFromState",{"id":"symbol-name:syncFromState","kind":"symbol","language":"jsts","symbolName":"syncFromState","metadata":{"unresolvedName":"syncFromState"}}],["external:input.select",{"id":"external:input.select","kind":"external","language":"jsts","metadata":{"unresolvedName":"input.select"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":216,"column":45,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:syncFromState",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:syncFromState","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","symbolName":"syncFromState","symbolKind":"function","exported":false,"metadata":{"line":188,"column":25,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:applyQuery",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:applyQuery","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","symbolName":"applyQuery","symbolKind":"function","exported":false,"metadata":{"line":197,"column":22,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:mount",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:mount","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","symbolName":"mount","symbolKind":"function","exported":false,"metadata":{"line":222,"column":24,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:getSearchCountLabel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:getSearchCountLabel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","symbolName":"getSearchCountLabel","symbolKind":"function","exported":false,"metadata":{"line":225,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:query.getCursor",{"id":"external:query.getCursor","kind":"external","language":"jsts","metadata":{"unresolvedName":"query.getCursor"}}],["external:cursor.next",{"id":"external:cursor.next","kind":"external","language":"jsts","metadata":{"unresolvedName":"cursor.next"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchDivider",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchDivider","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","symbolName":"createSearchDivider","symbolKind":"function","exported":false,"metadata":{"line":239,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:divider.setAttribute",{"id":"external:divider.setAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"divider.setAttribute"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchButton",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchButton","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","symbolName":"createSearchButton","symbolKind":"function","exported":false,"metadata":{"line":246,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:button.setAttribute",{"id":"external:button.setAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"button.setAttribute"}}],["external:button.addEventListener",{"id":"external:button.addEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"button.addEventListener"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchToggle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchToggle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","symbolName":"createSearchToggle","symbolKind":"function","exported":false,"metadata":{"line":258,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:button.getAttribute",{"id":"external:button.getAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"button.getAttribute"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx","metadata":{"lineCount":56,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx","metadata":{"lineCount":35,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":43,"column":66,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(screen.getByText('first line')).toBeInTheDocument",{"id":"external:expect(screen.getByText('first line')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('first line')).toBeInTheDocument"}}],["external:expect(screen.getByText('second line')).toBeInTheDocument",{"id":"external:expect(screen.getByText('second line')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('second line')).toBeInTheDocument"}}],["external:expect(screen.getByText('1')).toBeInTheDocument",{"id":"external:expect(screen.getByText('1')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('1')).toBeInTheDocument"}}],["external:expect(screen.getByText('2')).toBeInTheDocument",{"id":"external:expect(screen.getByText('2')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('2')).toBeInTheDocument"}}],["external:expect(container.querySelector('.cm-editor')).toBeInTheDocument",{"id":"external:expect(container.querySelector('.cm-editor')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(container.querySelector('.cm-editor')).toBeInTheDocument"}}],["external:container.querySelector",{"id":"external:container.querySelector","kind":"external","language":"jsts","metadata":{"unresolvedName":"container.querySelector"}}],["external:expect(container.querySelector('.cm-content')).toHaveAttribute",{"id":"external:expect(container.querySelector('.cm-content')).toHaveAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(container.querySelector('.cm-content')).toHaveAttribute"}}],["external:fireEvent.keyDown",{"id":"external:fireEvent.keyDown","kind":"external","language":"jsts","metadata":{"unresolvedName":"fireEvent.keyDown"}}],["external:expect(screen.getByPlaceholderText('Find')).toBeInTheDocument",{"id":"external:expect(screen.getByPlaceholderText('Find')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByPlaceholderText('Find')).toBeInTheDocument"}}],["external:screen.getByPlaceholderText",{"id":"external:screen.getByPlaceholderText","kind":"external","language":"jsts","metadata":{"unresolvedName":"screen.getByPlaceholderText"}}],["external:expect(screen.getByRole('button', { name: 'Match case' })).toBeInTheDocument",{"id":"external:expect(screen.getByRole('button', { name: 'Match case' })).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Match case' })).toBeInTheDocument"}}],["external:expect(screen.getByRole('button', { name: 'Clear search' })).toBeInTheDocument",{"id":"external:expect(screen.getByRole('button', { name: 'Clear search' })).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Clear search' })).toBeInTheDocument"}}],["external:expect(screen.getByText('No results')).toBeInTheDocument",{"id":"external:expect(screen.getByText('No results')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('No results')).toBeInTheDocument"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx:CodePreview",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx:CodePreview","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx","symbolName":"CodePreview","symbolKind":"function","exported":true,"metadata":{"line":15,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useSyntaxHighlightRef",{"id":"symbol-name:useSyntaxHighlightRef","kind":"symbol","language":"jsts","symbolName":"useSyntaxHighlightRef","metadata":{"unresolvedName":"useSyntaxHighlightRef"}}],["symbol-name:codeLineHeight",{"id":"symbol-name:codeLineHeight","kind":"symbol","language":"jsts","symbolName":"codeLineHeight","metadata":{"unresolvedName":"codeLineHeight"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","metadata":{"lineCount":59,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":52,"column":9,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:vi.useFakeTimers",{"id":"external:vi.useFakeTimers","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.useFakeTimers"}}],["external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation",{"id":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}}],["external:window.setTimeout",{"id":"external:window.setTimeout","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.setTimeout"}}],["symbol-name:cb",{"id":"symbol-name:cb","kind":"symbol","language":"jsts","symbolName":"cb","metadata":{"unresolvedName":"cb"}}],["external:performance.now",{"id":"external:performance.now","kind":"external","language":"jsts","metadata":{"unresolvedName":"performance.now"}}],["external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation",{"id":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}}],["external:vi.useRealTimers",{"id":"external:vi.useRealTimers","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.useRealTimers"}}],["symbol-name:rerender",{"id":"symbol-name:rerender","kind":"symbol","language":"jsts","symbolName":"rerender","metadata":{"unresolvedName":"rerender"}}],["symbol-name:act",{"id":"symbol-name:act","kind":"symbol","language":"jsts","symbolName":"act","metadata":{"unresolvedName":"act"}}],["external:vi.runAllTimers",{"id":"external:vi.runAllTimers","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.runAllTimers"}}],["external:fireEvent.change",{"id":"external:fireEvent.change","kind":"external","language":"jsts","metadata":{"unresolvedName":"fireEvent.change"}}],["external:expect(input.value).toBe",{"id":"external:expect(input.value).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(input.value).toBe"}}],["external:fireEvent.click",{"id":"external:fireEvent.click","kind":"external","language":"jsts","metadata":{"unresolvedName":"fireEvent.click"}}],["external:expect(onClose).toHaveBeenCalledTimes",{"id":"external:expect(onClose).toHaveBeenCalledTimes","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(onClose).toHaveBeenCalledTimes"}}],["external:expect(action).toHaveBeenCalledTimes",{"id":"external:expect(action).toHaveBeenCalledTimes","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(action).toHaveBeenCalledTimes"}}],["external:screen.queryByPlaceholderText",{"id":"external:screen.queryByPlaceholderText","kind":"external","language":"jsts","metadata":{"unresolvedName":"screen.queryByPlaceholderText"}}],["external:react-dom",{"id":"external:react-dom","kind":"external","language":"jsts","metadata":{"source":"react-dom"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","metadata":{"lineCount":33,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:Kbd",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:Kbd","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","symbolName":"Kbd","symbolKind":"function","exported":false,"metadata":{"line":38,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:ShortcutDisplay",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:ShortcutDisplay","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","symbolName":"ShortcutDisplay","symbolKind":"function","exported":false,"metadata":{"line":51,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:parseKeybinding",{"id":"symbol-name:parseKeybinding","kind":"symbol","language":"jsts","symbolName":"parseKeybinding","metadata":{"unresolvedName":"parseKeybinding"}}],["symbol-name:formatKeybinding",{"id":"symbol-name:formatKeybinding","kind":"symbol","language":"jsts","symbolName":"formatKeybinding","metadata":{"unresolvedName":"formatKeybinding"}}],["external:formatted.split",{"id":"external:formatted.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"formatted.split"}}],["external:parts.map",{"id":"external:parts.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"parts.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","symbolName":"CommandPalette","symbolKind":"function","exported":true,"metadata":{"line":69,"column":1,"cyclomaticComplexity":37,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useDelayedRender",{"id":"symbol-name:useDelayedRender","kind":"symbol","language":"jsts","symbolName":"useDelayedRender","metadata":{"unresolvedName":"useDelayedRender"}}],["symbol-name:setQuery",{"id":"symbol-name:setQuery","kind":"symbol","language":"jsts","symbolName":"setQuery","metadata":{"unresolvedName":"setQuery"}}],["symbol-name:setSelectedIndex",{"id":"symbol-name:setSelectedIndex","kind":"symbol","language":"jsts","symbolName":"setSelectedIndex","metadata":{"unresolvedName":"setSelectedIndex"}}],["symbol-name:cancelAnimationFrame",{"id":"symbol-name:cancelAnimationFrame","kind":"symbol","language":"jsts","symbolName":"cancelAnimationFrame","metadata":{"unresolvedName":"cancelAnimationFrame"}}],["symbol-name:setIsVisible",{"id":"symbol-name:setIsVisible","kind":"symbol","language":"jsts","symbolName":"setIsVisible","metadata":{"unresolvedName":"setIsVisible"}}],["external:inputRef.current?.focus",{"id":"external:inputRef.current?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"inputRef.current?.focus"}}],["external:commands.filter",{"id":"external:commands.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"commands.filter"}}],["external:cmd.when",{"id":"external:cmd.when","kind":"external","language":"jsts","metadata":{"unresolvedName":"cmd.when"}}],["external:query.trim",{"id":"external:query.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"query.trim"}}],["external:query.toLowerCase",{"id":"external:query.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"query.toLowerCase"}}],["external:visible\r\n .filter",{"id":"external:visible\r\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"visible\r\n .filter"}}],["external:cmd.label.toLowerCase().includes",{"id":"external:cmd.label.toLowerCase().includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"cmd.label.toLowerCase().includes"}}],["external:cmd.label.toLowerCase",{"id":"external:cmd.label.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"cmd.label.toLowerCase"}}],["external:cmd.description?.toLowerCase().includes",{"id":"external:cmd.description?.toLowerCase().includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"cmd.description?.toLowerCase().includes"}}],["external:cmd.description?.toLowerCase",{"id":"external:cmd.description?.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"cmd.description?.toLowerCase"}}],["external:cmd.category?.toLowerCase().includes",{"id":"external:cmd.category?.toLowerCase().includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"cmd.category?.toLowerCase().includes"}}],["external:cmd.category?.toLowerCase",{"id":"external:cmd.category?.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"cmd.category?.toLowerCase"}}],["external:cmd.id.toLowerCase().includes",{"id":"external:cmd.id.toLowerCase().includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"cmd.id.toLowerCase().includes"}}],["external:cmd.id.toLowerCase",{"id":"external:cmd.id.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"cmd.id.toLowerCase"}}],["external:a.label.toLowerCase().startsWith",{"id":"external:a.label.toLowerCase().startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"a.label.toLowerCase().startsWith"}}],["external:a.label.toLowerCase",{"id":"external:a.label.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"a.label.toLowerCase"}}],["external:b.label.toLowerCase().startsWith",{"id":"external:b.label.toLowerCase().startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"b.label.toLowerCase().startsWith"}}],["external:b.label.toLowerCase",{"id":"external:b.label.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"b.label.toLowerCase"}}],["symbol-name:onClose",{"id":"symbol-name:onClose","kind":"symbol","language":"jsts","symbolName":"onClose","metadata":{"unresolvedName":"onClose"}}],["external:cmd.action",{"id":"external:cmd.action","kind":"external","language":"jsts","metadata":{"unresolvedName":"cmd.action"}}],["external:e.preventDefault",{"id":"external:e.preventDefault","kind":"external","language":"jsts","metadata":{"unresolvedName":"e.preventDefault"}}],["symbol-name:executeCommand",{"id":"symbol-name:executeCommand","kind":"symbol","language":"jsts","symbolName":"executeCommand","metadata":{"unresolvedName":"executeCommand"}}],["external:e.stopPropagation",{"id":"external:e.stopPropagation","kind":"external","language":"jsts","metadata":{"unresolvedName":"e.stopPropagation"}}],["external:listRef.current.querySelector",{"id":"external:listRef.current.querySelector","kind":"external","language":"jsts","metadata":{"unresolvedName":"listRef.current.querySelector"}}],["external:el?.scrollIntoView",{"id":"external:el?.scrollIntoView","kind":"external","language":"jsts","metadata":{"unresolvedName":"el?.scrollIntoView"}}],["symbol-name:createPortal",{"id":"symbol-name:createPortal","kind":"symbol","language":"jsts","symbolName":"createPortal","metadata":{"unresolvedName":"createPortal"}}],["external:filteredCommands.map",{"id":"external:filteredCommands.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"filteredCommands.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":243,"column":24,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:handleKeyDown",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:handleKeyDown","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","symbolName":"handleKeyDown","symbolKind":"function","exported":false,"metadata":{"line":156,"column":27,"cyclomaticComplexity":8,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","metadata":{"lineCount":329,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:diff",{"id":"external:diff","kind":"external","language":"jsts","metadata":{"source":"diff"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","metadata":{"lineCount":1848,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts","metadata":{"lineCount":132,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","metadata":{"lineCount":163,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts","metadata":{"lineCount":29,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","metadata":{"lineCount":42,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":239,"column":24,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useResponsiveMaxHeight",{"id":"symbol-name:useResponsiveMaxHeight","kind":"symbol","language":"jsts","symbolName":"useResponsiveMaxHeight","metadata":{"unresolvedName":"useResponsiveMaxHeight"}}],["external:content?.trim",{"id":"external:content?.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"content?.trim"}}],["symbol-name:detectLanguage",{"id":"symbol-name:detectLanguage","kind":"symbol","language":"jsts","symbolName":"detectLanguage","metadata":{"unresolvedName":"detectLanguage"}}],["external:filePath?.split(/[/\\\\]/).pop",{"id":"external:filePath?.split(/[/\\\\]/).pop","kind":"external","language":"jsts","metadata":{"unresolvedName":"filePath?.split(/[/\\\\]/).pop"}}],["external:filePath?.split",{"id":"external:filePath?.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"filePath?.split"}}],["symbol-name:diffLines",{"id":"symbol-name:diffLines","kind":"symbol","language":"jsts","symbolName":"diffLines","metadata":{"unresolvedName":"diffLines"}}],["external:(diff as string).split",{"id":"external:(diff as string).split","kind":"external","language":"jsts","metadata":{"unresolvedName":"(diff as string).split"}}],["symbol-name:extractContentFromUnifiedDiff",{"id":"symbol-name:extractContentFromUnifiedDiff","kind":"symbol","language":"jsts","symbolName":"extractContentFromUnifiedDiff","metadata":{"unresolvedName":"extractContentFromUnifiedDiff"}}],["symbol-name:useDiffViewerData",{"id":"symbol-name:useDiffViewerData","kind":"symbol","language":"jsts","symbolName":"useDiffViewerData","metadata":{"unresolvedName":"useDiffViewerData"}}],["symbol-name:setDiffViewMode",{"id":"symbol-name:setDiffViewMode","kind":"symbol","language":"jsts","symbolName":"setDiffViewMode","metadata":{"unresolvedName":"setDiffViewMode"}}],["symbol-name:updateViewMode",{"id":"symbol-name:updateViewMode","kind":"symbol","language":"jsts","symbolName":"updateViewMode","metadata":{"unresolvedName":"updateViewMode"}}],["external:observer.observe",{"id":"external:observer.observe","kind":"external","language":"jsts","metadata":{"unresolvedName":"observer.observe"}}],["external:observer.disconnect",{"id":"external:observer.disconnect","kind":"external","language":"jsts","metadata":{"unresolvedName":"observer.disconnect"}}],["symbol-name:setFullscreenDiffViewMode",{"id":"symbol-name:setFullscreenDiffViewMode","kind":"symbol","language":"jsts","symbolName":"setFullscreenDiffViewMode","metadata":{"unresolvedName":"setFullscreenDiffViewMode"}}],["symbol-name:checkWidth",{"id":"symbol-name:checkWidth","kind":"symbol","language":"jsts","symbolName":"checkWidth","metadata":{"unresolvedName":"checkWidth"}}],["symbol-name:setCollapsed",{"id":"symbol-name:setCollapsed","kind":"symbol","language":"jsts","symbolName":"setCollapsed","metadata":{"unresolvedName":"setCollapsed"}}],["symbol-name:setFullscreenOpen",{"id":"symbol-name:setFullscreenOpen","kind":"symbol","language":"jsts","symbolName":"setFullscreenOpen","metadata":{"unresolvedName":"setFullscreenOpen"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:updateViewMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:updateViewMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","symbolName":"updateViewMode","symbolKind":"function","exported":false,"metadata":{"line":147,"column":28,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx","metadata":{"lineCount":49,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":34,"column":72,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(controlsHost).not.toBeNull",{"id":"external:expect(controlsHost).not.toBeNull","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(controlsHost).not.toBeNull"}}],["external:controlsHost!.appendChild",{"id":"external:controlsHost!.appendChild","kind":"external","language":"jsts","metadata":{"unresolvedName":"controlsHost!.appendChild"}}],["external:expect(screen.getByText('Minimize')).toBeInTheDocument",{"id":"external:expect(screen.getByText('Minimize')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('Minimize')).toBeInTheDocument"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants"}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","metadata":{"lineCount":311,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","metadata":{"lineCount":276,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":98,"column":60,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","symbolName":"DesktopTitlebar","symbolKind":"function","exported":true,"metadata":{"line":38,"column":1,"cyclomaticComplexity":16,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useTheme",{"id":"symbol-name:useTheme","kind":"symbol","language":"jsts","symbolName":"useTheme","metadata":{"unresolvedName":"useTheme"}}],["symbol-name:useUpdateStore",{"id":"symbol-name:useUpdateStore","kind":"symbol","language":"jsts","symbolName":"useUpdateStore","metadata":{"unresolvedName":"useUpdateStore"}}],["symbol-name:hasUpdateAvailable",{"id":"symbol-name:hasUpdateAvailable","kind":"symbol","language":"jsts","symbolName":"hasUpdateAvailable","metadata":{"unresolvedName":"hasUpdateAvailable"}}],["symbol-name:getDesktopPlatform",{"id":"symbol-name:getDesktopPlatform","kind":"symbol","language":"jsts","symbolName":"getDesktopPlatform","metadata":{"unresolvedName":"getDesktopPlatform"}}],["symbol-name:usesCustomDesktopTitlebar",{"id":"symbol-name:usesCustomDesktopTitlebar","kind":"symbol","language":"jsts","symbolName":"usesCustomDesktopTitlebar","metadata":{"unresolvedName":"usesCustomDesktopTitlebar"}}],["external:document.documentElement.style.setProperty",{"id":"external:document.documentElement.style.setProperty","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.documentElement.style.setProperty"}}],["external:document.documentElement.style.removeProperty",{"id":"external:document.documentElement.style.removeProperty","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.documentElement.style.removeProperty"}}],["external:import('@tauri-apps/api/window').then",{"id":"external:import('@tauri-apps/api/window').then","kind":"external","language":"jsts","metadata":{"unresolvedName":"import('@tauri-apps/api/window').then"}}],["external:getCurrentWindow().setTheme",{"id":"external:getCurrentWindow().setTheme","kind":"external","language":"jsts","metadata":{"unresolvedName":"getCurrentWindow().setTheme"}}],["symbol-name:getCurrentWindow",{"id":"symbol-name:getCurrentWindow","kind":"symbol","language":"jsts","symbolName":"getCurrentWindow","metadata":{"unresolvedName":"getCurrentWindow"}}],["external:window.history.back",{"id":"external:window.history.back","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.history.back"}}],["external:window.history.forward",{"id":"external:window.history.forward","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.history.forward"}}],["external:window.dispatchEvent",{"id":"external:window.dispatchEvent","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.dispatchEvent"}}],["external:import('@tauri-apps/api/core').then",{"id":"external:import('@tauri-apps/api/core').then","kind":"external","language":"jsts","metadata":{"unresolvedName":"import('@tauri-apps/api/core').then"}}],["external:invoke('open_new_window', { directory: null }).catch",{"id":"external:invoke('open_new_window', { directory: null }).catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"invoke('open_new_window', { directory: null }).catch"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx","metadata":{"lineCount":37,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","metadata":{"lineCount":175,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":20,"column":59,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(screen.getByText('app.ts')).toBeInTheDocument",{"id":"external:expect(screen.getByText('app.ts')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('app.ts')).toBeInTheDocument"}}],["external:expect(screen.getByText('+1')).toBeInTheDocument",{"id":"external:expect(screen.getByText('+1')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('+1')).toBeInTheDocument"}}],["external:expect(screen.getByText('-1')).toBeInTheDocument",{"id":"external:expect(screen.getByText('-1')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('-1')).toBeInTheDocument"}}],["external:screen.getByTitle",{"id":"external:screen.getByTitle","kind":"external","language":"jsts","metadata":{"unresolvedName":"screen.getByTitle"}}],["external:expect(screen.getByTestId('fullscreen-viewer')).toBeInTheDocument",{"id":"external:expect(screen.getByTestId('fullscreen-viewer')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByTestId('fullscreen-viewer')).toBeInTheDocument"}}],["external:screen.getByTestId",{"id":"external:screen.getByTestId","kind":"external","language":"jsts","metadata":{"unresolvedName":"screen.getByTestId"}}],["external:clsx",{"id":"external:clsx","kind":"external","language":"jsts","metadata":{"source":"clsx"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:computeDiffStats",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:computeDiffStats","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","symbolName":"computeDiffStats","symbolKind":"function","exported":false,"metadata":{"line":29,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":124,"column":22,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setFullscreenViewMode",{"id":"symbol-name:setFullscreenViewMode","kind":"symbol","language":"jsts","symbolName":"setFullscreenViewMode","metadata":{"unresolvedName":"setFullscreenViewMode"}}],["symbol-name:computeDiffStats",{"id":"symbol-name:computeDiffStats","kind":"symbol","language":"jsts","symbolName":"computeDiffStats","metadata":{"unresolvedName":"computeDiffStats"}}],["external:filePath.split(/[/\\\\]/).pop",{"id":"external:filePath.split(/[/\\\\]/).pop","kind":"external","language":"jsts","metadata":{"unresolvedName":"filePath.split(/[/\\\\]/).pop"}}],["external:filePath.split",{"id":"external:filePath.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"filePath.split"}}],["symbol-name:setModalOpen",{"id":"symbol-name:setModalOpen","kind":"symbol","language":"jsts","symbolName":"setModalOpen","metadata":{"unresolvedName":"setModalOpen"}}],["symbol-name:clsx",{"id":"symbol-name:clsx","kind":"symbol","language":"jsts","symbolName":"clsx","metadata":{"unresolvedName":"clsx"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","metadata":{"lineCount":83,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":68,"column":91,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:importOriginal",{"id":"symbol-name:importOriginal","kind":"symbol","language":"jsts","symbolName":"importOriginal","metadata":{"unresolvedName":"importOriginal"}}],["external:expect(container.querySelector('.sticky')).toBeNull",{"id":"external:expect(container.querySelector('.sticky')).toBeNull","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(container.querySelector('.sticky')).toBeNull"}}],["external:['same', 'tail'].join",{"id":"external:['same', 'tail'].join","kind":"external","language":"jsts","metadata":{"unresolvedName":"['same', 'tail'].join"}}],["external:['same', 'added only line', 'tail'].join",{"id":"external:['same', 'added only line', 'tail'].join","kind":"external","language":"jsts","metadata":{"unresolvedName":"['same', 'added only line', 'tail'].join"}}],["external:container.querySelectorAll",{"id":"external:container.querySelectorAll","kind":"external","language":"jsts","metadata":{"unresolvedName":"container.querySelectorAll"}}],["external:Number.parseFloat",{"id":"external:Number.parseFloat","kind":"external","language":"jsts","metadata":{"unresolvedName":"Number.parseFloat"}}],["external:emptyBuffer.style.backgroundPosition.split",{"id":"external:emptyBuffer.style.backgroundPosition.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"emptyBuffer.style.backgroundPosition.split"}}],["external:Object.defineProperty",{"id":"external:Object.defineProperty","kind":"external","language":"jsts","metadata":{"unresolvedName":"Object.defineProperty"}}],["external:fireEvent.scroll",{"id":"external:fireEvent.scroll","kind":"external","language":"jsts","metadata":{"unresolvedName":"fireEvent.scroll"}}],["symbol-name:waitFor",{"id":"symbol-name:waitFor","kind":"symbol","language":"jsts","symbolName":"waitFor","metadata":{"unresolvedName":"waitFor"}}],["external:updatedBuffer.style.backgroundPosition.split",{"id":"external:updatedBuffer.style.backgroundPosition.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"updatedBuffer.style.backgroundPosition.split"}}],["external:expect(updatedX - initialX).toBe",{"id":"external:expect(updatedX - initialX).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(updatedX - initialX).toBe"}}],["external:['node_modules', '.git', '.gitignore'].join",{"id":"external:['node_modules', '.git', '.gitignore'].join","kind":"external","language":"jsts","metadata":{"unresolvedName":"['node_modules', '.git', '.gitignore'].join"}}],["external:['node_modules', 'root', '.gitignore'].join",{"id":"external:['node_modules', 'root', '.gitignore'].join","kind":"external","language":"jsts","metadata":{"unresolvedName":"['node_modules', 'root', '.gitignore'].join"}}],["external:Array.from(container.querySelectorAll('span')).filter",{"id":"external:Array.from(container.querySelectorAll('span')).filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"Array.from(container.querySelectorAll('span')).filter"}}],["external:segment.classList.contains",{"id":"external:segment.classList.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"segment.classList.contains"}}],["external:expect(changedSegments.length).toBeGreaterThan",{"id":"external:expect(changedSegments.length).toBeGreaterThan","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(changedSegments.length).toBeGreaterThan"}}],["external:expect(segment.closest('.text-text-100')).not.toBeNull",{"id":"external:expect(segment.closest('.text-text-100')).not.toBeNull","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(segment.closest('.text-text-100')).not.toBeNull"}}],["external:segment.closest",{"id":"external:segment.closest","kind":"external","language":"jsts","metadata":{"unresolvedName":"segment.closest"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","metadata":{"lineCount":196,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:codeLineHeight",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:codeLineHeight","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"codeLineHeight","symbolKind":"function","exported":false,"metadata":{"line":26,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:isCollapsed",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:isCollapsed","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"isCollapsed","symbolKind":"function","exported":false,"metadata":{"line":108,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:expandRegion",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:expandRegion","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"expandRegion","symbolKind":"function","exported":false,"metadata":{"line":114,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:next.get",{"id":"external:next.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"next.get"}}],["external:next.set",{"id":"external:next.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"next.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:collapseContextPaired",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:collapseContextPaired","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"collapseContextPaired","symbolKind":"function","exported":false,"metadata":{"line":134,"column":1,"cyclomaticComplexity":17,"maxNestingDepth":5,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expandedRegions?.get",{"id":"external:expandedRegions?.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"expandedRegions?.get"}}],["external:result.push",{"id":"external:result.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.push"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:collapseContextUnified",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:collapseContextUnified","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"collapseContextUnified","symbolKind":"function","exported":false,"metadata":{"line":183,"column":1,"cyclomaticComplexity":16,"maxNestingDepth":5,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getLineBgClass",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getLineBgClass","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"getLineBgClass","symbolKind":"function","exported":false,"metadata":{"line":236,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getGutterBgClass",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getGutterBgClass","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"getGutterBgClass","symbolKind":"function","exported":false,"metadata":{"line":249,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getContentBgClass",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getContentBgClass","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"getContentBgClass","symbolKind":"function","exported":false,"metadata":{"line":262,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getLineBgClass",{"id":"symbol-name:getLineBgClass","kind":"symbol","language":"jsts","symbolName":"getLineBgClass","metadata":{"unresolvedName":"getLineBgClass"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getEmptyBufferBackgroundStyle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getEmptyBufferBackgroundStyle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"getEmptyBufferBackgroundStyle","symbolKind":"function","exported":false,"metadata":{"line":267,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getEmptyBufferRowStyle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getEmptyBufferRowStyle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"getEmptyBufferRowStyle","symbolKind":"function","exported":false,"metadata":{"line":271,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getEmptyBufferBackgroundStyle",{"id":"symbol-name:getEmptyBufferBackgroundStyle","kind":"symbol","language":"jsts","symbolName":"getEmptyBufferBackgroundStyle","metadata":{"unresolvedName":"getEmptyBufferBackgroundStyle"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:estimateWrappedVisualLineCount",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:estimateWrappedVisualLineCount","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"estimateWrappedVisualLineCount","symbolKind":"function","exported":false,"metadata":{"line":275,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:Math.floor",{"id":"external:Math.floor","kind":"external","language":"jsts","metadata":{"unresolvedName":"Math.floor"}}],["external:content.split",{"id":"external:content.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"content.split"}}],["external:Math.ceil",{"id":"external:Math.ceil","kind":"external","language":"jsts","metadata":{"unresolvedName":"Math.ceil"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getWrappedPairContent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getWrappedPairContent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"getWrappedPairContent","symbolKind":"function","exported":false,"metadata":{"line":290,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffLineNumberWidth",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffLineNumberWidth","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"useDiffLineNumberWidth","symbolKind":"function","exported":false,"metadata":{"line":294,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:LineNumberCell",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:LineNumberCell","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"LineNumberCell","symbolKind":"function","exported":false,"metadata":{"line":301,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:DiffMarkerCell",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:DiffMarkerCell","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"DiffMarkerCell","symbolKind":"function","exported":false,"metadata":{"line":313,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:EmptyContentBuffer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:EmptyContentBuffer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"EmptyContentBuffer","symbolKind":"function","exported":false,"metadata":{"line":322,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getEmptyBufferRowStyle",{"id":"symbol-name:getEmptyBufferRowStyle","kind":"symbol","language":"jsts","symbolName":"getEmptyBufferRowStyle","metadata":{"unresolvedName":"getEmptyBufferRowStyle"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getChangeBarProps",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getChangeBarProps","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"getChangeBarProps","symbolKind":"function","exported":false,"metadata":{"line":327,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:alignDeleteChangeBars",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:alignDeleteChangeBars","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"alignDeleteChangeBars","symbolKind":"function","exported":false,"metadata":{"line":341,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:ExpandIcon",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:ExpandIcon","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"ExpandIcon","symbolKind":"function","exported":false,"metadata":{"line":348,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getSeparatorDirections",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getSeparatorDirections","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"getSeparatorDirections","symbolKind":"function","exported":false,"metadata":{"line":372,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:directions.push",{"id":"external:directions.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"directions.push"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedExpandButton",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedExpandButton","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"CollapsedExpandButton","symbolKind":"function","exported":false,"metadata":{"line":380,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:directions.map",{"id":"external:directions.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"directions.map"}}],["symbol-name:onExpand",{"id":"symbol-name:onExpand","kind":"symbol","language":"jsts","symbolName":"onExpand","metadata":{"unresolvedName":"onExpand"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedLabel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedLabel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"CollapsedLabel","symbolKind":"function","exported":false,"metadata":{"line":415,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedLabelOverlay",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedLabelOverlay","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"CollapsedLabelOverlay","symbolKind":"function","exported":false,"metadata":{"line":440,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedContinuation",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedContinuation","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"CollapsedContinuation","symbolKind":"function","exported":false,"metadata":{"line":461,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedBar",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedBar","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"CollapsedBar","symbolKind":"function","exported":false,"metadata":{"line":466,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:getSeparatorDirections",{"id":"symbol-name:getSeparatorDirections","kind":"symbol","language":"jsts","symbolName":"getSeparatorDirections","metadata":{"unresolvedName":"getSeparatorDirections"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffViewerData",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffViewerData","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"useDiffViewerData","symbolKind":"function","exported":true,"metadata":{"line":499,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:computePairedLines",{"id":"symbol-name:computePairedLines","kind":"symbol","language":"jsts","symbolName":"computePairedLines","metadata":{"unresolvedName":"computePairedLines"}}],["symbol-name:computeUnifiedLines",{"id":"symbol-name:computeUnifiedLines","kind":"symbol","language":"jsts","symbolName":"computeUnifiedLines","metadata":{"unresolvedName":"computeUnifiedLines"}}],["symbol-name:useDiffLineNumberWidth",{"id":"symbol-name:useDiffLineNumberWidth","kind":"symbol","language":"jsts","symbolName":"useDiffLineNumberWidth","metadata":{"unresolvedName":"useDiffLineNumberWidth"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":1571,"column":26,"cyclomaticComplexity":8,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:DiffViewerWithData",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:DiffViewerWithData","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"DiffViewerWithData","symbolKind":"function","exported":false,"metadata":{"line":530,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:before.trim",{"id":"external:before.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"before.trim"}}],["external:after.trim",{"id":"external:after.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"after.trim"}}],["symbol-name:collapseContextPaired",{"id":"symbol-name:collapseContextPaired","kind":"symbol","language":"jsts","symbolName":"collapseContextPaired","metadata":{"unresolvedName":"collapseContextPaired"}}],["symbol-name:setExpandedRegions",{"id":"symbol-name:setExpandedRegions","kind":"symbol","language":"jsts","symbolName":"setExpandedRegions","metadata":{"unresolvedName":"setExpandedRegions"}}],["symbol-name:expandRegion",{"id":"symbol-name:expandRegion","kind":"symbol","language":"jsts","symbolName":"expandRegion","metadata":{"unresolvedName":"expandRegion"}}],["symbol-name:isCollapsed",{"id":"symbol-name:isCollapsed","kind":"symbol","language":"jsts","symbolName":"isCollapsed","metadata":{"unresolvedName":"isCollapsed"}}],["symbol-name:estimateWrappedVisualLineCount",{"id":"symbol-name:estimateWrappedVisualLineCount","kind":"symbol","language":"jsts","symbolName":"estimateWrappedVisualLineCount","metadata":{"unresolvedName":"estimateWrappedVisualLineCount"}}],["symbol-name:getWrappedPairContent",{"id":"symbol-name:getWrappedPairContent","kind":"symbol","language":"jsts","symbolName":"getWrappedPairContent","metadata":{"unresolvedName":"getWrappedPairContent"}}],["symbol-name:useDynamicVirtualScroll",{"id":"symbol-name:useDynamicVirtualScroll","kind":"symbol","language":"jsts","symbolName":"useDynamicVirtualScroll","metadata":{"unresolvedName":"useDynamicVirtualScroll"}}],["symbol-name:measureRef",{"id":"symbol-name:measureRef","kind":"symbol","language":"jsts","symbolName":"measureRef","metadata":{"unresolvedName":"measureRef"}}],["external:el.querySelectorAll",{"id":"external:el.querySelectorAll","kind":"external","language":"jsts","metadata":{"unresolvedName":"el.querySelectorAll"}}],["symbol-name:alignDeleteChangeBars",{"id":"symbol-name:alignDeleteChangeBars","kind":"symbol","language":"jsts","symbolName":"alignDeleteChangeBars","metadata":{"unresolvedName":"alignDeleteChangeBars"}}],["external:visibleRows.push",{"id":"external:visibleRows.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"visibleRows.push"}}],["symbol-name:measureWrappedRowRef",{"id":"symbol-name:measureWrappedRowRef","kind":"symbol","language":"jsts","symbolName":"measureWrappedRowRef","metadata":{"unresolvedName":"measureWrappedRowRef"}}],["symbol-name:handleExpand",{"id":"symbol-name:handleExpand","kind":"symbol","language":"jsts","symbolName":"handleExpand","metadata":{"unresolvedName":"handleExpand"}}],["symbol-name:getContentBgClass",{"id":"symbol-name:getContentBgClass","kind":"symbol","language":"jsts","symbolName":"getContentBgClass","metadata":{"unresolvedName":"getContentBgClass"}}],["symbol-name:getChangeBarProps",{"id":"symbol-name:getChangeBarProps","kind":"symbol","language":"jsts","symbolName":"getChangeBarProps","metadata":{"unresolvedName":"getChangeBarProps"}}],["symbol-name:setContainerHeight",{"id":"symbol-name:setContainerHeight","kind":"symbol","language":"jsts","symbolName":"setContainerHeight","metadata":{"unresolvedName":"setContainerHeight"}}],["external:resizeObserver.observe",{"id":"external:resizeObserver.observe","kind":"external","language":"jsts","metadata":{"unresolvedName":"resizeObserver.observe"}}],["external:resizeObserver.disconnect",{"id":"external:resizeObserver.disconnect","kind":"external","language":"jsts","metadata":{"unresolvedName":"resizeObserver.disconnect"}}],["symbol-name:setLeftContentWidth",{"id":"symbol-name:setLeftContentWidth","kind":"symbol","language":"jsts","symbolName":"setLeftContentWidth","metadata":{"unresolvedName":"setLeftContentWidth"}}],["symbol-name:setRightContentWidth",{"id":"symbol-name:setRightContentWidth","kind":"symbol","language":"jsts","symbolName":"setRightContentWidth","metadata":{"unresolvedName":"setRightContentWidth"}}],["symbol-name:setLeftClientWidth",{"id":"symbol-name:setLeftClientWidth","kind":"symbol","language":"jsts","symbolName":"setLeftClientWidth","metadata":{"unresolvedName":"setLeftClientWidth"}}],["symbol-name:setRightClientWidth",{"id":"symbol-name:setRightClientWidth","kind":"symbol","language":"jsts","symbolName":"setRightClientWidth","metadata":{"unresolvedName":"setRightClientWidth"}}],["symbol-name:measure",{"id":"symbol-name:measure","kind":"symbol","language":"jsts","symbolName":"measure","metadata":{"unresolvedName":"measure"}}],["external:ro.observe",{"id":"external:ro.observe","kind":"external","language":"jsts","metadata":{"unresolvedName":"ro.observe"}}],["external:mo.observe",{"id":"external:mo.observe","kind":"external","language":"jsts","metadata":{"unresolvedName":"mo.observe"}}],["external:ro.disconnect",{"id":"external:ro.disconnect","kind":"external","language":"jsts","metadata":{"unresolvedName":"ro.disconnect"}}],["external:mo.disconnect",{"id":"external:mo.disconnect","kind":"external","language":"jsts","metadata":{"unresolvedName":"mo.disconnect"}}],["symbol-name:setScrollTop",{"id":"symbol-name:setScrollTop","kind":"symbol","language":"jsts","symbolName":"setScrollTop","metadata":{"unresolvedName":"setScrollTop"}}],["symbol-name:setLeftScrollLeft",{"id":"symbol-name:setLeftScrollLeft","kind":"symbol","language":"jsts","symbolName":"setLeftScrollLeft","metadata":{"unresolvedName":"setLeftScrollLeft"}}],["symbol-name:setRightScrollLeft",{"id":"symbol-name:setRightScrollLeft","kind":"symbol","language":"jsts","symbolName":"setRightScrollLeft","metadata":{"unresolvedName":"setRightScrollLeft"}}],["external:leftGutterRows.push",{"id":"external:leftGutterRows.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"leftGutterRows.push"}}],["external:leftContentRows.push",{"id":"external:leftContentRows.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"leftContentRows.push"}}],["external:rightGutterRows.push",{"id":"external:rightGutterRows.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"rightGutterRows.push"}}],["external:rightContentRows.push",{"id":"external:rightContentRows.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"rightContentRows.push"}}],["symbol-name:getGutterBgClass",{"id":"symbol-name:getGutterBgClass","kind":"symbol","language":"jsts","symbolName":"getGutterBgClass","metadata":{"unresolvedName":"getGutterBgClass"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:measure",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:measure","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"measure","symbolKind":"function","exported":false,"metadata":{"line":1244,"column":21,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:collapseContextUnified",{"id":"symbol-name:collapseContextUnified","kind":"symbol","language":"jsts","symbolName":"collapseContextUnified","metadata":{"unresolvedName":"collapseContextUnified"}}],["symbol-name:setContentWidth",{"id":"symbol-name:setContentWidth","kind":"symbol","language":"jsts","symbolName":"setContentWidth","metadata":{"unresolvedName":"setContentWidth"}}],["symbol-name:setContentClientWidth",{"id":"symbol-name:setContentClientWidth","kind":"symbol","language":"jsts","symbolName":"setContentClientWidth","metadata":{"unresolvedName":"setContentClientWidth"}}],["external:gutterRows.push",{"id":"external:gutterRows.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"gutterRows.push"}}],["external:contentRows.push",{"id":"external:contentRows.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"contentRows.push"}}],["symbol-name:measureWrappedUnifiedRowRef",{"id":"symbol-name:measureWrappedUnifiedRowRef","kind":"symbol","language":"jsts","symbolName":"measureWrappedUnifiedRowRef","metadata":{"unresolvedName":"measureWrappedUnifiedRowRef"}}],["external:line.wordDiffSegments.map",{"id":"external:line.wordDiffSegments.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"line.wordDiffSegments.map"}}],["external:lineTokens.map",{"id":"external:lineTokens.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"lineTokens.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:MergedWordDiffLine",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:MergedWordDiffLine","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"MergedWordDiffLine","symbolKind":"function","exported":false,"metadata":{"line":1621,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:token.content.substring",{"id":"external:token.content.substring","kind":"external","language":"jsts","metadata":{"unresolvedName":"token.content.substring"}}],["external:children.push",{"id":"external:children.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"children.push"}}],["external:seg.text.substring",{"id":"external:seg.text.substring","kind":"external","language":"jsts","metadata":{"unresolvedName":"seg.text.substring"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computePairedLines",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computePairedLines","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"computePairedLines","symbolKind":"function","exported":false,"metadata":{"line":1676,"column":1,"cyclomaticComplexity":23,"maxNestingDepth":6,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:before.split",{"id":"external:before.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"before.split"}}],["external:after.split",{"id":"external:after.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"after.split"}}],["symbol-name:computeWordDiff",{"id":"symbol-name:computeWordDiff","kind":"symbol","language":"jsts","symbolName":"computeWordDiff","metadata":{"unresolvedName":"computeWordDiff"}}],["symbol-name:isTooFragmented",{"id":"symbol-name:isTooFragmented","kind":"symbol","language":"jsts","symbolName":"isTooFragmented","metadata":{"unresolvedName":"isTooFragmented"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computeUnifiedLines",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computeUnifiedLines","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"computeUnifiedLines","symbolKind":"function","exported":false,"metadata":{"line":1760,"column":1,"cyclomaticComplexity":11,"maxNestingDepth":4,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:isTooFragmented",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:isTooFragmented","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"isTooFragmented","symbolKind":"function","exported":false,"metadata":{"line":1799,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computeWordDiff",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computeWordDiff","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","symbolName":"computeWordDiff","symbolKind":"function","exported":false,"metadata":{"line":1809,"column":1,"cyclomaticComplexity":18,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:diffWords",{"id":"symbol-name:diffWords","kind":"symbol","language":"jsts","symbolName":"diffWords","metadata":{"unresolvedName":"diffWords"}}],["external:/^\\s*$/.test",{"id":"external:/^\\s*$/.test","kind":"external","language":"jsts","metadata":{"unresolvedName":"/^\\s*$/.test"}}],["external:mergedChanges.push",{"id":"external:mergedChanges.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"mergedChanges.push"}}],["external:left.push",{"id":"external:left.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"left.push"}}],["external:right.push",{"id":"external:right.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"right.push"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","metadata":{"lineCount":112,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:getDerivedStateFromError",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:getDerivedStateFromError","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","symbolName":"getDerivedStateFromError","symbolKind":"function","exported":false,"metadata":{"line":20,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:componentDidCatch",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:componentDidCatch","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","symbolName":"componentDidCatch","symbolKind":"function","exported":false,"metadata":{"line":24,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:this.setState",{"id":"external:this.setState","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.setState"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":42,"column":30,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:navigator.clipboard.writeText",{"id":"external:navigator.clipboard.writeText","kind":"external","language":"jsts","metadata":{"unresolvedName":"navigator.clipboard.writeText"}}],["external:window.location.reload",{"id":"external:window.location.reload","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.location.reload"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","symbolName":"render","symbolKind":"function","exported":false,"metadata":{"line":47,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:this.state.error?.toString",{"id":"external:this.state.error?.toString","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.state.error?.toString"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx","metadata":{"lineCount":104,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","metadata":{"lineCount":428,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":77,"column":99,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:getExtensionsMock.mockReset",{"id":"external:getExtensionsMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"getExtensionsMock.mockReset"}}],["external:installExtensionMock.mockReset",{"id":"external:installExtensionMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"installExtensionMock.mockReset"}}],["external:removeExtensionPackageMock.mockReset",{"id":"external:removeExtensionPackageMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"removeExtensionPackageMock.mockReset"}}],["external:vi.spyOn(window, 'confirm').mockReturnValue",{"id":"external:vi.spyOn(window, 'confirm').mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.spyOn(window, 'confirm').mockReturnValue"}}],["external:getExtensionsMock.mockResolvedValue",{"id":"external:getExtensionsMock.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getExtensionsMock.mockResolvedValue"}}],["external:installExtensionMock.mockResolvedValue",{"id":"external:installExtensionMock.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"installExtensionMock.mockResolvedValue"}}],["external:removeExtensionPackageMock.mockResolvedValue",{"id":"external:removeExtensionPackageMock.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"removeExtensionPackageMock.mockResolvedValue"}}],["external:expect(screen.getByText('pi-hud')).toBeInTheDocument",{"id":"external:expect(screen.getByText('pi-hud')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('pi-hud')).toBeInTheDocument"}}],["external:expect(screen.getByText('(3)')).toBeInTheDocument",{"id":"external:expect(screen.getByText('(3)')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('(3)')).toBeInTheDocument"}}],["external:expect(screen.getAllByText('Active').length).toBeGreaterThan",{"id":"external:expect(screen.getAllByText('Active').length).toBeGreaterThan","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getAllByText('Active').length).toBeGreaterThan"}}],["external:screen.getAllByText",{"id":"external:screen.getAllByText","kind":"external","language":"jsts","metadata":{"unresolvedName":"screen.getAllByText"}}],["external:expect(screen.getAllByText('Inactive').length).toBeGreaterThan",{"id":"external:expect(screen.getAllByText('Inactive').length).toBeGreaterThan","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getAllByText('Inactive').length).toBeGreaterThan"}}],["external:expect(screen.getAllByText('Missing').length).toBeGreaterThan",{"id":"external:expect(screen.getAllByText('Missing').length).toBeGreaterThan","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getAllByText('Missing').length).toBeGreaterThan"}}],["external:expect(screen.getByText('Persistent HUD extension')).toBeInTheDocument",{"id":"external:expect(screen.getByText('Persistent HUD extension')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('Persistent HUD extension')).toBeInTheDocument"}}],["external:expect(screen.getAllByText('Extensions 1').length).toBeGreaterThan",{"id":"external:expect(screen.getAllByText('Extensions 1').length).toBeGreaterThan","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getAllByText('Extensions 1').length).toBeGreaterThan"}}],["external:expect(screen.getByText('Skills 1')).toBeInTheDocument",{"id":"external:expect(screen.getByText('Skills 1')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('Skills 1')).toBeInTheDocument"}}],["external:expect(screen.getByText('index.ts')).toBeInTheDocument",{"id":"external:expect(screen.getByText('index.ts')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('index.ts')).toBeInTheDocument"}}],["external:expect(installExtensionMock).toHaveBeenCalledWith",{"id":"external:expect(installExtensionMock).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(installExtensionMock).toHaveBeenCalledWith"}}],["external:screen.findByText",{"id":"external:screen.findByText","kind":"external","language":"jsts","metadata":{"unresolvedName":"screen.findByText"}}],["external:expect(removeExtensionPackageMock).toHaveBeenCalledWith",{"id":"external:expect(removeExtensionPackageMock).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(removeExtensionPackageMock).toHaveBeenCalledWith"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api"}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":120,"column":5,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setLoading",{"id":"symbol-name:setLoading","kind":"symbol","language":"jsts","symbolName":"setLoading","metadata":{"unresolvedName":"setLoading"}}],["symbol-name:setError",{"id":"symbol-name:setError","kind":"symbol","language":"jsts","symbolName":"setError","metadata":{"unresolvedName":"setError"}}],["symbol-name:setCatalog",{"id":"symbol-name:setCatalog","kind":"symbol","language":"jsts","symbolName":"setCatalog","metadata":{"unresolvedName":"setCatalog"}}],["symbol-name:apiErrorHandler",{"id":"symbol-name:apiErrorHandler","kind":"symbol","language":"jsts","symbolName":"apiErrorHandler","metadata":{"unresolvedName":"apiErrorHandler"}}],["symbol-name:loadExtensions",{"id":"symbol-name:loadExtensions","kind":"symbol","language":"jsts","symbolName":"loadExtensions","metadata":{"unresolvedName":"loadExtensions"}}],["external:filter.trim().toLowerCase",{"id":"external:filter.trim().toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"filter.trim().toLowerCase"}}],["external:filter.trim",{"id":"external:filter.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"filter.trim"}}],["external:catalog.packages.filter",{"id":"external:catalog.packages.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"catalog.packages.filter"}}],["external:value.toLowerCase().includes",{"id":"external:value.toLowerCase().includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"value.toLowerCase().includes"}}],["external:value.toLowerCase",{"id":"external:value.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"value.toLowerCase"}}],["external:scopes\n .map",{"id":"external:scopes\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"scopes\n .map"}}],["external:filteredPackages.filter",{"id":"external:filteredPackages.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"filteredPackages.filter"}}],["external:installCommand.trim",{"id":"external:installCommand.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"installCommand.trim"}}],["symbol-name:setActionLoading",{"id":"symbol-name:setActionLoading","kind":"symbol","language":"jsts","symbolName":"setActionLoading","metadata":{"unresolvedName":"setActionLoading"}}],["symbol-name:setActionError",{"id":"symbol-name:setActionError","kind":"symbol","language":"jsts","symbolName":"setActionError","metadata":{"unresolvedName":"setActionError"}}],["symbol-name:setInstallCommand",{"id":"symbol-name:setInstallCommand","kind":"symbol","language":"jsts","symbolName":"setInstallCommand","metadata":{"unresolvedName":"setInstallCommand"}}],["symbol-name:setReloadRequired",{"id":"symbol-name:setReloadRequired","kind":"symbol","language":"jsts","symbolName":"setReloadRequired","metadata":{"unresolvedName":"setReloadRequired"}}],["external:window.confirm",{"id":"external:window.confirm","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.confirm"}}],["symbol-name:setFilter",{"id":"symbol-name:setFilter","kind":"symbol","language":"jsts","symbolName":"setFilter","metadata":{"unresolvedName":"setFilter"}}],["external:groupedPackages.map",{"id":"external:groupedPackages.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"groupedPackages.map"}}],["external:group.packages.map",{"id":"external:group.packages.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"group.packages.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:InstallCommandCard",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:InstallCommandCard","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","symbolName":"InstallCommandCard","symbolKind":"function","exported":false,"metadata":{"line":259,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:onCommandChange",{"id":"symbol-name:onCommandChange","kind":"symbol","language":"jsts","symbolName":"onCommandChange","metadata":{"unresolvedName":"onCommandChange"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:SummaryBar",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:SummaryBar","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","symbolName":"SummaryBar","symbolKind":"function","exported":false,"metadata":{"line":308,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:STATUS_ORDER.map",{"id":"external:STATUS_ORDER.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"STATUS_ORDER.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:ExtensionPackageCard",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:ExtensionPackageCard","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","symbolName":"ExtensionPackageCard","symbolKind":"function","exported":false,"metadata":{"line":322,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:countResources",{"id":"symbol-name:countResources","kind":"symbol","language":"jsts","symbolName":"countResources","metadata":{"unresolvedName":"countResources"}}],["external:detailRows.join",{"id":"external:detailRows.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"detailRows.join"}}],["symbol-name:onUninstall",{"id":"symbol-name:onUninstall","kind":"symbol","language":"jsts","symbolName":"onUninstall","metadata":{"unresolvedName":"onUninstall"}}],["external:resourceCounts.map",{"id":"external:resourceCounts.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"resourceCounts.map"}}],["external:extensionResources.map",{"id":"external:extensionResources.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"extensionResources.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:StatusBadge",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:StatusBadge","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","symbolName":"StatusBadge","symbolKind":"function","exported":false,"metadata":{"line":402,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:countResources",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:countResources","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","symbolName":"countResources","symbolKind":"function","exported":false,"metadata":{"line":421,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:(['extensions', 'skills', 'prompts', 'themes'] as const)\n .map",{"id":"external:(['extensions', 'skills', 'prompts', 'themes'] as const)\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"(['extensions', 'skills', 'prompts', 'themes'] as const)\n .map"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","metadata":{"lineCount":1062,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","metadata":{"lineCount":171,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","metadata":{"lineCount":151,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","metadata":{"lineCount":497,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts","metadata":{"lineCount":462,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","metadata":{"lineCount":110,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","metadata":{"lineCount":102,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:isMarkdownPreview",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:isMarkdownPreview","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","symbolName":"isMarkdownPreview","symbolKind":"function","exported":false,"metadata":{"line":38,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:MARKDOWN_MIME_TYPES.has",{"id":"external:MARKDOWN_MIME_TYPES.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"MARKDOWN_MIME_TYPES.has"}}],["external:mimeType.split(';', 1)[0].toLowerCase",{"id":"external:mimeType.split(';', 1)[0].toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"mimeType.split(';', 1)[0].toLowerCase"}}],["external:mimeType.split",{"id":"external:mimeType.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"mimeType.split"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":1036,"column":29,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useVerticalSplitResize",{"id":"symbol-name:useVerticalSplitResize","kind":"symbol","language":"jsts","symbolName":"useVerticalSplitResize","metadata":{"unresolvedName":"useVerticalSplitResize"}}],["symbol-name:useFileExplorer",{"id":"symbol-name:useFileExplorer","kind":"symbol","language":"jsts","symbolName":"useFileExplorer","metadata":{"unresolvedName":"useFileExplorer"}}],["symbol-name:loadPreview",{"id":"symbol-name:loadPreview","kind":"symbol","language":"jsts","symbolName":"loadPreview","metadata":{"unresolvedName":"loadPreview"}}],["symbol-name:clearPreview",{"id":"symbol-name:clearPreview","kind":"symbol","language":"jsts","symbolName":"clearPreview","metadata":{"unresolvedName":"clearPreview"}}],["symbol-name:refresh",{"id":"symbol-name:refresh","kind":"symbol","language":"jsts","symbolName":"refresh","metadata":{"unresolvedName":"refresh"}}],["symbol-name:toggleExpand",{"id":"symbol-name:toggleExpand","kind":"symbol","language":"jsts","symbolName":"toggleExpand","metadata":{"unresolvedName":"toggleExpand"}}],["external:layoutStore.openFilePreview",{"id":"external:layoutStore.openFilePreview","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.openFilePreview"}}],["external:layoutStore.closeAllFilePreviews",{"id":"external:layoutStore.closeAllFilePreviews","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.closeAllFilePreviews"}}],["symbol-name:resetSplitHeight",{"id":"symbol-name:resetSplitHeight","kind":"symbol","language":"jsts","symbolName":"resetSplitHeight","metadata":{"unresolvedName":"resetSplitHeight"}}],["external:layoutStore.activateFilePreview",{"id":"external:layoutStore.activateFilePreview","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.activateFilePreview"}}],["external:layoutStore.closeFilePreview",{"id":"external:layoutStore.closeFilePreview","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.closeFilePreview"}}],["external:layoutStore.reorderFilePreviews",{"id":"external:layoutStore.reorderFilePreviews","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.reorderFilePreviews"}}],["symbol-name:getMaterialIconUrl",{"id":"symbol-name:getMaterialIconUrl","kind":"symbol","language":"jsts","symbolName":"getMaterialIconUrl","metadata":{"unresolvedName":"getMaterialIconUrl"}}],["external:tree.map",{"id":"external:tree.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"tree.map"}}],["external:expandedPaths.has",{"id":"external:expandedPaths.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"expandedPaths.has"}}],["external:fileStatus.get",{"id":"external:fileStatus.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"fileStatus.get"}}],["external:node.path.replace",{"id":"external:node.path.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"node.path.replace"}}],["external:e.dataTransfer.setData",{"id":"external:e.dataTransfer.setData","kind":"external","language":"jsts","metadata":{"unresolvedName":"e.dataTransfer.setData"}}],["symbol-name:onClick",{"id":"symbol-name:onClick","kind":"symbol","language":"jsts","symbolName":"onClick","metadata":{"unresolvedName":"onClick"}}],["external:node.children.map",{"id":"external:node.children.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"node.children.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","symbolName":"FilePreview","symbolKind":"function","exported":false,"metadata":{"line":409,"column":1,"cyclomaticComplexity":36,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:path?.split(/[/\\\\]/).pop",{"id":"external:path?.split(/[/\\\\]/).pop","kind":"external","language":"jsts","metadata":{"unresolvedName":"path?.split(/[/\\\\]/).pop"}}],["external:path?.split",{"id":"external:path?.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"path?.split"}}],["symbol-name:downloadFileContent",{"id":"symbol-name:downloadFileContent","kind":"symbol","language":"jsts","symbolName":"downloadFileContent","metadata":{"unresolvedName":"downloadFileContent"}}],["external:previewFiles.map",{"id":"external:previewFiles.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"previewFiles.map"}}],["symbol-name:getPreviewCategory",{"id":"symbol-name:getPreviewCategory","kind":"symbol","language":"jsts","symbolName":"getPreviewCategory","metadata":{"unresolvedName":"getPreviewCategory"}}],["symbol-name:isMarkdownPreview",{"id":"symbol-name:isMarkdownPreview","kind":"symbol","language":"jsts","symbolName":"isMarkdownPreview","metadata":{"unresolvedName":"isMarkdownPreview"}}],["symbol-name:isBinaryContent",{"id":"symbol-name:isBinaryContent","kind":"symbol","language":"jsts","symbolName":"isBinaryContent","metadata":{"unresolvedName":"isBinaryContent"}}],["symbol-name:decodeBase64Text",{"id":"symbol-name:decodeBase64Text","kind":"symbol","language":"jsts","symbolName":"decodeBase64Text","metadata":{"unresolvedName":"decodeBase64Text"}}],["symbol-name:isTextualMedia",{"id":"symbol-name:isTextualMedia","kind":"symbol","language":"jsts","symbolName":"isTextualMedia","metadata":{"unresolvedName":"isTextualMedia"}}],["symbol-name:buildDataUrl",{"id":"symbol-name:buildDataUrl","kind":"symbol","language":"jsts","symbolName":"buildDataUrl","metadata":{"unresolvedName":"buildDataUrl"}}],["symbol-name:buildTextDataUrl",{"id":"symbol-name:buildTextDataUrl","kind":"symbol","language":"jsts","symbolName":"buildTextDataUrl","metadata":{"unresolvedName":"buildTextDataUrl"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:MediaPreview",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:MediaPreview","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","symbolName":"MediaPreview","symbolKind":"function","exported":false,"metadata":{"line":657,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:formatMimeType",{"id":"symbol-name:formatMimeType","kind":"symbol","language":"jsts","symbolName":"formatMimeType","metadata":{"unresolvedName":"formatMimeType"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","symbolName":"ImagePreview","symbolKind":"function","exported":false,"metadata":{"line":693,"column":1,"cyclomaticComplexity":18,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:el.getBoundingClientRect",{"id":"external:el.getBoundingClientRect","kind":"external","language":"jsts","metadata":{"unresolvedName":"el.getBoundingClientRect"}}],["symbol-name:computeFitScale",{"id":"symbol-name:computeFitScale","kind":"symbol","language":"jsts","symbolName":"computeFitScale","metadata":{"unresolvedName":"computeFitScale"}}],["symbol-name:setFitScale",{"id":"symbol-name:setFitScale","kind":"symbol","language":"jsts","symbolName":"setFitScale","metadata":{"unresolvedName":"setFitScale"}}],["symbol-name:setScale",{"id":"symbol-name:setScale","kind":"symbol","language":"jsts","symbolName":"setScale","metadata":{"unresolvedName":"setScale"}}],["symbol-name:setTranslate",{"id":"symbol-name:setTranslate","kind":"symbol","language":"jsts","symbolName":"setTranslate","metadata":{"unresolvedName":"setTranslate"}}],["symbol-name:setInitialized",{"id":"symbol-name:setInitialized","kind":"symbol","language":"jsts","symbolName":"setInitialized","metadata":{"unresolvedName":"setInitialized"}}],["symbol-name:updateFitScale",{"id":"symbol-name:updateFitScale","kind":"symbol","language":"jsts","symbolName":"updateFitScale","metadata":{"unresolvedName":"updateFitScale"}}],["external:el.addEventListener",{"id":"external:el.addEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"el.addEventListener"}}],["external:el.removeEventListener",{"id":"external:el.removeEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"el.removeEventListener"}}],["external:Math.abs",{"id":"external:Math.abs","kind":"external","language":"jsts","metadata":{"unresolvedName":"Math.abs"}}],["symbol-name:setNaturalSize",{"id":"symbol-name:setNaturalSize","kind":"symbol","language":"jsts","symbolName":"setNaturalSize","metadata":{"unresolvedName":"setNaturalSize"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:updateFitScale",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:updateFitScale","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","symbolName":"updateFitScale","symbolKind":"function","exported":false,"metadata":{"line":719,"column":28,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:handler",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:handler","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","symbolName":"handler","symbolKind":"function","exported":false,"metadata":{"line":745,"column":21,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:onMove",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:onMove","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","symbolName":"onMove","symbolKind":"function","exported":false,"metadata":{"line":768,"column":20,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:onUp",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:onUp","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","symbolName":"onUp","symbolKind":"function","exported":false,"metadata":{"line":776,"column":18,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:TextMediaPreview",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:TextMediaPreview","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","symbolName":"TextMediaPreview","symbolKind":"function","exported":false,"metadata":{"line":893,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setMode",{"id":"symbol-name:setMode","kind":"symbol","language":"jsts","symbolName":"setMode","metadata":{"unresolvedName":"setMode"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:MarkdownFilePreview",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:MarkdownFilePreview","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","symbolName":"MarkdownFilePreview","symbolKind":"function","exported":false,"metadata":{"line":931,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:BinaryPlaceholder",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:BinaryPlaceholder","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","symbolName":"BinaryPlaceholder","symbolKind":"function","exported":false,"metadata":{"line":975,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:DiffPreview",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:DiffPreview","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","symbolName":"DiffPreview","symbolKind":"function","exported":true,"metadata":{"line":1022,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:hunks.map",{"id":"external:hunks.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"hunks.map"}}],["external:hunk.lines.map",{"id":"external:hunk.lines.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"hunk.lines.map"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","metadata":{"lineCount":99,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":90,"column":9,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:usesCustomDesktopTitlebarMock.mockReset",{"id":"external:usesCustomDesktopTitlebarMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"usesCustomDesktopTitlebarMock.mockReset"}}],["external:usesCustomDesktopTitlebarMock.mockReturnValue",{"id":"external:usesCustomDesktopTitlebarMock.mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"usesCustomDesktopTitlebarMock.mockReturnValue"}}],["external:expect(screen.getByRole('dialog')).toBeInTheDocument",{"id":"external:expect(screen.getByRole('dialog')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('dialog')).toBeInTheDocument"}}],["external:expect(screen.getByTestId('content')).toBeInTheDocument",{"id":"external:expect(screen.getByTestId('content')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByTestId('content')).toBeInTheDocument"}}],["external:vi.advanceTimersByTime",{"id":"external:vi.advanceTimersByTime","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.advanceTimersByTime"}}],["external:expect(screen.queryByRole('dialog')).not.toBeInTheDocument",{"id":"external:expect(screen.queryByRole('dialog')).not.toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.queryByRole('dialog')).not.toBeInTheDocument"}}],["external:screen.queryByRole",{"id":"external:screen.queryByRole","kind":"external","language":"jsts","metadata":{"unresolvedName":"screen.queryByRole"}}],["external:expect(screen.queryByText('closeEsc')).not.toBeInTheDocument",{"id":"external:expect(screen.queryByText('closeEsc')).not.toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.queryByText('closeEsc')).not.toBeInTheDocument"}}],["external:screen.queryByText",{"id":"external:screen.queryByText","kind":"external","language":"jsts","metadata":{"unresolvedName":"screen.queryByText"}}],["external:expect(screen.getByRole('dialog')).toHaveStyle",{"id":"external:expect(screen.getByRole('dialog')).toHaveStyle","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('dialog')).toHaveStyle"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ModalShell.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ModalShell.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ModalShell.tsx","metadata":{"lineCount":49,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":122,"column":12,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:DeferredFullscreenContent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:DeferredFullscreenContent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","symbolName":"DeferredFullscreenContent","symbolKind":"function","exported":false,"metadata":{"line":112,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setShouldRender",{"id":"symbol-name:setShouldRender","kind":"symbol","language":"jsts","symbolName":"setShouldRender","metadata":{"unresolvedName":"setShouldRender"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:ViewModeSwitch",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:ViewModeSwitch","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","symbolName":"ViewModeSwitch","symbolKind":"function","exported":true,"metadata":{"line":135,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:onChange",{"id":"symbol-name:onChange","kind":"symbol","language":"jsts","symbolName":"onChange","metadata":{"unresolvedName":"onChange"}}],["external:lucide-react",{"id":"external:lucide-react","kind":"external","language":"jsts","metadata":{"source":"lucide-react"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx:wrap",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx:wrap","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","symbolName":"wrap","symbolKind":"function","exported":false,"metadata":{"line":100,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/index.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/index.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/index.ts","metadata":{"lineCount":23,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","metadata":{"lineCount":106,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":97,"column":94,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(screen.getByRole('heading', { name: 'Title' })).toBeInTheDocument",{"id":"external:expect(screen.getByRole('heading', { name: 'Title' })).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('heading', { name: 'Title' })).toBeInTheDocument"}}],["external:expect(codeEl).toBeInTheDocument",{"id":"external:expect(codeEl).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(codeEl).toBeInTheDocument"}}],["external:expect(codeEl.tagName).toBe",{"id":"external:expect(codeEl.tagName).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(codeEl.tagName).toBe"}}],["external:expect(codeEl.className).not.toMatch",{"id":"external:expect(codeEl.className).not.toMatch","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(codeEl.className).not.toMatch"}}],["external:expect(codeEl.className).toMatch",{"id":"external:expect(codeEl.className).toMatch","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(codeEl.className).toMatch"}}],["external:expect(screen.getByTestId('code-block')).toHaveTextContent",{"id":"external:expect(screen.getByTestId('code-block')).toHaveTextContent","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByTestId('code-block')).toHaveTextContent"}}],["external:expect(screen.getByRole('paragraph')).toHaveTextContent",{"id":"external:expect(screen.getByRole('paragraph')).toHaveTextContent","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('paragraph')).toHaveTextContent"}}],["external:expect(heading.className).toMatch",{"id":"external:expect(heading.className).toMatch","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(heading.className).toMatch"}}],["external:expect(paragraph.className).toMatch",{"id":"external:expect(paragraph.className).toMatch","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(paragraph.className).toMatch"}}],["external:expect(block.dataset.variant).toBe",{"id":"external:expect(block.dataset.variant).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(block.dataset.variant).toBe"}}],["external:expect(screen.getByRole('table')).toBeInTheDocument",{"id":"external:expect(screen.getByRole('table')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('table')).toBeInTheDocument"}}],["external:expect(screen.getByTestId('copy-button')).toBeInTheDocument",{"id":"external:expect(screen.getByTestId('copy-button')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByTestId('copy-button')).toBeInTheDocument"}}],["external:expect(screen.queryByTestId('copy-button')).not.toBeInTheDocument",{"id":"external:expect(screen.queryByTestId('copy-button')).not.toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.queryByTestId('copy-button')).not.toBeInTheDocument"}}],["external:screen.queryByTestId",{"id":"external:screen.queryByTestId","kind":"external","language":"jsts","metadata":{"unresolvedName":"screen.queryByTestId"}}],["external:expect(img).toBeInTheDocument",{"id":"external:expect(img).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(img).toBeInTheDocument"}}],["external:expect(img.tagName).toBe",{"id":"external:expect(img.tagName).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(img.tagName).toBe"}}],["external:expect(screen.queryByTitle('Download image')).not.toBeInTheDocument",{"id":"external:expect(screen.queryByTitle('Download image')).not.toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.queryByTitle('Download image')).not.toBeInTheDocument"}}],["external:screen.queryByTitle",{"id":"external:screen.queryByTitle","kind":"external","language":"jsts","metadata":{"unresolvedName":"screen.queryByTitle"}}],["external:streamdown",{"id":"external:streamdown","kind":"external","language":"jsts","metadata":{"source":"streamdown"}}],["external:@streamdown/math",{"id":"external:@streamdown/math","kind":"external","language":"jsts","metadata":{"source":"@streamdown/math"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":485,"column":24,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractText",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractText","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","symbolName":"extractText","symbolKind":"function","exported":false,"metadata":{"line":58,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:node.map(extractText).join",{"id":"external:node.map(extractText).join","kind":"external","language":"jsts","metadata":{"unresolvedName":"node.map(extractText).join"}}],["external:node.map",{"id":"external:node.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"node.map"}}],["symbol-name:isValidElement",{"id":"symbol-name:isValidElement","kind":"symbol","language":"jsts","symbolName":"isValidElement","metadata":{"unresolvedName":"isValidElement"}}],["symbol-name:extractText",{"id":"symbol-name:extractText","kind":"symbol","language":"jsts","symbolName":"extractText","metadata":{"unresolvedName":"extractText"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractBlockCode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractBlockCode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","symbolName":"extractBlockCode","symbolKind":"function","exported":false,"metadata":{"line":69,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:/language-([\\w-]+)/.exec",{"id":"external:/language-([\\w-]+)/.exec","kind":"external","language":"jsts","metadata":{"unresolvedName":"/language-([\\w-]+)/.exec"}}],["external:extractText(props.children).replace",{"id":"external:extractText(props.children).replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"extractText(props.children).replace"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractTableData",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractTableData","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","symbolName":"extractTableData","symbolKind":"function","exported":false,"metadata":{"line":89,"column":1,"cyclomaticComplexity":12,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:cells\r\n .filter(isValidElement)\r\n .map",{"id":"external:cells\r\n .filter(isValidElement)\r\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"cells\r\n .filter(isValidElement)\r\n .map"}}],["external:cells\r\n .filter",{"id":"external:cells\r\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"cells\r\n .filter"}}],["external:String(sectionType).toLowerCase().includes",{"id":"external:String(sectionType).toLowerCase().includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"String(sectionType).toLowerCase().includes"}}],["external:String(sectionType).toLowerCase",{"id":"external:String(sectionType).toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"String(sectionType).toLowerCase"}}],["external:headers.push",{"id":"external:headers.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"headers.push"}}],["external:rows.push",{"id":"external:rows.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"rows.push"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:tableToMarkdown",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:tableToMarkdown","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","symbolName":"tableToMarkdown","symbolKind":"function","exported":false,"metadata":{"line":119,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:headers.map",{"id":"external:headers.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"headers.map"}}],["external:headers.join",{"id":"external:headers.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"headers.join"}}],["external:sep.join",{"id":"external:sep.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"sep.join"}}],["external:rows.map",{"id":"external:rows.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"rows.map"}}],["external:r.join",{"id":"external:r.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"r.join"}}],["external:lines.join",{"id":"external:lines.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"lines.join"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:injectTableCopyButton",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:injectTableCopyButton","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","symbolName":"injectTableCopyButton","symbolKind":"function","exported":false,"metadata":{"line":126,"column":1,"cyclomaticComplexity":13,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:Children.map",{"id":"external:Children.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"Children.map"}}],["external:Children.toArray",{"id":"external:Children.toArray","kind":"external","language":"jsts","metadata":{"unresolvedName":"Children.toArray"}}],["symbol-name:cloneElement",{"id":"symbol-name:cloneElement","kind":"symbol","language":"jsts","symbolName":"cloneElement","metadata":{"unresolvedName":"cloneElement"}}],["external:cells.map",{"id":"external:cells.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"cells.map"}}],["symbol-name:extractTableData",{"id":"symbol-name:extractTableData","kind":"symbol","language":"jsts","symbolName":"extractTableData","metadata":{"unresolvedName":"extractTableData"}}],["symbol-name:tableToMarkdown",{"id":"symbol-name:tableToMarkdown","kind":"symbol","language":"jsts","symbolName":"tableToMarkdown","metadata":{"unresolvedName":"tableToMarkdown"}}],["symbol-name:injectTableCopyButton",{"id":"symbol-name:injectTableCopyButton","kind":"symbol","language":"jsts","symbolName":"injectTableCopyButton","metadata":{"unresolvedName":"injectTableCopyButton"}}],["symbol-name:extractBlockCode",{"id":"symbol-name:extractBlockCode","kind":"symbol","language":"jsts","symbolName":"extractBlockCode","metadata":{"unresolvedName":"extractBlockCode"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:inlineCode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:inlineCode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","symbolName":"inlineCode","symbolKind":"function","exported":false,"metadata":{"line":240,"column":7,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:pre",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:pre","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","symbolName":"pre","symbolKind":"function","exported":false,"metadata":{"line":245,"column":7,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","metadata":{"lineCount":623,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":530,"column":22,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:Object.entries(statusResponse.servers).map",{"id":"external:Object.entries(statusResponse.servers).map","kind":"external","language":"jsts","metadata":{"unresolvedName":"Object.entries(statusResponse.servers).map"}}],["external:entries.sort",{"id":"external:entries.sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"entries.sort"}}],["symbol-name:setServers",{"id":"symbol-name:setServers","kind":"symbol","language":"jsts","symbolName":"setServers","metadata":{"unresolvedName":"setServers"}}],["symbol-name:loadStatus",{"id":"symbol-name:loadStatus","kind":"symbol","language":"jsts","symbolName":"loadStatus","metadata":{"unresolvedName":"loadStatus"}}],["symbol-name:connectMcpServer",{"id":"symbol-name:connectMcpServer","kind":"symbol","language":"jsts","symbolName":"connectMcpServer","metadata":{"unresolvedName":"connectMcpServer"}}],["symbol-name:disconnectMcpServer",{"id":"symbol-name:disconnectMcpServer","kind":"symbol","language":"jsts","symbolName":"disconnectMcpServer","metadata":{"unresolvedName":"disconnectMcpServer"}}],["symbol-name:authenticateMcp",{"id":"symbol-name:authenticateMcp","kind":"symbol","language":"jsts","symbolName":"authenticateMcp","metadata":{"unresolvedName":"authenticateMcp"}}],["symbol-name:startMcpAuth",{"id":"symbol-name:startMcpAuth","kind":"symbol","language":"jsts","symbolName":"startMcpAuth","metadata":{"unresolvedName":"startMcpAuth"}}],["external:(await import('../utils/tauri')).isTauri",{"id":"external:(await import('../utils/tauri')).isTauri","kind":"external","language":"jsts","metadata":{"unresolvedName":"(await import('../utils/tauri')).isTauri"}}],["external:import('@tauri-apps/plugin-opener')\n .then",{"id":"external:import('@tauri-apps/plugin-opener')\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"import('@tauri-apps/plugin-opener')\n .then"}}],["external:mod.openUrl",{"id":"external:mod.openUrl","kind":"external","language":"jsts","metadata":{"unresolvedName":"mod.openUrl"}}],["external:window.open",{"id":"external:window.open","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.open"}}],["symbol-name:addMcpServer",{"id":"symbol-name:addMcpServer","kind":"symbol","language":"jsts","symbolName":"addMcpServer","metadata":{"unresolvedName":"addMcpServer"}}],["symbol-name:setShowAddForm",{"id":"symbol-name:setShowAddForm","kind":"symbol","language":"jsts","symbolName":"setShowAddForm","metadata":{"unresolvedName":"setShowAddForm"}}],["external:servers.map",{"id":"external:servers.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"servers.map"}}],["external:name.trim",{"id":"external:name.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"name.trim"}}],["external:command.trim().split",{"id":"external:command.trim().split","kind":"external","language":"jsts","metadata":{"unresolvedName":"command.trim().split"}}],["external:cmdParts.slice",{"id":"external:cmdParts.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"cmdParts.slice"}}],["symbol-name:onSubmit",{"id":"symbol-name:onSubmit","kind":"symbol","language":"jsts","symbolName":"onSubmit","metadata":{"unresolvedName":"onSubmit"}}],["external:url.trim",{"id":"external:url.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"url.trim"}}],["symbol-name:setServerType",{"id":"symbol-name:setServerType","kind":"symbol","language":"jsts","symbolName":"setServerType","metadata":{"unresolvedName":"setServerType"}}],["symbol-name:setName",{"id":"symbol-name:setName","kind":"symbol","language":"jsts","symbolName":"setName","metadata":{"unresolvedName":"setName"}}],["symbol-name:setCommand",{"id":"symbol-name:setCommand","kind":"symbol","language":"jsts","symbolName":"setCommand","metadata":{"unresolvedName":"setCommand"}}],["symbol-name:setUrl",{"id":"symbol-name:setUrl","kind":"symbol","language":"jsts","symbolName":"setUrl","metadata":{"unresolvedName":"setUrl"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:handleSubmit",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:handleSubmit","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","symbolName":"handleSubmit","symbolKind":"function","exported":false,"metadata":{"line":301,"column":24,"cyclomaticComplexity":8,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getErrorMessage",{"id":"symbol-name:getErrorMessage","kind":"symbol","language":"jsts","symbolName":"getErrorMessage","metadata":{"unresolvedName":"getErrorMessage"}}],["symbol-name:getStatusInfo",{"id":"symbol-name:getStatusInfo","kind":"symbol","language":"jsts","symbolName":"getStatusInfo","metadata":{"unresolvedName":"getStatusInfo"}}],["symbol-name:onDisconnect",{"id":"symbol-name:onDisconnect","kind":"symbol","language":"jsts","symbolName":"onDisconnect","metadata":{"unresolvedName":"onDisconnect"}}],["symbol-name:onConnect",{"id":"symbol-name:onConnect","kind":"symbol","language":"jsts","symbolName":"onConnect","metadata":{"unresolvedName":"onConnect"}}],["symbol-name:onAuth",{"id":"symbol-name:onAuth","kind":"symbol","language":"jsts","symbolName":"onAuth","metadata":{"unresolvedName":"onAuth"}}],["symbol-name:setExpanded",{"id":"symbol-name:setExpanded","kind":"symbol","language":"jsts","symbolName":"setExpanded","metadata":{"unresolvedName":"setExpanded"}}],["symbol-name:getStatusDotColor",{"id":"symbol-name:getStatusDotColor","kind":"symbol","language":"jsts","symbolName":"getStatusDotColor","metadata":{"unresolvedName":"getStatusDotColor"}}],["symbol-name:renderActions",{"id":"symbol-name:renderActions","kind":"symbol","language":"jsts","symbolName":"renderActions","metadata":{"unresolvedName":"renderActions"}}],["external:status.args?.join",{"id":"external:status.args?.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"status.args?.join"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:getErrorMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:getErrorMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","symbolName":"getErrorMessage","symbolKind":"function","exported":false,"metadata":{"line":459,"column":27,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:getStatusInfo",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:getStatusInfo","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","symbolName":"getStatusInfo","symbolKind":"function","exported":false,"metadata":{"line":472,"column":25,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:renderActions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:renderActions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","symbolName":"renderActions","symbolKind":"function","exported":false,"metadata":{"line":495,"column":25,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:getStatusDotColor",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:getStatusDotColor","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","symbolName":"getStatusDotColor","symbolKind":"function","exported":false,"metadata":{"line":546,"column":29,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","metadata":{"lineCount":602,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","metadata":{"lineCount":381,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:cosineStrength",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:cosineStrength","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","symbolName":"cosineStrength","symbolKind":"function","exported":false,"metadata":{"line":71,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:Math.cos",{"id":"external:Math.cos","kind":"external","language":"jsts","metadata":{"unresolvedName":"Math.cos"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:smoothStep",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:smoothStep","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","symbolName":"smoothStep","symbolKind":"function","exported":false,"metadata":{"line":75,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:queryCachedItems",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:queryCachedItems","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","symbolName":"queryCachedItems","symbolKind":"function","exported":false,"metadata":{"line":136,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:Array.from(container.querySelectorAll(ITEM_SEL))\r\n .map",{"id":"external:Array.from(container.querySelectorAll(ITEM_SEL))\r\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"Array.from(container.querySelectorAll(ITEM_SEL))\r\n .map"}}],["external:el.querySelector",{"id":"external:el.querySelector","kind":"external","language":"jsts","metadata":{"unresolvedName":"el.querySelector"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:applyFisheye",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:applyFisheye","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","symbolName":"applyFisheye","symbolKind":"function","exported":false,"metadata":{"line":147,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:items[i].el.getBoundingClientRect",{"id":"external:items[i].el.getBoundingClientRect","kind":"external","language":"jsts","metadata":{"unresolvedName":"items[i].el.getBoundingClientRect"}}],["symbol-name:cosineStrength",{"id":"symbol-name:cosineStrength","kind":"symbol","language":"jsts","symbolName":"cosineStrength","metadata":{"unresolvedName":"cosineStrength"}}],["symbol-name:smoothStep",{"id":"symbol-name:smoothStep","kind":"symbol","language":"jsts","symbolName":"smoothStep","metadata":{"unresolvedName":"smoothStep"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:truncate",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:truncate","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","symbolName":"truncate","symbolKind":"function","exported":false,"metadata":{"line":211,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:s.slice",{"id":"external:s.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"s.slice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:normalizeWhitespace",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:normalizeWhitespace","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","symbolName":"normalizeWhitespace","symbolKind":"function","exported":false,"metadata":{"line":215,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:s.replace(/\\s+/g, ' ').trim",{"id":"external:s.replace(/\\s+/g, ' ').trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"s.replace(/\\s+/g, ' ').trim"}}],["external:s.replace",{"id":"external:s.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"s.replace"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:messageHasContent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:messageHasContent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","symbolName":"messageHasContent","symbolKind":"function","exported":false,"metadata":{"line":219,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:hasRenderableParts",{"id":"symbol-name:hasRenderableParts","kind":"symbol","language":"jsts","symbolName":"hasRenderableParts","metadata":{"unresolvedName":"hasRenderableParts"}}],["symbol-name:isAbortedMessage",{"id":"symbol-name:isAbortedMessage","kind":"symbol","language":"jsts","symbolName":"isAbortedMessage","metadata":{"unresolvedName":"isAbortedMessage"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:extractEntries",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:extractEntries","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","symbolName":"extractEntries","symbolKind":"function","exported":false,"metadata":{"line":228,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:messages.filter",{"id":"external:messages.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"messages.filter"}}],["symbol-name:isUserMessage",{"id":"symbol-name:isUserMessage","kind":"symbol","language":"jsts","symbolName":"isUserMessage","metadata":{"unresolvedName":"isUserMessage"}}],["external:msg.info.summary?.title?.trim",{"id":"external:msg.info.summary?.title?.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"msg.info.summary?.title?.trim"}}],["external:getMessageText(msg)\r\n .trim()\r\n .split(/\\r?\\n/)\r\n .map",{"id":"external:getMessageText(msg)\r\n .trim()\r\n .split(/\\r?\\n/)\r\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"getMessageText(msg)\r\n .trim()\r\n .split(/\\r?\\n/)\r\n .map"}}],["external:getMessageText(msg)\r\n .trim()\r\n .split",{"id":"external:getMessageText(msg)\r\n .trim()\r\n .split","kind":"external","language":"jsts","metadata":{"unresolvedName":"getMessageText(msg)\r\n .trim()\r\n .split"}}],["external:getMessageText(msg)\r\n .trim",{"id":"external:getMessageText(msg)\r\n .trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"getMessageText(msg)\r\n .trim"}}],["external:l.trim",{"id":"external:l.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"l.trim"}}],["symbol-name:normalizeWhitespace",{"id":"symbol-name:normalizeWhitespace","kind":"symbol","language":"jsts","symbolName":"normalizeWhitespace","metadata":{"unresolvedName":"normalizeWhitespace"}}],["symbol-name:truncate",{"id":"symbol-name:truncate","kind":"symbol","language":"jsts","symbolName":"truncate","metadata":{"unresolvedName":"truncate"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:sliceAroundVisible",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:sliceAroundVisible","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","symbolName":"sliceAroundVisible","symbolKind":"function","exported":false,"metadata":{"line":252,"column":1,"cyclomaticComplexity":8,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:visibleSet.has",{"id":"external:visibleSet.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"visibleSet.has"}}],["external:entries.slice",{"id":"external:entries.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"entries.slice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:TickRail",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:TickRail","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","symbolName":"TickRail","symbolKind":"function","exported":false,"metadata":{"line":287,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":566,"column":12,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:extractEntries",{"id":"symbol-name:extractEntries","kind":"symbol","language":"jsts","symbolName":"extractEntries","metadata":{"unresolvedName":"extractEntries"}}],["symbol-name:sliceAroundVisible",{"id":"symbol-name:sliceAroundVisible","kind":"symbol","language":"jsts","symbolName":"sliceAroundVisible","metadata":{"unresolvedName":"sliceAroundVisible"}}],["symbol-name:queryCachedItems",{"id":"symbol-name:queryCachedItems","kind":"symbol","language":"jsts","symbolName":"queryCachedItems","metadata":{"unresolvedName":"queryCachedItems"}}],["symbol-name:applyFisheye",{"id":"symbol-name:applyFisheye","kind":"symbol","language":"jsts","symbolName":"applyFisheye","metadata":{"unresolvedName":"applyFisheye"}}],["symbol-name:getItems",{"id":"symbol-name:getItems","kind":"symbol","language":"jsts","symbolName":"getItems","metadata":{"unresolvedName":"getItems"}}],["symbol-name:setZoneActive",{"id":"symbol-name:setZoneActive","kind":"symbol","language":"jsts","symbolName":"setZoneActive","metadata":{"unresolvedName":"setZoneActive"}}],["symbol-name:kick",{"id":"symbol-name:kick","kind":"symbol","language":"jsts","symbolName":"kick","metadata":{"unresolvedName":"kick"}}],["symbol-name:deactivate",{"id":"symbol-name:deactivate","kind":"symbol","language":"jsts","symbolName":"deactivate","metadata":{"unresolvedName":"deactivate"}}],["symbol-name:onSelect",{"id":"symbol-name:onSelect","kind":"symbol","language":"jsts","symbolName":"onSelect","metadata":{"unresolvedName":"onSelect"}}],["external:bridge.vibrate",{"id":"external:bridge.vibrate","kind":"external","language":"jsts","metadata":{"unresolvedName":"bridge.vibrate"}}],["external:navigator.vibrate",{"id":"external:navigator.vibrate","kind":"external","language":"jsts","metadata":{"unresolvedName":"navigator.vibrate"}}],["symbol-name:vibrate",{"id":"symbol-name:vibrate","kind":"symbol","language":"jsts","symbolName":"vibrate","metadata":{"unresolvedName":"vibrate"}}],["symbol-name:setOverlayVisible",{"id":"symbol-name:setOverlayVisible","kind":"symbol","language":"jsts","symbolName":"setOverlayVisible","metadata":{"unresolvedName":"setOverlayVisible"}}],["external:kickRef.current",{"id":"external:kickRef.current","kind":"external","language":"jsts","metadata":{"unresolvedName":"kickRef.current"}}],["external:onSelectRef.current",{"id":"external:onSelectRef.current","kind":"external","language":"jsts","metadata":{"unresolvedName":"onSelectRef.current"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:onStart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:onStart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","symbolName":"onStart","symbolKind":"function","exported":false,"metadata":{"line":534,"column":21,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:onMove",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:onMove","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","symbolName":"onMove","symbolKind":"function","exported":false,"metadata":{"line":542,"column":20,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:onEnd",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:onEnd","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","symbolName":"onEnd","symbolKind":"function","exported":false,"metadata":{"line":546,"column":19,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:getTabLabel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:getTabLabel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","symbolName":"getTabLabel","symbolKind":"function","exported":false,"metadata":{"line":49,"column":1,"cyclomaticComplexity":13,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:tabs.filter",{"id":"external:tabs.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"tabs.filter"}}],["external:fileTabs.findIndex",{"id":"external:fileTabs.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"fileTabs.findIndex"}}],["external:changesTabs.findIndex",{"id":"external:changesTabs.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"changesTabs.findIndex"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":691,"column":20,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:layout.panelTabs.filter",{"id":"external:layout.panelTabs.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"layout.panelTabs.filter"}}],["external:tabs.find",{"id":"external:tabs.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"tabs.find"}}],["external:addMenuRef.current.contains",{"id":"external:addMenuRef.current.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"addMenuRef.current.contains"}}],["external:addButtonRef.current.contains",{"id":"external:addButtonRef.current.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"addButtonRef.current.contains"}}],["symbol-name:setAddMenuPos",{"id":"symbol-name:setAddMenuPos","kind":"symbol","language":"jsts","symbolName":"setAddMenuPos","metadata":{"unresolvedName":"setAddMenuPos"}}],["external:contextMenuRef.current.contains",{"id":"external:contextMenuRef.current.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"contextMenuRef.current.contains"}}],["symbol-name:setContextMenu",{"id":"symbol-name:setContextMenu","kind":"symbol","language":"jsts","symbolName":"setContextMenu","metadata":{"unresolvedName":"setContextMenu"}}],["symbol-name:setEditingTabId",{"id":"symbol-name:setEditingTabId","kind":"symbol","language":"jsts","symbolName":"setEditingTabId","metadata":{"unresolvedName":"setEditingTabId"}}],["external:tabs.some",{"id":"external:tabs.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"tabs.some"}}],["external:renameInputRef.current?.focus",{"id":"external:renameInputRef.current?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"renameInputRef.current?.focus"}}],["external:renameInputRef.current?.select",{"id":"external:renameInputRef.current?.select","kind":"external","language":"jsts","metadata":{"unresolvedName":"renameInputRef.current?.select"}}],["external:layoutStore.closeRightPanel",{"id":"external:layoutStore.closeRightPanel","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.closeRightPanel"}}],["external:layoutStore.setActiveTab",{"id":"external:layoutStore.setActiveTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.setActiveTab"}}],["symbol-name:onCloseTerminal",{"id":"symbol-name:onCloseTerminal","kind":"symbol","language":"jsts","symbolName":"onCloseTerminal","metadata":{"unresolvedName":"onCloseTerminal"}}],["external:layoutStore.removeTab",{"id":"external:layoutStore.removeTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.removeTab"}}],["external:layoutStore.moveTab",{"id":"external:layoutStore.moveTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.moveTab"}}],["symbol-name:setEditingValue",{"id":"symbol-name:setEditingValue","kind":"symbol","language":"jsts","symbolName":"setEditingValue","metadata":{"unresolvedName":"setEditingValue"}}],["external:editingValue.trim",{"id":"external:editingValue.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"editingValue.trim"}}],["symbol-name:cancelRename",{"id":"symbol-name:cancelRename","kind":"symbol","language":"jsts","symbolName":"cancelRename","metadata":{"unresolvedName":"cancelRename"}}],["symbol-name:updatePtySession",{"id":"symbol-name:updatePtySession","kind":"symbol","language":"jsts","symbolName":"updatePtySession","metadata":{"unresolvedName":"updatePtySession"}}],["external:layoutStore.updateTerminalCustomTitle",{"id":"external:layoutStore.updateTerminalCustomTitle","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.updateTerminalCustomTitle"}}],["symbol-name:setDraggedId",{"id":"symbol-name:setDraggedId","kind":"symbol","language":"jsts","symbolName":"setDraggedId","metadata":{"unresolvedName":"setDraggedId"}}],["symbol-name:setDragOverId",{"id":"symbol-name:setDragOverId","kind":"symbol","language":"jsts","symbolName":"setDragOverId","metadata":{"unresolvedName":"setDragOverId"}}],["external:layoutStore.reorderTabs",{"id":"external:layoutStore.reorderTabs","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.reorderTabs"}}],["external:tabs.map",{"id":"external:tabs.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"tabs.map"}}],["symbol-name:getTabLabel",{"id":"symbol-name:getTabLabel","kind":"symbol","language":"jsts","symbolName":"getTabLabel","metadata":{"unresolvedName":"getTabLabel"}}],["symbol-name:handleSelectTab",{"id":"symbol-name:handleSelectTab","kind":"symbol","language":"jsts","symbolName":"handleSelectTab","metadata":{"unresolvedName":"handleSelectTab"}}],["symbol-name:handleCloseTab",{"id":"symbol-name:handleCloseTab","kind":"symbol","language":"jsts","symbolName":"handleCloseTab","metadata":{"unresolvedName":"handleCloseTab"}}],["symbol-name:handleContextMenu",{"id":"symbol-name:handleContextMenu","kind":"symbol","language":"jsts","symbolName":"handleContextMenu","metadata":{"unresolvedName":"handleContextMenu"}}],["symbol-name:startRename",{"id":"symbol-name:startRename","kind":"symbol","language":"jsts","symbolName":"startRename","metadata":{"unresolvedName":"startRename"}}],["symbol-name:handleDragStart",{"id":"symbol-name:handleDragStart","kind":"symbol","language":"jsts","symbolName":"handleDragStart","metadata":{"unresolvedName":"handleDragStart"}}],["symbol-name:handleDragOver",{"id":"symbol-name:handleDragOver","kind":"symbol","language":"jsts","symbolName":"handleDragOver","metadata":{"unresolvedName":"handleDragOver"}}],["symbol-name:submitRename",{"id":"symbol-name:submitRename","kind":"symbol","language":"jsts","symbolName":"submitRename","metadata":{"unresolvedName":"submitRename"}}],["external:addButtonRef.current.getBoundingClientRect",{"id":"external:addButtonRef.current.getBoundingClientRect","kind":"external","language":"jsts","metadata":{"unresolvedName":"addButtonRef.current.getBoundingClientRect"}}],["symbol-name:children",{"id":"symbol-name:children","kind":"symbol","language":"jsts","symbolName":"children","metadata":{"unresolvedName":"children"}}],["symbol-name:onNewTerminal",{"id":"symbol-name:onNewTerminal","kind":"symbol","language":"jsts","symbolName":"onNewTerminal","metadata":{"unresolvedName":"onNewTerminal"}}],["external:layoutStore.addFilesTab",{"id":"external:layoutStore.addFilesTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.addFilesTab"}}],["external:layoutStore.addChangesTab",{"id":"external:layoutStore.addChangesTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.addChangesTab"}}],["external:layoutStore.addMcpTab",{"id":"external:layoutStore.addMcpTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.addMcpTab"}}],["external:layoutStore.addSkillTab",{"id":"external:layoutStore.addSkillTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.addSkillTab"}}],["external:layoutStore.addWorktreeTab",{"id":"external:layoutStore.addWorktreeTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.addWorktreeTab"}}],["external:layoutStore.addExtensionTab",{"id":"external:layoutStore.addExtensionTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.addExtensionTab"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:handleClickOutside",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:handleClickOutside","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","symbolName":"handleClickOutside","symbolKind":"function","exported":false,"metadata":{"line":149,"column":32,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:onDragStart",{"id":"symbol-name:onDragStart","kind":"symbol","language":"jsts","symbolName":"onDragStart","metadata":{"unresolvedName":"onDragStart"}}],["external:document.elementFromPoint",{"id":"external:document.elementFromPoint","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.elementFromPoint"}}],["external:target?.closest",{"id":"external:target?.closest","kind":"external","language":"jsts","metadata":{"unresolvedName":"target?.closest"}}],["external:tabEl.getAttribute",{"id":"external:tabEl.getAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"tabEl.getAttribute"}}],["symbol-name:onDragOver",{"id":"symbol-name:onDragOver","kind":"symbol","language":"jsts","symbolName":"onDragOver","metadata":{"unresolvedName":"onDragOver"}}],["symbol-name:onDragEnd",{"id":"symbol-name:onDragEnd","kind":"symbol","language":"jsts","symbolName":"onDragEnd","metadata":{"unresolvedName":"onDragEnd"}}],["symbol-name:onEditingValueChange",{"id":"symbol-name:onEditingValueChange","kind":"symbol","language":"jsts","symbolName":"onEditingValueChange","metadata":{"unresolvedName":"onEditingValueChange"}}],["symbol-name:onEditSubmit",{"id":"symbol-name:onEditSubmit","kind":"symbol","language":"jsts","symbolName":"onEditSubmit","metadata":{"unresolvedName":"onEditSubmit"}}],["symbol-name:onEditCancel",{"id":"symbol-name:onEditCancel","kind":"symbol","language":"jsts","symbolName":"onEditCancel","metadata":{"unresolvedName":"onEditCancel"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:handleDragStart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:handleDragStart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","symbolName":"handleDragStart","symbolKind":"function","exported":false,"metadata":{"line":561,"column":27,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":122,"column":28,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:onReorder",{"id":"symbol-name:onReorder","kind":"symbol","language":"jsts","symbolName":"onReorder","metadata":{"unresolvedName":"onReorder"}}],["external:items.map",{"id":"external:items.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"items.map"}}],["external:event.dataTransfer.setData",{"id":"external:event.dataTransfer.setData","kind":"external","language":"jsts","metadata":{"unresolvedName":"event.dataTransfer.setData"}}],["symbol-name:onActivate",{"id":"symbol-name:onActivate","kind":"symbol","language":"jsts","symbolName":"onActivate","metadata":{"unresolvedName":"onActivate"}}],["external:event.stopPropagation",{"id":"external:event.stopPropagation","kind":"external","language":"jsts","metadata":{"unresolvedName":"event.stopPropagation"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:PanelFallback",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:PanelFallback","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","symbolName":"PanelFallback","symbolKind":"function","exported":false,"metadata":{"line":22,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":251,"column":29,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:layoutStore.setRightPanelWidth",{"id":"external:layoutStore.setRightPanelWidth","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.setRightPanelWidth"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","metadata":{"lineCount":291,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","metadata":{"lineCount":1226,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","metadata":{"lineCount":47,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":282,"column":15,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:changeScopeStore.clearAll",{"id":"external:changeScopeStore.clearAll","kind":"external","language":"jsts","metadata":{"unresolvedName":"changeScopeStore.clearAll"}}],["external:getCurrentProject.mockResolvedValue",{"id":"external:getCurrentProject.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getCurrentProject.mockResolvedValue"}}],["external:getVcsInfo.mockResolvedValue",{"id":"external:getVcsInfo.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getVcsInfo.mockResolvedValue"}}],["external:getVcsDiff.mockImplementation",{"id":"external:getVcsDiff.mockImplementation","kind":"external","language":"jsts","metadata":{"unresolvedName":"getVcsDiff.mockImplementation"}}],["external:getSessionDiff.mockResolvedValue",{"id":"external:getSessionDiff.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSessionDiff.mockResolvedValue"}}],["external:getLastTurnDiff.mockResolvedValue",{"id":"external:getLastTurnDiff.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getLastTurnDiff.mockResolvedValue"}}],["external:initGitProject.mockResolvedValue",{"id":"external:initGitProject.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"initGitProject.mockResolvedValue"}}],["external:expect(getSessionDiff).toHaveBeenCalledWith",{"id":"external:expect(getSessionDiff).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getSessionDiff).toHaveBeenCalledWith"}}],["external:expect(screen.getByText('2f')).toBeInTheDocument",{"id":"external:expect(screen.getByText('2f')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('2f')).toBeInTheDocument"}}],["external:expect(screen.getAllByText('+1').length).toBeGreaterThan",{"id":"external:expect(screen.getAllByText('+1').length).toBeGreaterThan","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getAllByText('+1').length).toBeGreaterThan"}}],["external:expect(screen.getAllByText('-1').length).toBeGreaterThan",{"id":"external:expect(screen.getAllByText('-1').length).toBeGreaterThan","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getAllByText('-1').length).toBeGreaterThan"}}],["external:expect(screen.getByTestId('diff-viewer')).toBeInTheDocument",{"id":"external:expect(screen.getByTestId('diff-viewer')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByTestId('diff-viewer')).toBeInTheDocument"}}],["external:expect(screen.getAllByText('app.ts').length).toBeGreaterThan",{"id":"external:expect(screen.getAllByText('app.ts').length).toBeGreaterThan","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getAllByText('app.ts').length).toBeGreaterThan"}}],["external:expect(getLastTurnDiff).toHaveBeenCalledWith",{"id":"external:expect(getLastTurnDiff).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getLastTurnDiff).toHaveBeenCalledWith"}}],["external:expect(changeScopeStore.getMode('session-1')).toBe",{"id":"external:expect(changeScopeStore.getMode('session-1')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(changeScopeStore.getMode('session-1')).toBe"}}],["external:changeScopeStore.getMode",{"id":"external:changeScopeStore.getMode","kind":"external","language":"jsts","metadata":{"unresolvedName":"changeScopeStore.getMode"}}],["external:expect(screen.getByText('1f')).toBeInTheDocument",{"id":"external:expect(screen.getByText('1f')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('1f')).toBeInTheDocument"}}],["external:expect(screen.getAllByText('turn.ts').length).toBeGreaterThan",{"id":"external:expect(screen.getAllByText('turn.ts').length).toBeGreaterThan","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getAllByText('turn.ts').length).toBeGreaterThan"}}],["external:expect(getVcsDiff).toHaveBeenCalledWith",{"id":"external:expect(getVcsDiff).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getVcsDiff).toHaveBeenCalledWith"}}],["external:expect(screen.getAllByText('branch.ts').length).toBeGreaterThan",{"id":"external:expect(screen.getAllByText('branch.ts').length).toBeGreaterThan","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getAllByText('branch.ts').length).toBeGreaterThan"}}],["external:expect(sessionChangesOption).toHaveFocus",{"id":"external:expect(sessionChangesOption).toHaveFocus","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(sessionChangesOption).toHaveFocus"}}],["external:expect(lastTurnOption).toHaveFocus",{"id":"external:expect(lastTurnOption).toHaveFocus","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(lastTurnOption).toHaveFocus"}}],["external:expect(treeButton).toHaveAttribute",{"id":"external:expect(treeButton).toHaveAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(treeButton).toHaveAttribute"}}],["external:expect(unifiedButton).toHaveAttribute",{"id":"external:expect(unifiedButton).toHaveAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(unifiedButton).toHaveAttribute"}}],["external:expect(listButton).toHaveAttribute",{"id":"external:expect(listButton).toHaveAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(listButton).toHaveAttribute"}}],["external:expect(splitButton).toHaveAttribute",{"id":"external:expect(splitButton).toHaveAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(splitButton).toHaveAttribute"}}],["external:getCurrentProject.mockResolvedValueOnce",{"id":"external:getCurrentProject.mockResolvedValueOnce","kind":"external","language":"jsts","metadata":{"unresolvedName":"getCurrentProject.mockResolvedValueOnce"}}],["external:expect(initGitProject).toHaveBeenCalledWith",{"id":"external:expect(initGitProject).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(initGitProject).toHaveBeenCalledWith"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:getDefaultChangeMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:getDefaultChangeMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","symbolName":"getDefaultChangeMode","symbolKind":"function","exported":false,"metadata":{"line":31,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:options.includes",{"id":"external:options.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"options.includes"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:reconcileDiffPreviewState",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:reconcileDiffPreviewState","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","symbolName":"reconcileDiffPreviewState","symbolKind":"function","exported":false,"metadata":{"line":39,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:diffs.map",{"id":"external:diffs.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"diffs.map"}}],["external:openFiles.filter",{"id":"external:openFiles.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"openFiles.filter"}}],["external:availableFiles.has",{"id":"external:availableFiles.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"availableFiles.has"}}],["external:nextOpenFiles.push",{"id":"external:nextOpenFiles.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"nextOpenFiles.push"}}],["external:nextOpenFiles.includes",{"id":"external:nextOpenFiles.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"nextOpenFiles.includes"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":1210,"column":18,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["symbol-name:useSessionChangeScope",{"id":"symbol-name:useSessionChangeScope","kind":"symbol","language":"jsts","symbolName":"useSessionChangeScope","metadata":{"unresolvedName":"useSessionChangeScope"}}],["symbol-name:useId",{"id":"symbol-name:useId","kind":"symbol","language":"jsts","symbolName":"useId","metadata":{"unresolvedName":"useId"}}],["external:changeScopeStore.setMode",{"id":"external:changeScopeStore.setMode","kind":"external","language":"jsts","metadata":{"unresolvedName":"changeScopeStore.setMode"}}],["external:options.push",{"id":"external:options.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"options.push"}}],["symbol-name:getDefaultChangeMode",{"id":"symbol-name:getDefaultChangeMode","kind":"symbol","language":"jsts","symbolName":"getDefaultChangeMode","metadata":{"unresolvedName":"getDefaultChangeMode"}}],["external:changeMenuOptionRefs.current[mode]?.focus",{"id":"external:changeMenuOptionRefs.current[mode]?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"changeMenuOptionRefs.current[mode]?.focus"}}],["external:element?.closest",{"id":"external:element?.closest","kind":"external","language":"jsts","metadata":{"unresolvedName":"element?.closest"}}],["external:window.getComputedStyle",{"id":"external:window.getComputedStyle","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.getComputedStyle"}}],["external:document.body.querySelectorAll",{"id":"external:document.body.querySelectorAll","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.body.querySelectorAll"}}],["external:element.closest",{"id":"external:element.closest","kind":"external","language":"jsts","metadata":{"unresolvedName":"element.closest"}}],["external:focusables.findIndex",{"id":"external:focusables.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"focusables.findIndex"}}],["external:focusables[currentIndex + direction]?.focus",{"id":"external:focusables[currentIndex + direction]?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"focusables[currentIndex + direction]?.focus"}}],["symbol-name:setMountedPreviewFiles",{"id":"symbol-name:setMountedPreviewFiles","kind":"symbol","language":"jsts","symbolName":"setMountedPreviewFiles","metadata":{"unresolvedName":"setMountedPreviewFiles"}}],["external:[...prev].filter",{"id":"external:[...prev].filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"[...prev].filter"}}],["external:openFiles.has",{"id":"external:openFiles.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"openFiles.has"}}],["external:next.add",{"id":"external:next.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"next.add"}}],["external:[...next].every",{"id":"external:[...next].every","kind":"external","language":"jsts","metadata":{"unresolvedName":"[...next].every"}}],["external:prev.has",{"id":"external:prev.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"prev.has"}}],["external:changeMenuRef.current?.contains",{"id":"external:changeMenuRef.current?.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"changeMenuRef.current?.contains"}}],["external:changeMenuTriggerRef.current?.contains",{"id":"external:changeMenuTriggerRef.current?.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"changeMenuTriggerRef.current?.contains"}}],["symbol-name:setChangeMenuOpen",{"id":"symbol-name:setChangeMenuOpen","kind":"symbol","language":"jsts","symbolName":"setChangeMenuOpen","metadata":{"unresolvedName":"setChangeMenuOpen"}}],["symbol-name:isVisibleFocusableElement",{"id":"symbol-name:isVisibleFocusableElement","kind":"symbol","language":"jsts","symbolName":"isVisibleFocusableElement","metadata":{"unresolvedName":"isVisibleFocusableElement"}}],["external:changeMenuTriggerRef.current?.focus",{"id":"external:changeMenuTriggerRef.current?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"changeMenuTriggerRef.current?.focus"}}],["external:changeOptions.includes",{"id":"external:changeOptions.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"changeOptions.includes"}}],["symbol-name:focusChangeMenuOption",{"id":"symbol-name:focusChangeMenuOption","kind":"symbol","language":"jsts","symbolName":"focusChangeMenuOption","metadata":{"unresolvedName":"focusChangeMenuOption"}}],["external:changeOptions.findIndex",{"id":"external:changeOptions.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"changeOptions.findIndex"}}],["symbol-name:focusRelativeToChangeTrigger",{"id":"symbol-name:focusRelativeToChangeTrigger","kind":"symbol","language":"jsts","symbolName":"focusRelativeToChangeTrigger","metadata":{"unresolvedName":"focusRelativeToChangeTrigger"}}],["symbol-name:focusByIndex",{"id":"symbol-name:focusByIndex","kind":"symbol","language":"jsts","symbolName":"focusByIndex","metadata":{"unresolvedName":"focusByIndex"}}],["symbol-name:setProjectLoading",{"id":"symbol-name:setProjectLoading","kind":"symbol","language":"jsts","symbolName":"setProjectLoading","metadata":{"unresolvedName":"setProjectLoading"}}],["symbol-name:getCurrentProject",{"id":"symbol-name:getCurrentProject","kind":"symbol","language":"jsts","symbolName":"getCurrentProject","metadata":{"unresolvedName":"getCurrentProject"}}],["symbol-name:setProject",{"id":"symbol-name:setProject","kind":"symbol","language":"jsts","symbolName":"setProject","metadata":{"unresolvedName":"setProject"}}],["external:getVcsInfo(directory).catch",{"id":"external:getVcsInfo(directory).catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"getVcsInfo(directory).catch"}}],["symbol-name:getVcsInfo",{"id":"symbol-name:getVcsInfo","kind":"symbol","language":"jsts","symbolName":"getVcsInfo","metadata":{"unresolvedName":"getVcsInfo"}}],["symbol-name:setVcsInfo",{"id":"symbol-name:setVcsInfo","kind":"symbol","language":"jsts","symbolName":"setVcsInfo","metadata":{"unresolvedName":"setVcsInfo"}}],["symbol-name:sessionErrorHandler",{"id":"symbol-name:sessionErrorHandler","kind":"symbol","language":"jsts","symbolName":"sessionErrorHandler","metadata":{"unresolvedName":"sessionErrorHandler"}}],["symbol-name:setLoadingModes",{"id":"symbol-name:setLoadingModes","kind":"symbol","language":"jsts","symbolName":"setLoadingModes","metadata":{"unresolvedName":"setLoadingModes"}}],["symbol-name:getVcsDiff",{"id":"symbol-name:getVcsDiff","kind":"symbol","language":"jsts","symbolName":"getVcsDiff","metadata":{"unresolvedName":"getVcsDiff"}}],["symbol-name:getSessionDiff",{"id":"symbol-name:getSessionDiff","kind":"symbol","language":"jsts","symbolName":"getSessionDiff","metadata":{"unresolvedName":"getSessionDiff"}}],["symbol-name:getLastTurnDiff",{"id":"symbol-name:getLastTurnDiff","kind":"symbol","language":"jsts","symbolName":"getLastTurnDiff","metadata":{"unresolvedName":"getLastTurnDiff"}}],["symbol-name:setGitDiffs",{"id":"symbol-name:setGitDiffs","kind":"symbol","language":"jsts","symbolName":"setGitDiffs","metadata":{"unresolvedName":"setGitDiffs"}}],["symbol-name:setBranchDiffs",{"id":"symbol-name:setBranchDiffs","kind":"symbol","language":"jsts","symbolName":"setBranchDiffs","metadata":{"unresolvedName":"setBranchDiffs"}}],["symbol-name:setSessionDiffs",{"id":"symbol-name:setSessionDiffs","kind":"symbol","language":"jsts","symbolName":"setSessionDiffs","metadata":{"unresolvedName":"setSessionDiffs"}}],["symbol-name:setTurnDiffs",{"id":"symbol-name:setTurnDiffs","kind":"symbol","language":"jsts","symbolName":"setTurnDiffs","metadata":{"unresolvedName":"setTurnDiffs"}}],["symbol-name:setLoadedModes",{"id":"symbol-name:setLoadedModes","kind":"symbol","language":"jsts","symbolName":"setLoadedModes","metadata":{"unresolvedName":"setLoadedModes"}}],["symbol-name:setOpenDiffFiles",{"id":"symbol-name:setOpenDiffFiles","kind":"symbol","language":"jsts","symbolName":"setOpenDiffFiles","metadata":{"unresolvedName":"setOpenDiffFiles"}}],["symbol-name:setSelectedFile",{"id":"symbol-name:setSelectedFile","kind":"symbol","language":"jsts","symbolName":"setSelectedFile","metadata":{"unresolvedName":"setSelectedFile"}}],["symbol-name:setExpandedDirs",{"id":"symbol-name:setExpandedDirs","kind":"symbol","language":"jsts","symbolName":"setExpandedDirs","metadata":{"unresolvedName":"setExpandedDirs"}}],["symbol-name:loadProjectState",{"id":"symbol-name:loadProjectState","kind":"symbol","language":"jsts","symbolName":"loadProjectState","metadata":{"unresolvedName":"loadProjectState"}}],["symbol-name:setChangeMode",{"id":"symbol-name:setChangeMode","kind":"symbol","language":"jsts","symbolName":"setChangeMode","metadata":{"unresolvedName":"setChangeMode"}}],["symbol-name:loadDiffMode",{"id":"symbol-name:loadDiffMode","kind":"symbol","language":"jsts","symbolName":"loadDiffMode","metadata":{"unresolvedName":"loadDiffMode"}}],["symbol-name:collectExpandedDirPaths",{"id":"symbol-name:collectExpandedDirPaths","kind":"symbol","language":"jsts","symbolName":"collectExpandedDirPaths","metadata":{"unresolvedName":"collectExpandedDirPaths"}}],["symbol-name:buildChangesTree",{"id":"symbol-name:buildChangesTree","kind":"symbol","language":"jsts","symbolName":"buildChangesTree","metadata":{"unresolvedName":"buildChangesTree"}}],["symbol-name:reconcileDiffPreviewState",{"id":"symbol-name:reconcileDiffPreviewState","kind":"symbol","language":"jsts","symbolName":"reconcileDiffPreviewState","metadata":{"unresolvedName":"reconcileDiffPreviewState"}}],["symbol-name:setInitializingGit",{"id":"symbol-name:setInitializingGit","kind":"symbol","language":"jsts","symbolName":"setInitializingGit","metadata":{"unresolvedName":"setInitializingGit"}}],["symbol-name:initGitProject",{"id":"symbol-name:initGitProject","kind":"symbol","language":"jsts","symbolName":"initGitProject","metadata":{"unresolvedName":"initGitProject"}}],["external:prev.includes",{"id":"external:prev.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"prev.includes"}}],["external:next.has",{"id":"external:next.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"next.has"}}],["external:next.delete",{"id":"external:next.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"next.delete"}}],["external:prev.indexOf",{"id":"external:prev.indexOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"prev.indexOf"}}],["external:prev.filter",{"id":"external:prev.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"prev.filter"}}],["external:next.splice",{"id":"external:next.splice","kind":"external","language":"jsts","metadata":{"unresolvedName":"next.splice"}}],["external:diffs.find",{"id":"external:diffs.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"diffs.find"}}],["external:openDiffFiles\r\n .map",{"id":"external:openDiffFiles\r\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"openDiffFiles\r\n .map"}}],["external:previewDiffs.filter",{"id":"external:previewDiffs.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"previewDiffs.filter"}}],["external:mountedPreviewFiles.has",{"id":"external:mountedPreviewFiles.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"mountedPreviewFiles.has"}}],["external:diffs.reduce",{"id":"external:diffs.reduce","kind":"external","language":"jsts","metadata":{"unresolvedName":"diffs.reduce"}}],["external:changeOptions.map",{"id":"external:changeOptions.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"changeOptions.map"}}],["external:node.focus",{"id":"external:node.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"node.focus"}}],["symbol-name:setListMode",{"id":"symbol-name:setListMode","kind":"symbol","language":"jsts","symbolName":"setListMode","metadata":{"unresolvedName":"setListMode"}}],["symbol-name:setViewMode",{"id":"symbol-name:setViewMode","kind":"symbol","language":"jsts","symbolName":"setViewMode","metadata":{"unresolvedName":"setViewMode"}}],["external:changesTree.map",{"id":"external:changesTree.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"changesTree.map"}}],["symbol-name:getFileStatus",{"id":"symbol-name:getFileStatus","kind":"symbol","language":"jsts","symbolName":"getFileStatus","metadata":{"unresolvedName":"getFileStatus"}}],["symbol-name:handleSelectFile",{"id":"symbol-name:handleSelectFile","kind":"symbol","language":"jsts","symbolName":"handleSelectFile","metadata":{"unresolvedName":"handleSelectFile"}}],["external:mountedPreviewDiffs.map",{"id":"external:mountedPreviewDiffs.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"mountedPreviewDiffs.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:handlePointerDown",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:handlePointerDown","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","symbolName":"handlePointerDown","symbolKind":"function","exported":false,"metadata":{"line":219,"column":31,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:handleKeyDown",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:handleKeyDown","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","symbolName":"handleKeyDown","symbolKind":"function","exported":false,"metadata":{"line":230,"column":27,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:focusByIndex",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:focusByIndex","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","symbolName":"focusByIndex","symbolKind":"function","exported":false,"metadata":{"line":286,"column":28,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:diff.file.split(/[/\\\\]/).pop",{"id":"external:diff.file.split(/[/\\\\]/).pop","kind":"external","language":"jsts","metadata":{"unresolvedName":"diff.file.split(/[/\\\\]/).pop"}}],["external:diff.file.split",{"id":"external:diff.file.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"diff.file.split"}}],["external:previewDiffs.map",{"id":"external:previewDiffs.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"previewDiffs.map"}}],["external:previewDiff.file.split(/[/\\\\]/).pop",{"id":"external:previewDiff.file.split(/[/\\\\]/).pop","kind":"external","language":"jsts","metadata":{"unresolvedName":"previewDiff.file.split(/[/\\\\]/).pop"}}],["external:previewDiff.file.split",{"id":"external:previewDiff.file.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"previewDiff.file.split"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:getFileStatus",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:getFileStatus","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","symbolName":"getFileStatus","symbolKind":"function","exported":false,"metadata":{"line":1003,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:diff.before.trim",{"id":"external:diff.before.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"diff.before.trim"}}],["external:diff.after.trim",{"id":"external:diff.after.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"diff.after.trim"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:buildChangesTree",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:buildChangesTree","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","symbolName":"buildChangesTree","symbolKind":"function","exported":false,"metadata":{"line":1039,"column":1,"cyclomaticComplexity":18,"maxNestingDepth":4,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:diff.file.split(/[/\\\\]/).filter",{"id":"external:diff.file.split(/[/\\\\]/).filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"diff.file.split(/[/\\\\]/).filter"}}],["external:parts.slice(0, i + 1).join",{"id":"external:parts.slice(0, i + 1).join","kind":"external","language":"jsts","metadata":{"unresolvedName":"parts.slice(0, i + 1).join"}}],["external:parts.slice",{"id":"external:parts.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"parts.slice"}}],["external:currentLevel.find",{"id":"external:currentLevel.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"currentLevel.find"}}],["external:currentLevel.push",{"id":"external:currentLevel.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"currentLevel.push"}}],["external:nodes\r\n .map",{"id":"external:nodes\r\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"nodes\r\n .map"}}],["symbol-name:processNodes",{"id":"symbol-name:processNodes","kind":"symbol","language":"jsts","symbolName":"processNodes","metadata":{"unresolvedName":"processNodes"}}],["external:processedChildren.some",{"id":"external:processedChildren.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"processedChildren.some"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:processNodes",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:processNodes","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","symbolName":"processNodes","symbolKind":"function","exported":false,"metadata":{"line":1078,"column":24,"cyclomaticComplexity":9,"maxNestingDepth":4,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:collectExpandedDirPaths",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:collectExpandedDirPaths","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","symbolName":"collectExpandedDirPaths","symbolKind":"function","exported":false,"metadata":{"line":1108,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:allDirPaths.add",{"id":"external:allDirPaths.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"allDirPaths.add"}}],["symbol-name:collectDirs",{"id":"symbol-name:collectDirs","kind":"symbol","language":"jsts","symbolName":"collectDirs","metadata":{"unresolvedName":"collectDirs"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:collectDirs",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:collectDirs","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","symbolName":"collectDirs","symbolKind":"function","exported":false,"metadata":{"line":1111,"column":23,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:expandedDirs.has",{"id":"external:expandedDirs.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"expandedDirs.has"}}],["symbol-name:onToggleDir",{"id":"symbol-name:onToggleDir","kind":"symbol","language":"jsts","symbolName":"onToggleDir","metadata":{"unresolvedName":"onToggleDir"}}],["symbol-name:onSelectFile",{"id":"symbol-name:onSelectFile","kind":"symbol","language":"jsts","symbolName":"onSelectFile","metadata":{"unresolvedName":"onSelectFile"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx","metadata":{"lineCount":61,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx","metadata":{"lineCount":210,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":40,"column":77,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:getSkillsMock.mockReset",{"id":"external:getSkillsMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSkillsMock.mockReset"}}],["external:getSkillsMock.mockResolvedValue",{"id":"external:getSkillsMock.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSkillsMock.mockResolvedValue"}}],["external:expect(screen.getByRole('button', { name: 'Refresh' })).toBeInTheDocument",{"id":"external:expect(screen.getByRole('button', { name: 'Refresh' })).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Refresh' })).toBeInTheDocument"}}],["external:expect(screen.getByText('Global')).toBeInTheDocument",{"id":"external:expect(screen.getByText('Global')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('Global')).toBeInTheDocument"}}],["external:expect(screen.getByText('Project')).toBeInTheDocument",{"id":"external:expect(screen.getByText('Project')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('Project')).toBeInTheDocument"}}],["external:expect(screen.getByText('(2)')).toBeInTheDocument",{"id":"external:expect(screen.getByText('(2)')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('(2)')).toBeInTheDocument"}}],["external:expect(searchInput).toHaveAttribute",{"id":"external:expect(searchInput).toHaveAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(searchInput).toHaveAttribute"}}],["external:expect(itemButton).toHaveAttribute",{"id":"external:expect(itemButton).toHaveAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(itemButton).toHaveAttribute"}}],["external:expect(screen.getByText('skill content')).toBeInTheDocument",{"id":"external:expect(screen.getByText('skill content')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('skill content')).toBeInTheDocument"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":176,"column":24,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setSkills",{"id":"symbol-name:setSkills","kind":"symbol","language":"jsts","symbolName":"setSkills","metadata":{"unresolvedName":"setSkills"}}],["symbol-name:loadSkills",{"id":"symbol-name:loadSkills","kind":"symbol","language":"jsts","symbolName":"loadSkills","metadata":{"unresolvedName":"loadSkills"}}],["external:skills.filter",{"id":"external:skills.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"skills.filter"}}],["external:skill.name.toLowerCase().includes",{"id":"external:skill.name.toLowerCase().includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"skill.name.toLowerCase().includes"}}],["external:skill.name.toLowerCase",{"id":"external:skill.name.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"skill.name.toLowerCase"}}],["external:filter.toLowerCase",{"id":"external:filter.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"filter.toLowerCase"}}],["external:skill.description.toLowerCase().includes",{"id":"external:skill.description.toLowerCase().includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"skill.description.toLowerCase().includes"}}],["external:skill.description.toLowerCase",{"id":"external:skill.description.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"skill.description.toLowerCase"}}],["external:SKILL_SOURCE_ORDER.map",{"id":"external:SKILL_SOURCE_ORDER.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"SKILL_SOURCE_ORDER.map"}}],["external:filteredSkills.filter",{"id":"external:filteredSkills.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"filteredSkills.filter"}}],["external:groupedSkills.map",{"id":"external:groupedSkills.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"groupedSkills.map"}}],["external:group.skills.map",{"id":"external:group.skills.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"group.skills.map"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","metadata":{"lineCount":1034,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:@xterm/xterm",{"id":"external:@xterm/xterm","kind":"external","language":"jsts","metadata":{"source":"@xterm/xterm"}}],["external:@xterm/addon-fit",{"id":"external:@xterm/addon-fit","kind":"external","language":"jsts","metadata":{"source":"@xterm/addon-fit"}}],["external:@xterm/addon-serialize",{"id":"external:@xterm/addon-serialize","kind":"external","language":"jsts","metadata":{"source":"@xterm/addon-serialize"}}],["external:@xterm/addon-web-links",{"id":"external:@xterm/addon-web-links","kind":"external","language":"jsts","metadata":{"source":"@xterm/addon-web-links"}}],["external:@xterm/xterm/css/xterm.css",{"id":"external:@xterm/xterm/css/xterm.css","kind":"external","language":"jsts","metadata":{"source":"@xterm/xterm/css/xterm.css"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","metadata":{"lineCount":74,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts","metadata":{"lineCount":40,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts","metadata":{"lineCount":66,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getHSLColor",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getHSLColor","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"getHSLColor","symbolKind":"function","exported":false,"metadata":{"line":27,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:getComputedStyle(document.documentElement).getPropertyValue(varName).trim",{"id":"external:getComputedStyle(document.documentElement).getPropertyValue(varName).trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"getComputedStyle(document.documentElement).getPropertyValue(varName).trim"}}],["external:getComputedStyle(document.documentElement).getPropertyValue",{"id":"external:getComputedStyle(document.documentElement).getPropertyValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getComputedStyle(document.documentElement).getPropertyValue"}}],["symbol-name:getComputedStyle",{"id":"symbol-name:getComputedStyle","kind":"symbol","language":"jsts","symbolName":"getComputedStyle","metadata":{"unresolvedName":"getComputedStyle"}}],["external:value.split",{"id":"external:value.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"value.split"}}],["symbol-name:parseFloat",{"id":"symbol-name:parseFloat","kind":"symbol","language":"jsts","symbolName":"parseFloat","metadata":{"unresolvedName":"parseFloat"}}],["external:Math.round(255 * color)\r\n .toString(16)\r\n .padStart",{"id":"external:Math.round(255 * color)\r\n .toString(16)\r\n .padStart","kind":"external","language":"jsts","metadata":{"unresolvedName":"Math.round(255 * color)\r\n .toString(16)\r\n .padStart"}}],["external:Math.round(255 * color)\r\n .toString",{"id":"external:Math.round(255 * color)\r\n .toString","kind":"external","language":"jsts","metadata":{"unresolvedName":"Math.round(255 * color)\r\n .toString"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:f",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:f","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"f","symbolKind":"function","exported":false,"metadata":{"line":41,"column":13,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getTerminalTheme",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getTerminalTheme","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"getTerminalTheme","symbolKind":"function","exported":false,"metadata":{"line":51,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getHSLColor",{"id":"symbol-name:getHSLColor","kind":"symbol","language":"jsts","symbolName":"getHSLColor","metadata":{"unresolvedName":"getHSLColor"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:isDarkMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:isDarkMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"isDarkMode","symbolKind":"function","exported":false,"metadata":{"line":113,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:document.documentElement.getAttribute",{"id":"external:document.documentElement.getAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.documentElement.getAttribute"}}],["external:window.matchMedia",{"id":"external:window.matchMedia","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.matchMedia"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:createStickyModifiers",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:createStickyModifiers","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"createStickyModifiers","symbolKind":"function","exported":false,"metadata":{"line":130,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:toCtrlSequence",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:toCtrlSequence","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"toCtrlSequence","symbolKind":"function","exported":false,"metadata":{"line":161,"column":1,"cyclomaticComplexity":14,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:data.toUpperCase",{"id":"external:data.toUpperCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"data.toUpperCase"}}],["external:String.fromCharCode",{"id":"external:String.fromCharCode","kind":"external","language":"jsts","metadata":{"unresolvedName":"String.fromCharCode"}}],["external:upper.charCodeAt",{"id":"external:upper.charCodeAt","kind":"external","language":"jsts","metadata":{"unresolvedName":"upper.charCodeAt"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:hasStickyModifier",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:hasStickyModifier","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"hasStickyModifier","symbolKind":"function","exported":false,"metadata":{"line":192,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:isNativePasteShortcut",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:isNativePasteShortcut","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"isNativePasteShortcut","symbolKind":"function","exported":false,"metadata":{"line":196,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:canReadClipboardText",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:canReadClipboardText","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"canReadClipboardText","symbolKind":"function","exported":false,"metadata":{"line":200,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:applyStickyModifiers",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:applyStickyModifiers","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"applyStickyModifiers","symbolKind":"function","exported":false,"metadata":{"line":206,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:toCtrlSequence",{"id":"symbol-name:toCtrlSequence","kind":"symbol","language":"jsts","symbolName":"toCtrlSequence","metadata":{"unresolvedName":"toCtrlSequence"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:MobileExtraKeys",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:MobileExtraKeys","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"MobileExtraKeys","symbolKind":"function","exported":false,"metadata":{"line":220,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:onSend",{"id":"symbol-name:onSend","kind":"symbol","language":"jsts","symbolName":"onSend","metadata":{"unresolvedName":"onSend"}}],["symbol-name:onFocusTerminal",{"id":"symbol-name:onFocusTerminal","kind":"symbol","language":"jsts","symbolName":"onFocusTerminal","metadata":{"unresolvedName":"onFocusTerminal"}}],["external:MOBILE_EXTRA_KEY_ROWS.map",{"id":"external:MOBILE_EXTRA_KEY_ROWS.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"MOBILE_EXTRA_KEY_ROWS.map"}}],["external:row.map",{"id":"external:row.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"row.map"}}],["symbol-name:onToggleSticky",{"id":"symbol-name:onToggleSticky","kind":"symbol","language":"jsts","symbolName":"onToggleSticky","metadata":{"unresolvedName":"onToggleSticky"}}],["symbol-name:handleSend",{"id":"symbol-name:handleSend","kind":"symbol","language":"jsts","symbolName":"handleSend","metadata":{"unresolvedName":"handleSend"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":1016,"column":23,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:createStickyModifiers",{"id":"symbol-name:createStickyModifiers","kind":"symbol","language":"jsts","symbolName":"createStickyModifiers","metadata":{"unresolvedName":"createStickyModifiers"}}],["symbol-name:useInputCapabilities",{"id":"symbol-name:useInputCapabilities","kind":"symbol","language":"jsts","symbolName":"useInputCapabilities","metadata":{"unresolvedName":"useInputCapabilities"}}],["external:panelTabs.find",{"id":"external:panelTabs.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"panelTabs.find"}}],["external:Number.isSafeInteger",{"id":"external:Number.isSafeInteger","kind":"external","language":"jsts","metadata":{"unresolvedName":"Number.isSafeInteger"}}],["symbol-name:setStickyModifiers",{"id":"symbol-name:setStickyModifiers","kind":"symbol","language":"jsts","symbolName":"setStickyModifiers","metadata":{"unresolvedName":"setStickyModifiers"}}],["external:terminalRef.current?.focus",{"id":"external:terminalRef.current?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"terminalRef.current?.focus"}}],["symbol-name:applyStickyModifiers",{"id":"symbol-name:applyStickyModifiers","kind":"symbol","language":"jsts","symbolName":"applyStickyModifiers","metadata":{"unresolvedName":"applyStickyModifiers"}}],["external:transportSendRef.current",{"id":"external:transportSendRef.current","kind":"external","language":"jsts","metadata":{"unresolvedName":"transportSendRef.current"}}],["symbol-name:hasStickyModifier",{"id":"symbol-name:hasStickyModifier","kind":"symbol","language":"jsts","symbolName":"hasStickyModifier","metadata":{"unresolvedName":"hasStickyModifier"}}],["symbol-name:clearStickyModifiers",{"id":"symbol-name:clearStickyModifiers","kind":"symbol","language":"jsts","symbolName":"clearStickyModifiers","metadata":{"unresolvedName":"clearStickyModifiers"}}],["symbol-name:setHasBeenActive",{"id":"symbol-name:setHasBeenActive","kind":"symbol","language":"jsts","symbolName":"setHasBeenActive","metadata":{"unresolvedName":"setHasBeenActive"}}],["symbol-name:getTerminalTheme",{"id":"symbol-name:getTerminalTheme","kind":"symbol","language":"jsts","symbolName":"getTerminalTheme","metadata":{"unresolvedName":"getTerminalTheme"}}],["symbol-name:isDarkMode",{"id":"symbol-name:isDarkMode","kind":"symbol","language":"jsts","symbolName":"isDarkMode","metadata":{"unresolvedName":"isDarkMode"}}],["external:rootStyle.getPropertyValue('--fs-terminal').trim",{"id":"external:rootStyle.getPropertyValue('--fs-terminal').trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"rootStyle.getPropertyValue('--fs-terminal').trim"}}],["external:rootStyle.getPropertyValue",{"id":"external:rootStyle.getPropertyValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"rootStyle.getPropertyValue"}}],["external:rootStyle.getPropertyValue('--fs-terminal-line-height').trim",{"id":"external:rootStyle.getPropertyValue('--fs-terminal-line-height').trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"rootStyle.getPropertyValue('--fs-terminal-line-height').trim"}}],["external:rootStyle.getPropertyValue('--font-mono').trim",{"id":"external:rootStyle.getPropertyValue('--font-mono').trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"rootStyle.getPropertyValue('--font-mono').trim"}}],["external:import('@tauri-apps/plugin-opener').then(mod => mod.openUrl(uri)).catch",{"id":"external:import('@tauri-apps/plugin-opener').then(mod => mod.openUrl(uri)).catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"import('@tauri-apps/plugin-opener').then(mod => mod.openUrl(uri)).catch"}}],["external:import('@tauri-apps/plugin-opener').then",{"id":"external:import('@tauri-apps/plugin-opener').then","kind":"external","language":"jsts","metadata":{"unresolvedName":"import('@tauri-apps/plugin-opener').then"}}],["external:terminal.loadAddon",{"id":"external:terminal.loadAddon","kind":"external","language":"jsts","metadata":{"unresolvedName":"terminal.loadAddon"}}],["external:terminal.open",{"id":"external:terminal.open","kind":"external","language":"jsts","metadata":{"unresolvedName":"terminal.open"}}],["external:terminal.attachCustomKeyEventHandler",{"id":"external:terminal.attachCustomKeyEventHandler","kind":"external","language":"jsts","metadata":{"unresolvedName":"terminal.attachCustomKeyEventHandler"}}],["external:keybindingStore.findMatchingAction",{"id":"external:keybindingStore.findMatchingAction","kind":"external","language":"jsts","metadata":{"unresolvedName":"keybindingStore.findMatchingAction"}}],["symbol-name:isNativePasteShortcut",{"id":"symbol-name:isNativePasteShortcut","kind":"symbol","language":"jsts","symbolName":"isNativePasteShortcut","metadata":{"unresolvedName":"isNativePasteShortcut"}}],["external:readTextFromClipboard()\r\n .then",{"id":"external:readTextFromClipboard()\r\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"readTextFromClipboard()\r\n .then"}}],["symbol-name:readTextFromClipboard",{"id":"symbol-name:readTextFromClipboard","kind":"symbol","language":"jsts","symbolName":"readTextFromClipboard","metadata":{"unresolvedName":"readTextFromClipboard"}}],["symbol-name:sendTerminalData",{"id":"symbol-name:sendTerminalData","kind":"symbol","language":"jsts","symbolName":"sendTerminalData","metadata":{"unresolvedName":"sendTerminalData"}}],["external:terminal.hasSelection",{"id":"external:terminal.hasSelection","kind":"external","language":"jsts","metadata":{"unresolvedName":"terminal.hasSelection"}}],["external:terminal.getSelection",{"id":"external:terminal.getSelection","kind":"external","language":"jsts","metadata":{"unresolvedName":"terminal.getSelection"}}],["external:copyTextToClipboard(selected).catch",{"id":"external:copyTextToClipboard(selected).catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"copyTextToClipboard(selected).catch"}}],["symbol-name:copyTextToClipboard",{"id":"symbol-name:copyTextToClipboard","kind":"symbol","language":"jsts","symbolName":"copyTextToClipboard","metadata":{"unresolvedName":"copyTextToClipboard"}}],["external:terminal.clearSelection",{"id":"external:terminal.clearSelection","kind":"external","language":"jsts","metadata":{"unresolvedName":"terminal.clearSelection"}}],["external:copyTextToClipboard(selected)\r\n .then",{"id":"external:copyTextToClipboard(selected)\r\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"copyTextToClipboard(selected)\r\n .then"}}],["symbol-name:canReadClipboardText",{"id":"symbol-name:canReadClipboardText","kind":"symbol","language":"jsts","symbolName":"canReadClipboardText","metadata":{"unresolvedName":"canReadClipboardText"}}],["external:terminal.focus",{"id":"external:terminal.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"terminal.focus"}}],["external:readTextFromClipboard()\r\n .then",{"id":"external:readTextFromClipboard()\r\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"readTextFromClipboard()\r\n .then"}}],["external:terminalElement?.addEventListener",{"id":"external:terminalElement?.addEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"terminalElement?.addEventListener"}}],["external:textarea.setAttribute",{"id":"external:textarea.setAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"textarea.setAttribute"}}],["external:textarea.addEventListener",{"id":"external:textarea.addEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"textarea.addEventListener"}}],["external:layoutStore.updateTerminalTab",{"id":"external:layoutStore.updateTerminalTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.updateTerminalTab"}}],["external:updatePtySession(ptyId, { size: { cols, rows } }, terminalDirectory).catch",{"id":"external:updatePtySession(ptyId, { size: { cols, rows } }, terminalDirectory).catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"updatePtySession(ptyId, { size: { cols, rows } }, terminalDirectory).catch"}}],["symbol-name:resetTransport",{"id":"symbol-name:resetTransport","kind":"symbol","language":"jsts","symbolName":"resetTransport","metadata":{"unresolvedName":"resetTransport"}}],["external:terminal.write",{"id":"external:terminal.write","kind":"external","language":"jsts","metadata":{"unresolvedName":"terminal.write"}}],["external:Math.pow",{"id":"external:Math.pow","kind":"external","language":"jsts","metadata":{"unresolvedName":"Math.pow"}}],["external:(delay / 1000).toFixed",{"id":"external:(delay / 1000).toFixed","kind":"external","language":"jsts","metadata":{"unresolvedName":"(delay / 1000).toFixed"}}],["symbol-name:connectTransport",{"id":"symbol-name:connectTransport","kind":"symbol","language":"jsts","symbolName":"connectTransport","metadata":{"unresolvedName":"connectTransport"}}],["external:fitAddon.fit",{"id":"external:fitAddon.fit","kind":"external","language":"jsts","metadata":{"unresolvedName":"fitAddon.fit"}}],["external:import('../api/ptyBridge')\r\n .then",{"id":"external:import('../api/ptyBridge')\r\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"import('../api/ptyBridge')\r\n .then"}}],["symbol-name:connectTauriPty",{"id":"symbol-name:connectTauriPty","kind":"symbol","language":"jsts","symbolName":"connectTauriPty","metadata":{"unresolvedName":"connectTauriPty"}}],["symbol-name:parsePtyFrame",{"id":"symbol-name:parsePtyFrame","kind":"symbol","language":"jsts","symbolName":"parsePtyFrame","metadata":{"unresolvedName":"parsePtyFrame"}}],["external:connection.close",{"id":"external:connection.close","kind":"external","language":"jsts","metadata":{"unresolvedName":"connection.close"}}],["external:connection.send",{"id":"external:connection.send","kind":"external","language":"jsts","metadata":{"unresolvedName":"connection.send"}}],["symbol-name:handleDisconnected",{"id":"symbol-name:handleDisconnected","kind":"symbol","language":"jsts","symbolName":"handleDisconnected","metadata":{"unresolvedName":"handleDisconnected"}}],["symbol-name:getPtyConnectUrl",{"id":"symbol-name:getPtyConnectUrl","kind":"symbol","language":"jsts","symbolName":"getPtyConnectUrl","metadata":{"unresolvedName":"getPtyConnectUrl"}}],["external:ws?.close",{"id":"external:ws?.close","kind":"external","language":"jsts","metadata":{"unresolvedName":"ws?.close"}}],["external:disposeData?.dispose",{"id":"external:disposeData?.dispose","kind":"external","language":"jsts","metadata":{"unresolvedName":"disposeData?.dispose"}}],["external:terminal.onData",{"id":"external:terminal.onData","kind":"external","language":"jsts","metadata":{"unresolvedName":"terminal.onData"}}],["external:terminal.scrollToLine",{"id":"external:terminal.scrollToLine","kind":"external","language":"jsts","metadata":{"unresolvedName":"terminal.scrollToLine"}}],["symbol-name:scheduleInitialConnect",{"id":"symbol-name:scheduleInitialConnect","kind":"symbol","language":"jsts","symbolName":"scheduleInitialConnect","metadata":{"unresolvedName":"scheduleInitialConnect"}}],["external:terminal.onTitleChange",{"id":"external:terminal.onTitleChange","kind":"external","language":"jsts","metadata":{"unresolvedName":"terminal.onTitleChange"}}],["external:layoutStore.updateTerminalShellTitle",{"id":"external:layoutStore.updateTerminalShellTitle","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.updateTerminalShellTitle"}}],["external:layoutStore.updateTerminalSnapshot",{"id":"external:layoutStore.updateTerminalSnapshot","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.updateTerminalSnapshot"}}],["external:serializeAddon.serialize",{"id":"external:serializeAddon.serialize","kind":"external","language":"jsts","metadata":{"unresolvedName":"serializeAddon.serialize"}}],["external:transportDisconnectRef.current",{"id":"external:transportDisconnectRef.current","kind":"external","language":"jsts","metadata":{"unresolvedName":"transportDisconnectRef.current"}}],["external:disposeTitle?.dispose",{"id":"external:disposeTitle?.dispose","kind":"external","language":"jsts","metadata":{"unresolvedName":"disposeTitle?.dispose"}}],["external:textarea?.removeEventListener",{"id":"external:textarea?.removeEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"textarea?.removeEventListener"}}],["external:terminalElement?.removeEventListener",{"id":"external:terminalElement?.removeEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"terminalElement?.removeEventListener"}}],["external:fitAddon.dispose",{"id":"external:fitAddon.dispose","kind":"external","language":"jsts","metadata":{"unresolvedName":"fitAddon.dispose"}}],["external:serializeAddon.dispose",{"id":"external:serializeAddon.dispose","kind":"external","language":"jsts","metadata":{"unresolvedName":"serializeAddon.dispose"}}],["external:webLinksAddon.dispose",{"id":"external:webLinksAddon.dispose","kind":"external","language":"jsts","metadata":{"unresolvedName":"webLinksAddon.dispose"}}],["external:terminal.dispose",{"id":"external:terminal.dispose","kind":"external","language":"jsts","metadata":{"unresolvedName":"terminal.dispose"}}],["external:terminal.element?.querySelector",{"id":"external:terminal.element?.querySelector","kind":"external","language":"jsts","metadata":{"unresolvedName":"terminal.element?.querySelector"}}],["symbol-name:setIsTouchScrolling",{"id":"symbol-name:setIsTouchScrolling","kind":"symbol","language":"jsts","symbolName":"setIsTouchScrolling","metadata":{"unresolvedName":"setIsTouchScrolling"}}],["symbol-name:stopMomentum",{"id":"symbol-name:stopMomentum","kind":"symbol","language":"jsts","symbolName":"stopMomentum","metadata":{"unresolvedName":"stopMomentum"}}],["symbol-name:startMomentum",{"id":"symbol-name:startMomentum","kind":"symbol","language":"jsts","symbolName":"startMomentum","metadata":{"unresolvedName":"startMomentum"}}],["external:container.addEventListener",{"id":"external:container.addEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"container.addEventListener"}}],["external:container.removeEventListener",{"id":"external:container.removeEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"container.removeEventListener"}}],["external:fitAddonRef.current.fit",{"id":"external:fitAddonRef.current.fit","kind":"external","language":"jsts","metadata":{"unresolvedName":"fitAddonRef.current.fit"}}],["symbol-name:handleResize",{"id":"symbol-name:handleResize","kind":"symbol","language":"jsts","symbolName":"handleResize","metadata":{"unresolvedName":"handleResize"}}],["external:terminalRef.current.focus",{"id":"external:terminalRef.current.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"terminalRef.current.focus"}}],["external:fitAddonRef.current?.fit",{"id":"external:fitAddonRef.current?.fit","kind":"external","language":"jsts","metadata":{"unresolvedName":"fitAddonRef.current?.fit"}}],["symbol-name:focusTerminal",{"id":"symbol-name:focusTerminal","kind":"symbol","language":"jsts","symbolName":"focusTerminal","metadata":{"unresolvedName":"focusTerminal"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleSelectionCopy",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleSelectionCopy","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"handleSelectionCopy","symbolKind":"function","exported":false,"metadata":{"line":481,"column":33,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleContextMenuPaste",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleContextMenuPaste","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"handleContextMenuPaste","symbolKind":"function","exported":false,"metadata":{"line":493,"column":36,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:resetTransport",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:resetTransport","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"resetTransport","symbolKind":"function","exported":false,"metadata":{"line":544,"column":28,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleConnected",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleConnected","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"handleConnected","symbolKind":"function","exported":false,"metadata":{"line":549,"column":29,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleDisconnected",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleDisconnected","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"handleDisconnected","symbolKind":"function","exported":false,"metadata":{"line":559,"column":32,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"connectTransport","symbolKind":"function","exported":false,"metadata":{"line":586,"column":30,"cyclomaticComplexity":16,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:onMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:onMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"onMessage","symbolKind":"function","exported":false,"metadata":{"line":605,"column":26,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:onError",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:onError","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"onError","symbolKind":"function","exported":false,"metadata":{"line":617,"column":24,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:scheduleInitialConnect",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:scheduleInitialConnect","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"scheduleInitialConnect","symbolKind":"function","exported":false,"metadata":{"line":678,"column":36,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:stopMomentum",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:stopMomentum","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"stopMomentum","symbolKind":"function","exported":false,"metadata":{"line":767,"column":26,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:startMomentum",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:startMomentum","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"startMomentum","symbolKind":"function","exported":false,"metadata":{"line":774,"column":27,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:step",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:step","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"step","symbolKind":"function","exported":false,"metadata":{"line":782,"column":20,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchStart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchStart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"handleTouchStart","symbolKind":"function","exported":false,"metadata":{"line":796,"column":30,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchMove",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchMove","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"handleTouchMove","symbolKind":"function","exported":false,"metadata":{"line":809,"column":29,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchEnd",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchEnd","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"handleTouchEnd","symbolKind":"function","exported":false,"metadata":{"line":836,"column":28,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleResize",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleResize","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"handleResize","symbolKind":"function","exported":false,"metadata":{"line":856,"column":26,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handlePanelResizeStart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handlePanelResizeStart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"handlePanelResizeStart","symbolKind":"function","exported":false,"metadata":{"line":877,"column":36,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handlePanelResizeEnd",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handlePanelResizeEnd","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","symbolName":"handlePanelResizeEnd","symbolKind":"function","exported":false,"metadata":{"line":938,"column":34,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","metadata":{"lineCount":326,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:Toast",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:Toast","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","symbolName":"Toast","symbolKind":"function","exported":false,"metadata":{"line":44,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:notificationStore.pauseToast",{"id":"external:notificationStore.pauseToast","kind":"external","language":"jsts","metadata":{"unresolvedName":"notificationStore.pauseToast"}}],["external:notificationStore.resumeToast",{"id":"external:notificationStore.resumeToast","kind":"external","language":"jsts","metadata":{"unresolvedName":"notificationStore.resumeToast"}}],["symbol-name:onDismiss",{"id":"symbol-name:onDismiss","kind":"symbol","language":"jsts","symbolName":"onDismiss","metadata":{"unresolvedName":"onDismiss"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":150,"column":18,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:UpdateToast",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:UpdateToast","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","symbolName":"UpdateToast","symbolKind":"function","exported":false,"metadata":{"line":115,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:shouldShowUpdateToast",{"id":"symbol-name:shouldShowUpdateToast","kind":"symbol","language":"jsts","symbolName":"shouldShowUpdateToast","metadata":{"unresolvedName":"shouldShowUpdateToast"}}],["external:updateStore.hideToastForCurrentVersion",{"id":"external:updateStore.hideToastForCurrentVersion","kind":"external","language":"jsts","metadata":{"unresolvedName":"updateStore.hideToastForCurrentVersion"}}],["symbol-name:onOpenAbout",{"id":"symbol-name:onOpenAbout","kind":"symbol","language":"jsts","symbolName":"onOpenAbout","metadata":{"unresolvedName":"onOpenAbout"}}],["external:updateStore.dismissCurrentVersion",{"id":"external:updateStore.dismissCurrentVersion","kind":"external","language":"jsts","metadata":{"unresolvedName":"updateStore.dismissCurrentVersion"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:ToastContainer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:ToastContainer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","symbolName":"ToastContainer","symbolKind":"function","exported":true,"metadata":{"line":170,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useNotificationStore",{"id":"symbol-name:useNotificationStore","kind":"symbol","language":"jsts","symbolName":"useNotificationStore","metadata":{"unresolvedName":"useNotificationStore"}}],["external:notificationStore.dismissToast",{"id":"external:notificationStore.dismissToast","kind":"external","language":"jsts","metadata":{"unresolvedName":"notificationStore.dismissToast"}}],["external:notificationStore.markRead",{"id":"external:notificationStore.markRead","kind":"external","language":"jsts","metadata":{"unresolvedName":"notificationStore.markRead"}}],["external:window.location.assign",{"id":"external:window.location.assign","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.location.assign"}}],["external:toasts.map",{"id":"external:toasts.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"toasts.map"}}],["symbol-name:handleClick",{"id":"symbol-name:handleClick","kind":"symbol","language":"jsts","symbolName":"handleClick","metadata":{"unresolvedName":"handleClick"}}],["external:notificationStore.dismissAllToasts",{"id":"external:notificationStore.dismissAllToasts","kind":"external","language":"jsts","metadata":{"unresolvedName":"notificationStore.dismissAllToasts"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:handleClick",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:handleClick","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","symbolName":"handleClick","symbolKind":"function","exported":false,"metadata":{"line":179,"column":23,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx","metadata":{"lineCount":74,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:AnimatedPresence",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:AnimatedPresence","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx","symbolName":"AnimatedPresence","symbolKind":"function","exported":true,"metadata":{"line":4,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":29,"column":12,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:ExpandableSection",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:ExpandableSection","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx","symbolName":"ExpandableSection","symbolKind":"function","exported":true,"metadata":{"line":55,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":31,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx","metadata":{"lineCount":52,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx:ConfirmDialog",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx:ConfirmDialog","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx","symbolName":"ConfirmDialog","symbolKind":"function","exported":true,"metadata":{"line":17,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":40,"column":20,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx","metadata":{"lineCount":68,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:CopyButton",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:CopyButton","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx","symbolName":"CopyButton","symbolKind":"function","exported":true,"metadata":{"line":14,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setCopied",{"id":"symbol-name:setCopied","kind":"symbol","language":"jsts","symbolName":"setCopied","metadata":{"unresolvedName":"setCopied"}}],["symbol-name:clipboardErrorHandler",{"id":"symbol-name:clipboardErrorHandler","kind":"symbol","language":"jsts","symbolName":"clipboardErrorHandler","metadata":{"unresolvedName":"clipboardErrorHandler"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":28,"column":5,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","metadata":{"lineCount":181,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":160,"column":75,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(screen.getByRole('dialog', { name: 'Test Dialog' })).toBeInTheDocument",{"id":"external:expect(screen.getByRole('dialog', { name: 'Test Dialog' })).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('dialog', { name: 'Test Dialog' })).toBeInTheDocument"}}],["external:expect(screen.getByText('Test Dialog')).toBeInTheDocument",{"id":"external:expect(screen.getByText('Test Dialog')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('Test Dialog')).toBeInTheDocument"}}],["external:expect(screen.getByText('dialog body')).toBeInTheDocument",{"id":"external:expect(screen.getByText('dialog body')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('dialog body')).toBeInTheDocument"}}],["external:expect(screen.queryByText('dialog body')).not.toBeInTheDocument",{"id":"external:expect(screen.queryByText('dialog body')).not.toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.queryByText('dialog body')).not.toBeInTheDocument"}}],["external:expect(backdrop).not.toBeNull",{"id":"external:expect(backdrop).not.toBeNull","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(backdrop).not.toBeNull"}}],["external:fireEvent.pointerDown",{"id":"external:fireEvent.pointerDown","kind":"external","language":"jsts","metadata":{"unresolvedName":"fireEvent.pointerDown"}}],["symbol-name:setIsOpen",{"id":"symbol-name:setIsOpen","kind":"symbol","language":"jsts","symbolName":"setIsOpen","metadata":{"unresolvedName":"setIsOpen"}}],["external:trigger.focus",{"id":"external:trigger.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"trigger.focus"}}],["external:expect(screen.getByRole('button', { name: 'Close' })).toHaveFocus",{"id":"external:expect(screen.getByRole('button', { name: 'Close' })).toHaveFocus","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Close' })).toHaveFocus"}}],["external:expect(screen.getByRole('dialog', { name: 'Settings' })).toBeInTheDocument",{"id":"external:expect(screen.getByRole('dialog', { name: 'Settings' })).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('dialog', { name: 'Settings' })).toBeInTheDocument"}}],["symbol-name:setIsFirstOpen",{"id":"symbol-name:setIsFirstOpen","kind":"symbol","language":"jsts","symbolName":"setIsFirstOpen","metadata":{"unresolvedName":"setIsFirstOpen"}}],["symbol-name:setIsSecondOpen",{"id":"symbol-name:setIsSecondOpen","kind":"symbol","language":"jsts","symbolName":"setIsSecondOpen","metadata":{"unresolvedName":"setIsSecondOpen"}}],["external:expect(screen.getByRole('dialog', { name: 'Second Dialog' })).toBeInTheDocument",{"id":"external:expect(screen.getByRole('dialog', { name: 'Second Dialog' })).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('dialog', { name: 'Second Dialog' })).toBeInTheDocument"}}],["external:expect(document.getElementById('first-trigger')).not.toHaveFocus",{"id":"external:expect(document.getElementById('first-trigger')).not.toHaveFocus","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(document.getElementById('first-trigger')).not.toHaveFocus"}}],["external:document.getElementById",{"id":"external:document.getElementById","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.getElementById"}}],["external:expect(secondClose).toHaveBeenCalledTimes",{"id":"external:expect(secondClose).toHaveBeenCalledTimes","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(secondClose).toHaveBeenCalledTimes"}}],["external:expect(firstClose).not.toHaveBeenCalled",{"id":"external:expect(firstClose).not.toHaveBeenCalled","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(firstClose).not.toHaveBeenCalled"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:Harness",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:Harness","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","symbolName":"Harness","symbolKind":"function","exported":false,"metadata":{"line":115,"column":5,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","symbolName":"Dialog","symbolKind":"function","exported":true,"metadata":{"line":22,"column":1,"cyclomaticComplexity":71,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:target?.focus",{"id":"external:target?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"target?.focus"}}],["external:document.querySelectorAll",{"id":"external:document.querySelectorAll","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.querySelectorAll"}}],["external:document.contains",{"id":"external:document.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.contains"}}],["external:previousFocusedElement.focus",{"id":"external:previousFocusedElement.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"previousFocusedElement.focus"}}],["external:replacement?.focus",{"id":"external:replacement?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"replacement?.focus"}}],["external:dialogs.at",{"id":"external:dialogs.at","kind":"external","language":"jsts","metadata":{"unresolvedName":"dialogs.at"}}],["symbol-name:focusFirstFocusable",{"id":"symbol-name:focusFirstFocusable","kind":"symbol","language":"jsts","symbolName":"focusFirstFocusable","metadata":{"unresolvedName":"focusFirstFocusable"}}],["symbol-name:getTopOpenDialog",{"id":"symbol-name:getTopOpenDialog","kind":"symbol","language":"jsts","symbolName":"getTopOpenDialog","metadata":{"unresolvedName":"getTopOpenDialog"}}],["external:activeDialog.contains",{"id":"external:activeDialog.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeDialog.contains"}}],["symbol-name:restorePreviousFocus",{"id":"symbol-name:restorePreviousFocus","kind":"symbol","language":"jsts","symbolName":"restorePreviousFocus","metadata":{"unresolvedName":"restorePreviousFocus"}}],["external:handle.contains",{"id":"external:handle.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"handle.contains"}}],["symbol-name:setIsDraggingActive",{"id":"symbol-name:setIsDraggingActive","kind":"symbol","language":"jsts","symbolName":"setIsDraggingActive","metadata":{"unresolvedName":"setIsDraggingActive"}}],["symbol-name:setDragY",{"id":"symbol-name:setDragY","kind":"symbol","language":"jsts","symbolName":"setDragY","metadata":{"unresolvedName":"setDragY"}}],["symbol-name:requestClose",{"id":"symbol-name:requestClose","kind":"symbol","language":"jsts","symbolName":"requestClose","metadata":{"unresolvedName":"requestClose"}}],["external:dialog.contains",{"id":"external:dialog.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"dialog.contains"}}],["external:dialogRef.current.querySelectorAll",{"id":"external:dialogRef.current.querySelectorAll","kind":"external","language":"jsts","metadata":{"unresolvedName":"dialogRef.current.querySelectorAll"}}],["external:dialogRef.current.contains",{"id":"external:dialogRef.current.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"dialogRef.current.contains"}}],["external:last.focus",{"id":"external:last.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"last.focus"}}],["external:first.focus",{"id":"external:first.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"first.focus"}}],["symbol-name:handleFocusTrap",{"id":"symbol-name:handleFocusTrap","kind":"symbol","language":"jsts","symbolName":"handleFocusTrap","metadata":{"unresolvedName":"handleFocusTrap"}}],["symbol-name:focusDialogContent",{"id":"symbol-name:focusDialogContent","kind":"symbol","language":"jsts","symbolName":"focusDialogContent","metadata":{"unresolvedName":"focusDialogContent"}}],["symbol-name:handleBackdropPointerDown",{"id":"symbol-name:handleBackdropPointerDown","kind":"symbol","language":"jsts","symbolName":"handleBackdropPointerDown","metadata":{"unresolvedName":"handleBackdropPointerDown"}}],["symbol-name:handleBackdropClick",{"id":"symbol-name:handleBackdropClick","kind":"symbol","language":"jsts","symbolName":"handleBackdropClick","metadata":{"unresolvedName":"handleBackdropClick"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":307,"column":18,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:handleKeyDown",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:handleKeyDown","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","symbolName":"handleKeyDown","symbolKind":"function","exported":false,"metadata":{"line":237,"column":27,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","metadata":{"lineCount":120,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","metadata":{"lineCount":189,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:DropdownHarness",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:DropdownHarness","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","symbolName":"DropdownHarness","symbolKind":"function","exported":false,"metadata":{"line":6,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":112,"column":9,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:ConstrainedDropdownHarness",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:ConstrainedDropdownHarness","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","symbolName":"ConstrainedDropdownHarness","symbolKind":"function","exported":false,"metadata":{"line":21,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(screen.getByText('dropdown content')).toBeInTheDocument",{"id":"external:expect(screen.getByText('dropdown content')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('dropdown content')).toBeInTheDocument"}}],["external:expect(screen.queryByText('dropdown content')).not.toBeInTheDocument",{"id":"external:expect(screen.queryByText('dropdown content')).not.toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.queryByText('dropdown content')).not.toBeInTheDocument"}}],["external:expect(menu).toHaveStyle",{"id":"external:expect(menu).toHaveStyle","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(menu).toHaveStyle"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:observe",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:observe","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","symbolName":"observe","symbolKind":"function","exported":false,"metadata":{"line":49,"column":9,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:disconnect",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:disconnect","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","symbolName":"disconnect","symbolKind":"function","exported":false,"metadata":{"line":50,"column":9,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","symbolName":"DropdownMenu","symbolKind":"function","exported":true,"metadata":{"line":28,"column":1,"cyclomaticComplexity":27,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:triggerRef.current.getBoundingClientRect",{"id":"external:triggerRef.current.getBoundingClientRect","kind":"external","language":"jsts","metadata":{"unresolvedName":"triggerRef.current.getBoundingClientRect"}}],["external:constrainToRef.current.getBoundingClientRect",{"id":"external:constrainToRef.current.getBoundingClientRect","kind":"external","language":"jsts","metadata":{"unresolvedName":"constrainToRef.current.getBoundingClientRect"}}],["symbol-name:calcStyles",{"id":"symbol-name:calcStyles","kind":"symbol","language":"jsts","symbolName":"calcStyles","metadata":{"unresolvedName":"calcStyles"}}],["symbol-name:setPosStyle",{"id":"symbol-name:setPosStyle","kind":"symbol","language":"jsts","symbolName":"setPosStyle","metadata":{"unresolvedName":"setPosStyle"}}],["symbol-name:setSizeStyle",{"id":"symbol-name:setSizeStyle","kind":"symbol","language":"jsts","symbolName":"setSizeStyle","metadata":{"unresolvedName":"setSizeStyle"}}],["symbol-name:updateStyles",{"id":"symbol-name:updateStyles","kind":"symbol","language":"jsts","symbolName":"updateStyles","metadata":{"unresolvedName":"updateStyles"}}],["symbol-name:scheduleUpdate",{"id":"symbol-name:scheduleUpdate","kind":"symbol","language":"jsts","symbolName":"scheduleUpdate","metadata":{"unresolvedName":"scheduleUpdate"}}],["external:resizeObserver?.disconnect",{"id":"external:resizeObserver?.disconnect","kind":"external","language":"jsts","metadata":{"unresolvedName":"resizeObserver?.disconnect"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":155,"column":12,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:scheduleUpdate",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:scheduleUpdate","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","symbolName":"scheduleUpdate","symbolKind":"function","exported":false,"metadata":{"line":134,"column":28,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/IconButton.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/IconButton.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/IconButton.tsx","metadata":{"lineCount":49,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/IconButton.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/IconButton.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/IconButton.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":25,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/index.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/index.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/index.ts","metadata":{"lineCount":12,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/MenuItem.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/MenuItem.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/MenuItem.tsx","metadata":{"lineCount":63,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/MenuItem.tsx:MenuItem",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/MenuItem.tsx:MenuItem","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/MenuItem.tsx","symbolName":"MenuItem","symbolKind":"function","exported":true,"metadata":{"line":13,"column":1,"cyclomaticComplexity":14,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts","metadata":{"lineCount":41,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ModalShell.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ModalShell.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ModalShell.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":28,"column":32,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useModalAnimation",{"id":"symbol-name:useModalAnimation","kind":"symbol","language":"jsts","symbolName":"useModalAnimation","metadata":{"unresolvedName":"useModalAnimation"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":170,"column":12,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useLayoutEffect",{"id":"symbol-name:useLayoutEffect","kind":"symbol","language":"jsts","symbolName":"useLayoutEffect","metadata":{"unresolvedName":"useLayoutEffect"}}],["symbol-name:setIsResizing",{"id":"symbol-name:setIsResizing","kind":"symbol","language":"jsts","symbolName":"setIsResizing","metadata":{"unresolvedName":"setIsResizing"}}],["symbol-name:onSizeChange",{"id":"symbol-name:onSizeChange","kind":"symbol","language":"jsts","symbolName":"onSizeChange","metadata":{"unresolvedName":"onSizeChange"}}],["external:panel.getBoundingClientRect",{"id":"external:panel.getBoundingClientRect","kind":"external","language":"jsts","metadata":{"unresolvedName":"panel.getBoundingClientRect"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handlePointerMove",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handlePointerMove","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","symbolName":"handlePointerMove","symbolKind":"function","exported":false,"metadata":{"line":91,"column":33,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handlePointerUp",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handlePointerUp","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","symbolName":"handlePointerUp","symbolKind":"function","exported":false,"metadata":{"line":107,"column":31,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handleTouchMove",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handleTouchMove","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","symbolName":"handleTouchMove","symbolKind":"function","exported":false,"metadata":{"line":144,"column":31,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handleTouchEnd",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handleTouchEnd","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","symbolName":"handleTouchEnd","symbolKind":"function","exported":false,"metadata":{"line":152,"column":30,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ScrollArea.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ScrollArea.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ScrollArea.tsx","metadata":{"lineCount":34,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ScrollArea.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ScrollArea.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ScrollArea.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":16,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx","metadata":{"lineCount":77,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:motion/mini",{"id":"external:motion/mini","kind":"external","language":"jsts","metadata":{"source":"motion/mini"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:SmoothHeight",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:SmoothHeight","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx","symbolName":"SmoothHeight","symbolKind":"function","exported":true,"metadata":{"line":11,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:animRef.current?.stop",{"id":"external:animRef.current?.stop","kind":"external","language":"jsts","metadata":{"unresolvedName":"animRef.current?.stop"}}],["symbol-name:animate",{"id":"symbol-name:animate","kind":"symbol","language":"jsts","symbolName":"animate","metadata":{"unresolvedName":"animate"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":64,"column":12,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:update",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:update","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx","symbolName":"update","symbolKind":"function","exported":false,"metadata":{"line":45,"column":20,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","metadata":{"lineCount":537,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":481,"column":27,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useVcsInfo",{"id":"symbol-name:useVcsInfo","kind":"symbol","language":"jsts","symbolName":"useVcsInfo","metadata":{"unresolvedName":"useVcsInfo"}}],["symbol-name:setWorktrees",{"id":"symbol-name:setWorktrees","kind":"symbol","language":"jsts","symbolName":"setWorktrees","metadata":{"unresolvedName":"setWorktrees"}}],["symbol-name:setRootDirectory",{"id":"symbol-name:setRootDirectory","kind":"symbol","language":"jsts","symbolName":"setRootDirectory","metadata":{"unresolvedName":"setRootDirectory"}}],["symbol-name:resolveRootDirectory",{"id":"symbol-name:resolveRootDirectory","kind":"symbol","language":"jsts","symbolName":"resolveRootDirectory","metadata":{"unresolvedName":"resolveRootDirectory"}}],["symbol-name:listWorktrees",{"id":"symbol-name:listWorktrees","kind":"symbol","language":"jsts","symbolName":"listWorktrees","metadata":{"unresolvedName":"listWorktrees"}}],["symbol-name:loadWorktrees",{"id":"symbol-name:loadWorktrees","kind":"symbol","language":"jsts","symbolName":"loadWorktrees","metadata":{"unresolvedName":"loadWorktrees"}}],["symbol-name:refreshVcs",{"id":"symbol-name:refreshVcs","kind":"symbol","language":"jsts","symbolName":"refreshVcs","metadata":{"unresolvedName":"refreshVcs"}}],["external:Promise.allSettled",{"id":"external:Promise.allSettled","kind":"external","language":"jsts","metadata":{"unresolvedName":"Promise.allSettled"}}],["external:ptySessions.map",{"id":"external:ptySessions.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"ptySessions.map"}}],["symbol-name:disposeInstance",{"id":"symbol-name:disposeInstance","kind":"symbol","language":"jsts","symbolName":"disposeInstance","metadata":{"unresolvedName":"disposeInstance"}}],["symbol-name:addDirectory",{"id":"symbol-name:addDirectory","kind":"symbol","language":"jsts","symbolName":"addDirectory","metadata":{"unresolvedName":"addDirectory"}}],["symbol-name:requireRootDirectory",{"id":"symbol-name:requireRootDirectory","kind":"symbol","language":"jsts","symbolName":"requireRootDirectory","metadata":{"unresolvedName":"requireRootDirectory"}}],["symbol-name:createWorktree",{"id":"symbol-name:createWorktree","kind":"symbol","language":"jsts","symbolName":"createWorktree","metadata":{"unresolvedName":"createWorktree"}}],["symbol-name:setShowCreateForm",{"id":"symbol-name:setShowCreateForm","kind":"symbol","language":"jsts","symbolName":"setShowCreateForm","metadata":{"unresolvedName":"setShowCreateForm"}}],["symbol-name:requestGitWorkspaceCatalogRefresh",{"id":"symbol-name:requestGitWorkspaceCatalogRefresh","kind":"symbol","language":"jsts","symbolName":"requestGitWorkspaceCatalogRefresh","metadata":{"unresolvedName":"requestGitWorkspaceCatalogRefresh"}}],["symbol-name:handleOpenSession",{"id":"symbol-name:handleOpenSession","kind":"symbol","language":"jsts","symbolName":"handleOpenSession","metadata":{"unresolvedName":"handleOpenSession"}}],["symbol-name:setCurrentDirectory",{"id":"symbol-name:setCurrentDirectory","kind":"symbol","language":"jsts","symbolName":"setCurrentDirectory","metadata":{"unresolvedName":"setCurrentDirectory"}}],["symbol-name:releaseWorktreeResources",{"id":"symbol-name:releaseWorktreeResources","kind":"symbol","language":"jsts","symbolName":"releaseWorktreeResources","metadata":{"unresolvedName":"releaseWorktreeResources"}}],["symbol-name:removeWorktree",{"id":"symbol-name:removeWorktree","kind":"symbol","language":"jsts","symbolName":"removeWorktree","metadata":{"unresolvedName":"removeWorktree"}}],["symbol-name:setDeleteConfirm",{"id":"symbol-name:setDeleteConfirm","kind":"symbol","language":"jsts","symbolName":"setDeleteConfirm","metadata":{"unresolvedName":"setDeleteConfirm"}}],["symbol-name:resetWorktree",{"id":"symbol-name:resetWorktree","kind":"symbol","language":"jsts","symbolName":"resetWorktree","metadata":{"unresolvedName":"resetWorktree"}}],["symbol-name:setResetConfirm",{"id":"symbol-name:setResetConfirm","kind":"symbol","language":"jsts","symbolName":"setResetConfirm","metadata":{"unresolvedName":"setResetConfirm"}}],["external:worktrees.map",{"id":"external:worktrees.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"worktrees.map"}}],["symbol-name:getDirectoryName",{"id":"symbol-name:getDirectoryName","kind":"symbol","language":"jsts","symbolName":"getDirectoryName","metadata":{"unresolvedName":"getDirectoryName"}}],["symbol-name:handleDelete",{"id":"symbol-name:handleDelete","kind":"symbol","language":"jsts","symbolName":"handleDelete","metadata":{"unresolvedName":"handleDelete"}}],["symbol-name:handleReset",{"id":"symbol-name:handleReset","kind":"symbol","language":"jsts","symbolName":"handleReset","metadata":{"unresolvedName":"handleReset"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:onWorktreeReady",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:onWorktreeReady","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","symbolName":"onWorktreeReady","symbolKind":"function","exported":false,"metadata":{"line":109,"column":24,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:onWorktreeFailed",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:onWorktreeFailed","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","symbolName":"onWorktreeFailed","symbolKind":"function","exported":false,"metadata":{"line":112,"column":25,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:onVcsBranchUpdated",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:onVcsBranchUpdated","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","symbolName":"onVcsBranchUpdated","symbolKind":"function","exported":false,"metadata":{"line":116,"column":27,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:CreateWorktreeForm",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:CreateWorktreeForm","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","symbolName":"CreateWorktreeForm","symbolKind":"function","exported":false,"metadata":{"line":412,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setAutoOpen",{"id":"symbol-name:setAutoOpen","kind":"symbol","language":"jsts","symbolName":"setAutoOpen","metadata":{"unresolvedName":"setAutoOpen"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:handleSubmit",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:handleSubmit","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","symbolName":"handleSubmit","symbolKind":"function","exported":false,"metadata":{"line":417,"column":24,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/animation.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/animation.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/animation.ts","metadata":{"lineCount":3,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/api.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/api.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/api.ts","metadata":{"lineCount":3,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/desktopWindow.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/desktopWindow.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/desktopWindow.ts","metadata":{"lineCount":10,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/index.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/index.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/index.ts","metadata":{"lineCount":12,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/pagination.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/pagination.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/pagination.ts","metadata":{"lineCount":6,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/storage.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/storage.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/storage.ts","metadata":{"lineCount":16,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/time.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/time.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/time.ts","metadata":{"lineCount":12,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/ui.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/ui.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/ui.ts","metadata":{"lineCount":3,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.shared.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.shared.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.shared.ts","metadata":{"lineCount":24,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api"}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","metadata":{"lineCount":209,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","metadata":{"lineCount":193,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","symbolName":"DirectoryProvider","symbolKind":"function","exported":true,"metadata":{"line":20,"column":1,"cyclomaticComplexity":25,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:serverStorage.getJSON",{"id":"external:serverStorage.getJSON","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStorage.getJSON"}}],["external:serverStore.onServerChange",{"id":"external:serverStore.onServerChange","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStore.onServerChange"}}],["symbol-name:setSavedDirectories",{"id":"symbol-name:setSavedDirectories","kind":"symbol","language":"jsts","symbolName":"setSavedDirectories","metadata":{"unresolvedName":"setSavedDirectories"}}],["symbol-name:setRecentProjects",{"id":"symbol-name:setRecentProjects","kind":"symbol","language":"jsts","symbolName":"setRecentProjects","metadata":{"unresolvedName":"setRecentProjects"}}],["symbol-name:setPathInfo",{"id":"symbol-name:setPathInfo","kind":"symbol","language":"jsts","symbolName":"setPathInfo","metadata":{"unresolvedName":"setPathInfo"}}],["symbol-name:setUrlDirectory",{"id":"symbol-name:setUrlDirectory","kind":"symbol","language":"jsts","symbolName":"setUrlDirectory","metadata":{"unresolvedName":"setUrlDirectory"}}],["external:getPath().then(setPathInfo).catch",{"id":"external:getPath().then(setPathInfo).catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"getPath().then(setPathInfo).catch"}}],["external:getPath().then",{"id":"external:getPath().then","kind":"external","language":"jsts","metadata":{"unresolvedName":"getPath().then"}}],["symbol-name:getPath",{"id":"symbol-name:getPath","kind":"symbol","language":"jsts","symbolName":"getPath","metadata":{"unresolvedName":"getPath"}}],["symbol-name:handleError",{"id":"symbol-name:handleError","kind":"symbol","language":"jsts","symbolName":"handleError","metadata":{"unresolvedName":"handleError"}}],["external:serverStorage.setJSON",{"id":"external:serverStorage.setJSON","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStorage.setJSON"}}],["external:path.replace(/\\\\/g, '/').replace",{"id":"external:path.replace(/\\\\/g, '/').replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.replace(/\\\\/g, '/').replace"}}],["external:path.replace",{"id":"external:path.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.replace"}}],["external:/^[a-zA-Z]:\\/$/.test",{"id":"external:/^[a-zA-Z]:\\/$/.test","kind":"external","language":"jsts","metadata":{"unresolvedName":"/^[a-zA-Z]:\\/$/.test"}}],["external:trimmed.slice",{"id":"external:trimmed.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"trimmed.slice"}}],["external:savedDirectories.some",{"id":"external:savedDirectories.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"savedDirectories.some"}}],["external:next.findIndex",{"id":"external:next.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"next.findIndex"}}],["external:invoke('get_cli_directory')\r\n .then",{"id":"external:invoke('get_cli_directory')\r\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"invoke('get_cli_directory')\r\n .then"}}],["external:addDirectoryRef.current",{"id":"external:addDirectoryRef.current","kind":"external","language":"jsts","metadata":{"unresolvedName":"addDirectoryRef.current"}}],["external:import('@tauri-apps/api/event').then",{"id":"external:import('@tauri-apps/api/event').then","kind":"external","language":"jsts","metadata":{"unresolvedName":"import('@tauri-apps/api/event').then"}}],["symbol-name:listen",{"id":"symbol-name:listen","kind":"symbol","language":"jsts","symbolName":"listen","metadata":{"unresolvedName":"listen"}}],["symbol-name:unlisten",{"id":"symbol-name:unlisten","kind":"symbol","language":"jsts","symbolName":"unlisten","metadata":{"unresolvedName":"unlisten"}}],["external:layoutStore.setSidebarExpanded",{"id":"external:layoutStore.setSidebarExpanded","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.setSidebarExpanded"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":175,"column":42,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/index.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/index.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/index.ts","metadata":{"lineCount":9,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.shared.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.shared.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.shared.ts","metadata":{"lineCount":18,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","metadata":{"lineCount":158,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","metadata":{"lineCount":256,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:createDeferred",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:createDeferred","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","symbolName":"createDeferred","symbolKind":"function","exported":false,"metadata":{"line":8,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":151,"column":15,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:SessionContextProbe",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:SessionContextProbe","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","symbolName":"SessionContextProbe","symbolKind":"function","exported":false,"metadata":{"line":76,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["symbol-name:useContext",{"id":"symbol-name:useContext","kind":"symbol","language":"jsts","symbolName":"useContext","metadata":{"unresolvedName":"useContext"}}],["external:getSessionsMock.mockReset",{"id":"external:getSessionsMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSessionsMock.mockReset"}}],["external:createSessionMock.mockReset",{"id":"external:createSessionMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"createSessionMock.mockReset"}}],["external:deleteSessionMock.mockReset",{"id":"external:deleteSessionMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"deleteSessionMock.mockReset"}}],["external:subscribeToEventsMock.mockReset",{"id":"external:subscribeToEventsMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"subscribeToEventsMock.mockReset"}}],["external:clearChildrenMock.mockReset",{"id":"external:clearChildrenMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"clearChildrenMock.mockReset"}}],["external:clearFollowupQueueMock.mockReset",{"id":"external:clearFollowupQueueMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"clearFollowupQueueMock.mockReset"}}],["external:setTodosMock.mockReset",{"id":"external:setTodosMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"setTodosMock.mockReset"}}],["external:sessionErrorHandlerMock.mockReset",{"id":"external:sessionErrorHandlerMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionErrorHandlerMock.mockReset"}}],["external:autoDetectPathStyleMock.mockReset",{"id":"external:autoDetectPathStyleMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"autoDetectPathStyleMock.mockReset"}}],["external:subscribeToEventsMock.mockImplementation",{"id":"external:subscribeToEventsMock.mockImplementation","kind":"external","language":"jsts","metadata":{"unresolvedName":"subscribeToEventsMock.mockImplementation"}}],["external:getSessionsMock.mockImplementationOnce",{"id":"external:getSessionsMock.mockImplementationOnce","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSessionsMock.mockImplementationOnce"}}],["external:expect(latestContext).not.toBeNull",{"id":"external:expect(latestContext).not.toBeNull","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(latestContext).not.toBeNull"}}],["external:latestContext!.setSearch",{"id":"external:latestContext!.setSearch","kind":"external","language":"jsts","metadata":{"unresolvedName":"latestContext!.setSearch"}}],["external:firstRequest.resolve",{"id":"external:firstRequest.resolve","kind":"external","language":"jsts","metadata":{"unresolvedName":"firstRequest.resolve"}}],["external:latestEventCallbacks.onReconnected",{"id":"external:latestEventCallbacks.onReconnected","kind":"external","language":"jsts","metadata":{"unresolvedName":"latestEventCallbacks.onReconnected"}}],["external:expect(getSessionsMock).toHaveBeenCalledTimes",{"id":"external:expect(getSessionsMock).toHaveBeenCalledTimes","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getSessionsMock).toHaveBeenCalledTimes"}}],["external:secondRequest.resolve",{"id":"external:secondRequest.resolve","kind":"external","language":"jsts","metadata":{"unresolvedName":"secondRequest.resolve"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","metadata":{"lineCount":284,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","metadata":{"lineCount":221,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","metadata":{"lineCount":173,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","metadata":{"lineCount":36,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","symbolName":"SessionProvider","symbolKind":"function","exported":true,"metadata":{"line":17,"column":1,"cyclomaticComplexity":30,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["symbol-name:setIsLoadingMore",{"id":"symbol-name:setIsLoadingMore","kind":"symbol","language":"jsts","symbolName":"setIsLoadingMore","metadata":{"unresolvedName":"setIsLoadingMore"}}],["symbol-name:setIsLoading",{"id":"symbol-name:setIsLoading","kind":"symbol","language":"jsts","symbolName":"setIsLoading","metadata":{"unresolvedName":"setIsLoading"}}],["symbol-name:getSessions",{"id":"symbol-name:getSessions","kind":"symbol","language":"jsts","symbolName":"getSessions","metadata":{"unresolvedName":"getSessions"}}],["symbol-name:autoDetectPathStyle",{"id":"symbol-name:autoDetectPathStyle","kind":"symbol","language":"jsts","symbolName":"autoDetectPathStyle","metadata":{"unresolvedName":"autoDetectPathStyle"}}],["symbol-name:setSessions",{"id":"symbol-name:setSessions","kind":"symbol","language":"jsts","symbolName":"setSessions","metadata":{"unresolvedName":"setSessions"}}],["external:prev.map",{"id":"external:prev.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"prev.map"}}],["external:data.filter",{"id":"external:data.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"data.filter"}}],["external:existingIds.has",{"id":"external:existingIds.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"existingIds.has"}}],["symbol-name:setHasMore",{"id":"symbol-name:setHasMore","kind":"symbol","language":"jsts","symbolName":"setHasMore","metadata":{"unresolvedName":"setHasMore"}}],["symbol-name:fetchSessions",{"id":"symbol-name:fetchSessions","kind":"symbol","language":"jsts","symbolName":"fetchSessions","metadata":{"unresolvedName":"fetchSessions"}}],["symbol-name:matchesCurrentDirectory",{"id":"symbol-name:matchesCurrentDirectory","kind":"symbol","language":"jsts","symbolName":"matchesCurrentDirectory","metadata":{"unresolvedName":"matchesCurrentDirectory"}}],["external:fetchSessionsRef.current",{"id":"external:fetchSessionsRef.current","kind":"external","language":"jsts","metadata":{"unresolvedName":"fetchSessionsRef.current"}}],["external:prev.some",{"id":"external:prev.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"prev.some"}}],["external:prev.findIndex",{"id":"external:prev.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"prev.findIndex"}}],["external:todoStore.setTodos",{"id":"external:todoStore.setTodos","kind":"external","language":"jsts","metadata":{"unresolvedName":"todoStore.setTodos"}}],["symbol-name:apiCreateSession",{"id":"symbol-name:apiCreateSession","kind":"symbol","language":"jsts","symbolName":"apiCreateSession","metadata":{"unresolvedName":"apiCreateSession"}}],["symbol-name:apiDeleteSession",{"id":"symbol-name:apiDeleteSession","kind":"symbol","language":"jsts","symbolName":"apiDeleteSession","metadata":{"unresolvedName":"apiDeleteSession"}}],["external:childSessionStore.clearChildren",{"id":"external:childSessionStore.clearChildren","kind":"external","language":"jsts","metadata":{"unresolvedName":"childSessionStore.clearChildren"}}],["external:followupQueueStore.clearSession",{"id":"external:followupQueueStore.clearSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"followupQueueStore.clearSession"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":225,"column":5,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onSessionCreated",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onSessionCreated","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","symbolName":"onSessionCreated","symbolKind":"function","exported":false,"metadata":{"line":131,"column":25,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onSessionUpdated",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onSessionUpdated","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","symbolName":"onSessionUpdated","symbolKind":"function","exported":false,"metadata":{"line":148,"column":25,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onTodoUpdated",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onTodoUpdated","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","symbolName":"onTodoUpdated","symbolKind":"function","exported":false,"metadata":{"line":175,"column":22,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onReconnected",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onReconnected","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","symbolName":"onReconnected","symbolKind":"function","exported":false,"metadata":{"line":179,"column":22,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx","metadata":{"lineCount":38,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx:defaultNavigateToSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx:defaultNavigateToSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx","symbolName":"defaultNavigateToSession","symbolKind":"function","exported":false,"metadata":{"line":24,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx:useSessionNavigation",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx:useSessionNavigation","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx","symbolName":"useSessionNavigation","symbolKind":"function","exported":true,"metadata":{"line":35,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useDirectory",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useDirectory","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","symbolName":"useDirectory","symbolKind":"function","exported":true,"metadata":{"line":6,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useCurrentDirectory",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useCurrentDirectory","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","symbolName":"useCurrentDirectory","symbolKind":"function","exported":true,"metadata":{"line":14,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useSavedDirectories",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useSavedDirectories","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","symbolName":"useSavedDirectories","symbolKind":"function","exported":true,"metadata":{"line":19,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:usePathInfo",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:usePathInfo","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","symbolName":"usePathInfo","symbolKind":"function","exported":true,"metadata":{"line":24,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useSidebarExpanded",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useSidebarExpanded","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","symbolName":"useSidebarExpanded","symbolKind":"function","exported":true,"metadata":{"line":29,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":31,"column":42,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useSessionContext.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useSessionContext.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useSessionContext.ts","metadata":{"lineCount":11,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useSessionContext.ts:useSessionContext",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useSessionContext.ts:useSessionContext","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useSessionContext.ts","symbolName":"useSessionContext","symbolKind":"function","exported":true,"metadata":{"line":4,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","metadata":{"lineCount":72,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","metadata":{"lineCount":480,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/types.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/types.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/types.ts","metadata":{"lineCount":62,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":53,"column":76,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(screen.getByText('notes.txt')).toBeInTheDocument",{"id":"external:expect(screen.getByText('notes.txt')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('notes.txt')).toBeInTheDocument"}}],["external:expect(screen.getByText('hello world')).toBeInTheDocument",{"id":"external:expect(screen.getByText('hello world')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('hello world')).toBeInTheDocument"}}],["external:expect(screen.queryByText('notes.txt')).not.toBeInTheDocument",{"id":"external:expect(screen.queryByText('notes.txt')).not.toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.queryByText('notes.txt')).not.toBeInTheDocument"}}],["external:screen.getByAltText",{"id":"external:screen.getByAltText","kind":"external","language":"jsts","metadata":{"unresolvedName":"screen.getByAltText"}}],["external:fireEvent.load",{"id":"external:fireEvent.load","kind":"external","language":"jsts","metadata":{"unresolvedName":"fireEvent.load"}}],["external:expect(screen.getByRole('button', { name: 'Zoom out' })).toBeInTheDocument",{"id":"external:expect(screen.getByRole('button', { name: 'Zoom out' })).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Zoom out' })).toBeInTheDocument"}}],["external:expect(screen.getByRole('button', { name: 'Zoom in' })).toBeInTheDocument",{"id":"external:expect(screen.getByRole('button', { name: 'Zoom in' })).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Zoom in' })).toBeInTheDocument"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","metadata":{"lineCount":146,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:getTouchDistance",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:getTouchDistance","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","symbolName":"getTouchDistance","symbolKind":"function","exported":false,"metadata":{"line":27,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:Math.sqrt",{"id":"external:Math.sqrt","kind":"external","language":"jsts","metadata":{"unresolvedName":"Math.sqrt"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:getTouchCenter",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:getTouchCenter","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","symbolName":"getTouchCenter","symbolKind":"function","exported":false,"metadata":{"line":33,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:clamp",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:clamp","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","symbolName":"clamp","symbolKind":"function","exported":false,"metadata":{"line":40,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":379,"column":12,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:attachment.mime?.startsWith",{"id":"external:attachment.mime?.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"attachment.mime?.startsWith"}}],["symbol-name:getAttachmentIcon",{"id":"symbol-name:getAttachmentIcon","kind":"symbol","language":"jsts","symbolName":"getAttachmentIcon","metadata":{"unresolvedName":"getAttachmentIcon"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:DownloadButton",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:DownloadButton","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","symbolName":"DownloadButton","symbolKind":"function","exported":false,"metadata":{"line":114,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:fetch(attachment.url)\r\n .then(res => res.arrayBuffer())\r\n .then",{"id":"external:fetch(attachment.url)\r\n .then(res => res.arrayBuffer())\r\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"fetch(attachment.url)\r\n .then(res => res.arrayBuffer())\r\n .then"}}],["external:fetch(attachment.url)\r\n .then",{"id":"external:fetch(attachment.url)\r\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"fetch(attachment.url)\r\n .then"}}],["external:res.arrayBuffer",{"id":"external:res.arrayBuffer","kind":"external","language":"jsts","metadata":{"unresolvedName":"res.arrayBuffer"}}],["symbol-name:saveData",{"id":"symbol-name:saveData","kind":"symbol","language":"jsts","symbolName":"saveData","metadata":{"unresolvedName":"saveData"}}],["external:new TextEncoder().encode",{"id":"external:new TextEncoder().encode","kind":"external","language":"jsts","metadata":{"unresolvedName":"new TextEncoder().encode"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","symbolName":"ZoomableImage","symbolKind":"function","exported":false,"metadata":{"line":148,"column":1,"cyclomaticComplexity":25,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:containerRef.current?.getBoundingClientRect",{"id":"external:containerRef.current?.getBoundingClientRect","kind":"external","language":"jsts","metadata":{"unresolvedName":"containerRef.current?.getBoundingClientRect"}}],["symbol-name:getContainerCenter",{"id":"symbol-name:getContainerCenter","kind":"symbol","language":"jsts","symbolName":"getContainerCenter","metadata":{"unresolvedName":"getContainerCenter"}}],["symbol-name:clamp",{"id":"symbol-name:clamp","kind":"symbol","language":"jsts","symbolName":"clamp","metadata":{"unresolvedName":"clamp"}}],["symbol-name:zoomToPoint",{"id":"symbol-name:zoomToPoint","kind":"symbol","language":"jsts","symbolName":"zoomToPoint","metadata":{"unresolvedName":"zoomToPoint"}}],["symbol-name:resetView",{"id":"symbol-name:resetView","kind":"symbol","language":"jsts","symbolName":"resetView","metadata":{"unresolvedName":"resetView"}}],["symbol-name:toggleZoomAtPoint",{"id":"symbol-name:toggleZoomAtPoint","kind":"symbol","language":"jsts","symbolName":"toggleZoomAtPoint","metadata":{"unresolvedName":"toggleZoomAtPoint"}}],["symbol-name:setIsDragging",{"id":"symbol-name:setIsDragging","kind":"symbol","language":"jsts","symbolName":"setIsDragging","metadata":{"unresolvedName":"setIsDragging"}}],["external:toggleZoomRef.current",{"id":"external:toggleZoomRef.current","kind":"external","language":"jsts","metadata":{"unresolvedName":"toggleZoomRef.current"}}],["symbol-name:getTouchDistance",{"id":"symbol-name:getTouchDistance","kind":"symbol","language":"jsts","symbolName":"getTouchDistance","metadata":{"unresolvedName":"getTouchDistance"}}],["symbol-name:getTouchCenter",{"id":"symbol-name:getTouchCenter","kind":"symbol","language":"jsts","symbolName":"getTouchCenter","metadata":{"unresolvedName":"getTouchCenter"}}],["external:getContainerCenterRef.current",{"id":"external:getContainerCenterRef.current","kind":"external","language":"jsts","metadata":{"unresolvedName":"getContainerCenterRef.current"}}],["symbol-name:setImgLoaded",{"id":"symbol-name:setImgLoaded","kind":"symbol","language":"jsts","symbolName":"setImgLoaded","metadata":{"unresolvedName":"setImgLoaded"}}],["symbol-name:setImgError",{"id":"symbol-name:setImgError","kind":"symbol","language":"jsts","symbolName":"setImgError","metadata":{"unresolvedName":"setImgError"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:handleMouseMove",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:handleMouseMove","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","symbolName":"handleMouseMove","symbolKind":"function","exported":false,"metadata":{"line":266,"column":29,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchStart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchStart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","symbolName":"onTouchStart","symbolKind":"function","exported":false,"metadata":{"line":297,"column":26,"cyclomaticComplexity":6,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchMove",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchMove","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","symbolName":"onTouchMove","symbolKind":"function","exported":false,"metadata":{"line":331,"column":25,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchEnd",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchEnd","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","symbolName":"onTouchEnd","symbolKind":"function","exported":false,"metadata":{"line":363,"column":24,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomButton",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomButton","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","symbolName":"ZoomButton","symbolKind":"function","exported":false,"metadata":{"line":456,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","metadata":{"lineCount":385,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:AttachmentItemComponent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:AttachmentItemComponent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","symbolName":"AttachmentItemComponent","symbolKind":"function","exported":false,"metadata":{"line":20,"column":1,"cyclomaticComplexity":19,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:hasExpandableContent",{"id":"symbol-name:hasExpandableContent","kind":"symbol","language":"jsts","symbolName":"hasExpandableContent","metadata":{"unresolvedName":"hasExpandableContent"}}],["symbol-name:setIsExpanded",{"id":"symbol-name:setIsExpanded","kind":"symbol","language":"jsts","symbolName":"setIsExpanded","metadata":{"unresolvedName":"setIsExpanded"}}],["symbol-name:onRemove",{"id":"symbol-name:onRemove","kind":"symbol","language":"jsts","symbolName":"onRemove","metadata":{"unresolvedName":"onRemove"}}],["symbol-name:setImageError",{"id":"symbol-name:setImageError","kind":"symbol","language":"jsts","symbolName":"setImageError","metadata":{"unresolvedName":"setImageError"}}],["symbol-name:setIsModalOpen",{"id":"symbol-name:setIsModalOpen","kind":"symbol","language":"jsts","symbolName":"setIsModalOpen","metadata":{"unresolvedName":"setIsModalOpen"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":331,"column":5,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:MetaRow",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:MetaRow","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","symbolName":"MetaRow","symbolKind":"function","exported":false,"metadata":{"line":143,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ExpandedContent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ExpandedContent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","symbolName":"ExpandedContent","symbolKind":"function","exported":false,"metadata":{"line":165,"column":1,"cyclomaticComplexity":28,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:mime?.startsWith",{"id":"external:mime?.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"mime?.startsWith"}}],["external:content.slice",{"id":"external:content.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"content.slice"}}],["external:url.startsWith",{"id":"external:url.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"url.startsWith"}}],["symbol-name:decodeURIComponent",{"id":"symbol-name:decodeURIComponent","kind":"symbol","language":"jsts","symbolName":"decodeURIComponent","metadata":{"unresolvedName":"decodeURIComponent"}}],["external:url.replace",{"id":"external:url.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"url.replace"}}],["external:url?.startsWith",{"id":"external:url?.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"url?.startsWith"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","symbolName":"ActionBar","symbolKind":"function","exported":false,"metadata":{"line":284,"column":1,"cyclomaticComplexity":20,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:fetch(attachment.url)\r\n .then",{"id":"external:fetch(attachment.url)\r\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"fetch(attachment.url)\r\n .then"}}],["symbol-name:onOpenDetail",{"id":"symbol-name:onOpenDetail","kind":"symbol","language":"jsts","symbolName":"onOpenDetail","metadata":{"unresolvedName":"onOpenDetail"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentPreview.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentPreview.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentPreview.tsx","metadata":{"lineCount":64,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentPreview.tsx:AttachmentPreview",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentPreview.tsx:AttachmentPreview","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentPreview.tsx","symbolName":"AttachmentPreview","symbolKind":"function","exported":true,"metadata":{"line":19,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:attachments.map",{"id":"external:attachments.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"attachments.map"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/index.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/index.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/index.ts","metadata":{"lineCount":5,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromFilePart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromFilePart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","symbolName":"fromFilePart","symbolKind":"function","exported":true,"metadata":{"line":9,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromAgentPart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromAgentPart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","symbolName":"fromAgentPart","symbolKind":"function","exported":true,"metadata":{"line":49,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromTextPart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromTextPart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","symbolName":"fromTextPart","symbolKind":"function","exported":true,"metadata":{"line":75,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:part.text.trim",{"id":"external:part.text.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"part.text.trim"}}],["external:text.slice(0, 30).replace",{"id":"external:text.slice(0, 30).replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"text.slice(0, 30).replace"}}],["external:text.slice",{"id":"external:text.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"text.slice"}}],["external:text.replace",{"id":"external:text.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"text.replace"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:getMentionText",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:getMentionText","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","symbolName":"getMentionText","symbolKind":"function","exported":true,"metadata":{"line":94,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:hasExpandableContent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:hasExpandableContent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","symbolName":"hasExpandableContent","symbolKind":"function","exported":true,"metadata":{"line":106,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:getAttachmentIcon",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:getAttachmentIcon","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","symbolName":"getAttachmentIcon","symbolKind":"function","exported":true,"metadata":{"line":124,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","metadata":{"lineCount":160,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","metadata":{"lineCount":623,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","metadata":{"lineCount":136,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:createUserMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:createUserMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","symbolName":"createUserMessage","symbolKind":"function","exported":false,"metadata":{"line":6,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:createAssistantMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:createAssistantMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","symbolName":"createAssistantMessage","symbolKind":"function","exported":false,"metadata":{"line":21,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:createToolPart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:createToolPart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","symbolName":"createToolPart","symbolKind":"function","exported":false,"metadata":{"line":48,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":143,"column":89,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:createAssistantMessage",{"id":"symbol-name:createAssistantMessage","kind":"symbol","language":"jsts","symbolName":"createAssistantMessage","metadata":{"unresolvedName":"createAssistantMessage"}}],["symbol-name:createToolPart",{"id":"symbol-name:createToolPart","kind":"symbol","language":"jsts","symbolName":"createToolPart","metadata":{"unresolvedName":"createToolPart"}}],["symbol-name:buildVisibleMessageEntries",{"id":"symbol-name:buildVisibleMessageEntries","kind":"symbol","language":"jsts","symbolName":"buildVisibleMessageEntries","metadata":{"unresolvedName":"buildVisibleMessageEntries"}}],["external:expect(entries).toHaveLength",{"id":"external:expect(entries).toHaveLength","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(entries).toHaveLength"}}],["external:expect(entries[0].sourceIds).toEqual",{"id":"external:expect(entries[0].sourceIds).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(entries[0].sourceIds).toEqual"}}],["external:expect(entries[0].message.parts).toHaveLength",{"id":"external:expect(entries[0].message.parts).toHaveLength","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(entries[0].message.parts).toHaveLength"}}],["external:expect(getVisibleMessageForkTargetId(entries[0])).toBe",{"id":"external:expect(getVisibleMessageForkTargetId(entries[0])).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getVisibleMessageForkTargetId(entries[0])).toBe"}}],["symbol-name:getVisibleMessageForkTargetId",{"id":"symbol-name:getVisibleMessageForkTargetId","kind":"symbol","language":"jsts","symbolName":"getVisibleMessageForkTargetId","metadata":{"unresolvedName":"getVisibleMessageForkTargetId"}}],["external:expect(entries[0].message.info.id).toBe",{"id":"external:expect(entries[0].message.info.id).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(entries[0].message.info.id).toBe"}}],["symbol-name:createUserMessage",{"id":"symbol-name:createUserMessage","kind":"symbol","language":"jsts","symbolName":"createUserMessage","metadata":{"unresolvedName":"createUserMessage"}}],["symbol-name:buildTurnDurationMap",{"id":"symbol-name:buildTurnDurationMap","kind":"symbol","language":"jsts","symbolName":"buildTurnDurationMap","metadata":{"unresolvedName":"buildTurnDurationMap"}}],["external:expect(durationMap.get('assistant-2')).toBe",{"id":"external:expect(durationMap.get('assistant-2')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(durationMap.get('assistant-2')).toBe"}}],["external:durationMap.get",{"id":"external:durationMap.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"durationMap.get"}}],["external:expect(durationMap.get('assistant-3')).toBe",{"id":"external:expect(durationMap.get('assistant-3')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(durationMap.get('assistant-3')).toBe"}}],["external:expect(durationMap.has('assistant-1')).toBe",{"id":"external:expect(durationMap.has('assistant-1')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(durationMap.has('assistant-1')).toBe"}}],["external:durationMap.has",{"id":"external:durationMap.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"durationMap.has"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message"}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx","metadata":{"lineCount":91,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:NOOP",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:NOOP","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","symbolName":"NOOP","symbolKind":"function","exported":false,"metadata":{"line":42,"column":14,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:estimateMessageHeight",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:estimateMessageHeight","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","symbolName":"estimateMessageHeight","symbolKind":"function","exported":false,"metadata":{"line":44,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:rememberMeasuredMessageHeight",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:rememberMeasuredMessageHeight","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","symbolName":"rememberMeasuredMessageHeight","symbolKind":"function","exported":false,"metadata":{"line":52,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:measuredMessageHeightCache.set",{"id":"external:measuredMessageHeightCache.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"measuredMessageHeightCache.set"}}],["external:measuredMessageHeightCache.keys().next",{"id":"external:measuredMessageHeightCache.keys().next","kind":"external","language":"jsts","metadata":{"unresolvedName":"measuredMessageHeightCache.keys().next"}}],["external:measuredMessageHeightCache.keys",{"id":"external:measuredMessageHeightCache.keys","kind":"external","language":"jsts","metadata":{"unresolvedName":"measuredMessageHeightCache.keys"}}],["external:measuredMessageHeightCache.delete",{"id":"external:measuredMessageHeightCache.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"measuredMessageHeightCache.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:buildTurnDurationMap",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:buildTurnDurationMap","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","symbolName":"buildTurnDurationMap","symbolKind":"function","exported":true,"metadata":{"line":60,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:visibleMessages.filter(message => message.info.role === 'assistant').map",{"id":"external:visibleMessages.filter(message => message.info.role === 'assistant').map","kind":"external","language":"jsts","metadata":{"unresolvedName":"visibleMessages.filter(message => message.info.role === 'assistant').map"}}],["external:visibleMessages.filter",{"id":"external:visibleMessages.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"visibleMessages.filter"}}],["external:map.set",{"id":"external:map.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"map.set"}}],["symbol-name:commitTurn",{"id":"symbol-name:commitTurn","kind":"symbol","language":"jsts","symbolName":"commitTurn","metadata":{"unresolvedName":"commitTurn"}}],["external:visibleAssistantIds.has",{"id":"external:visibleAssistantIds.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"visibleAssistantIds.has"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:commitTurn",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:commitTurn","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","symbolName":"commitTurn","symbolKind":"function","exported":false,"metadata":{"line":70,"column":22,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":598,"column":30,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:visibleMessageEntries.map",{"id":"external:visibleMessageEntries.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"visibleMessageEntries.map"}}],["external:visibleMessages.slice(-STICKY_RENDER_MESSAGE_COUNT).map",{"id":"external:visibleMessages.slice(-STICKY_RENDER_MESSAGE_COUNT).map","kind":"external","language":"jsts","metadata":{"unresolvedName":"visibleMessages.slice(-STICKY_RENDER_MESSAGE_COUNT).map"}}],["external:visibleMessages.slice",{"id":"external:visibleMessages.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"visibleMessages.slice"}}],["symbol-name:setScrollRoot",{"id":"symbol-name:setScrollRoot","kind":"symbol","language":"jsts","symbolName":"setScrollRoot","metadata":{"unresolvedName":"setScrollRoot"}}],["symbol-name:onAtBottomChange",{"id":"symbol-name:onAtBottomChange","kind":"symbol","language":"jsts","symbolName":"onAtBottomChange","metadata":{"unresolvedName":"onAtBottomChange"}}],["external:messageStore.getSessionState",{"id":"external:messageStore.getSessionState","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.getSessionState"}}],["external:Promise.resolve(fn()).finally",{"id":"external:Promise.resolve(fn()).finally","kind":"external","language":"jsts","metadata":{"unresolvedName":"Promise.resolve(fn()).finally"}}],["external:entry.target.getAttribute",{"id":"external:entry.target.getAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"entry.target.getAttribute"}}],["external:visibleIds.has",{"id":"external:visibleIds.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"visibleIds.has"}}],["external:visibleIds.add",{"id":"external:visibleIds.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"visibleIds.add"}}],["external:visibleIds.delete",{"id":"external:visibleIds.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"visibleIds.delete"}}],["external:onVisibleIdsChangeRef.current",{"id":"external:onVisibleIdsChangeRef.current","kind":"external","language":"jsts","metadata":{"unresolvedName":"onVisibleIdsChangeRef.current"}}],["external:root.querySelectorAll",{"id":"external:root.querySelectorAll","kind":"external","language":"jsts","metadata":{"unresolvedName":"root.querySelectorAll"}}],["external:elements.forEach",{"id":"external:elements.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"elements.forEach"}}],["symbol-name:useImperativeHandle",{"id":"symbol-name:useImperativeHandle","kind":"symbol","language":"jsts","symbolName":"useImperativeHandle","metadata":{"unresolvedName":"useImperativeHandle"}}],["external:el.scrollTo",{"id":"external:el.scrollTo","kind":"external","language":"jsts","metadata":{"unresolvedName":"el.scrollTo"}}],["external:scrollRef.current\n ?.querySelector",{"id":"external:scrollRef.current\n ?.querySelector","kind":"external","language":"jsts","metadata":{"unresolvedName":"scrollRef.current\n ?.querySelector"}}],["external:prev.push",{"id":"external:prev.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"prev.push"}}],["external:groups.push",{"id":"external:groups.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"groups.push"}}],["external:messages.map",{"id":"external:messages.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"messages.map"}}],["external:stickyRenderIds.has",{"id":"external:stickyRenderIds.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"stickyRenderIds.has"}}],["symbol-name:estimateMessageHeight",{"id":"symbol-name:estimateMessageHeight","kind":"symbol","language":"jsts","symbolName":"estimateMessageHeight","metadata":{"unresolvedName":"estimateMessageHeight"}}],["external:turnDurationMap.get",{"id":"external:turnDurationMap.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"turnDurationMap.get"}}],["external:forkTargetIdMap.get",{"id":"external:forkTargetIdMap.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"forkTargetIdMap.get"}}],["external:messageGroups.map",{"id":"external:messageGroups.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageGroups.map"}}],["symbol-name:renderMessageGroup",{"id":"symbol-name:renderMessageGroup","kind":"symbol","language":"jsts","symbolName":"renderMessageGroup","metadata":{"unresolvedName":"renderMessageGroup"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:onScroll",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:onScroll","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","symbolName":"onScroll","symbolKind":"function","exported":false,"metadata":{"line":202,"column":26,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToBottom",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToBottom","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","symbolName":"scrollToBottom","symbolKind":"function","exported":false,"metadata":{"line":352,"column":27,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToBottomIfAtBottom",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToBottomIfAtBottom","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","symbolName":"scrollToBottomIfAtBottom","symbolKind":"function","exported":false,"metadata":{"line":357,"column":37,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToLastMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToLastMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","symbolName":"scrollToLastMessage","symbolKind":"function","exported":false,"metadata":{"line":365,"column":32,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToMessageIndex",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToMessageIndex","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","symbolName":"scrollToMessageIndex","symbolKind":"function","exported":false,"metadata":{"line":372,"column":33,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToMessageId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToMessageId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","symbolName":"scrollToMessageId","symbolKind":"function","exported":false,"metadata":{"line":379,"column":30,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:measuredMessageHeightCache.get",{"id":"external:measuredMessageHeightCache.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"measuredMessageHeightCache.get"}}],["symbol-name:registerMessage",{"id":"symbol-name:registerMessage","kind":"symbol","language":"jsts","symbolName":"registerMessage","metadata":{"unresolvedName":"registerMessage"}}],["symbol-name:setIsNearViewport",{"id":"symbol-name:setIsNearViewport","kind":"symbol","language":"jsts","symbolName":"setIsNearViewport","metadata":{"unresolvedName":"setIsNearViewport"}}],["symbol-name:setMeasuredHeightState",{"id":"symbol-name:setMeasuredHeightState","kind":"symbol","language":"jsts","symbolName":"setMeasuredHeightState","metadata":{"unresolvedName":"setMeasuredHeightState"}}],["symbol-name:rememberMeasuredMessageHeight",{"id":"symbol-name:rememberMeasuredMessageHeight","kind":"symbol","language":"jsts","symbolName":"rememberMeasuredMessageHeight","metadata":{"unresolvedName":"rememberMeasuredMessageHeight"}}],["symbol-name:updateHeight",{"id":"symbol-name:updateHeight","kind":"symbol","language":"jsts","symbolName":"updateHeight","metadata":{"unresolvedName":"updateHeight"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:updateHeight",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:updateHeight","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","symbolName":"updateHeight","symbolKind":"function","exported":false,"metadata":{"line":595,"column":26,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:messageHasContent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:messageHasContent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","symbolName":"messageHasContent","symbolKind":"function","exported":false,"metadata":{"line":4,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isVisibleThinking",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isVisibleThinking","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","symbolName":"isVisibleThinking","symbolKind":"function","exported":false,"metadata":{"line":19,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":true,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:isVisibleReasoningPart",{"id":"symbol-name:isVisibleReasoningPart","kind":"symbol","language":"jsts","symbolName":"isVisibleReasoningPart","metadata":{"unresolvedName":"isVisibleReasoningPart"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isVisibleText",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isVisibleText","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","symbolName":"isVisibleText","symbolKind":"function","exported":false,"metadata":{"line":23,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":true,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:isVisibleTextPart",{"id":"symbol-name:isVisibleTextPart","kind":"symbol","language":"jsts","symbolName":"isVisibleTextPart","metadata":{"unresolvedName":"isVisibleTextPart"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:endsWithTool",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:endsWithTool","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","symbolName":"endsWithTool","symbolKind":"function","exported":false,"metadata":{"line":27,"column":1,"cyclomaticComplexity":12,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isToolOnlyFollowUp",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isToolOnlyFollowUp","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","symbolName":"isToolOnlyFollowUp","symbolKind":"function","exported":false,"metadata":{"line":40,"column":1,"cyclomaticComplexity":13,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:isVisibleThinking",{"id":"symbol-name:isVisibleThinking","kind":"symbol","language":"jsts","symbolName":"isVisibleThinking","metadata":{"unresolvedName":"isVisibleThinking"}}],["symbol-name:isVisibleText",{"id":"symbol-name:isVisibleText","kind":"symbol","language":"jsts","symbolName":"isVisibleText","metadata":{"unresolvedName":"isVisibleText"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isMergeableTrailing",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isMergeableTrailing","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","symbolName":"isMergeableTrailing","symbolKind":"function","exported":false,"metadata":{"line":52,"column":1,"cyclomaticComplexity":14,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:getVisibleMessageForkTargetId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:getVisibleMessageForkTargetId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","symbolName":"getVisibleMessageForkTargetId","symbolKind":"function","exported":true,"metadata":{"line":77,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","symbolName":"buildVisibleMessageEntries","symbolKind":"function","exported":true,"metadata":{"line":81,"column":1,"cyclomaticComplexity":11,"maxNestingDepth":5,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:seenIds.has",{"id":"external:seenIds.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"seenIds.has"}}],["external:seenIds.add",{"id":"external:seenIds.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"seenIds.add"}}],["external:unique.push",{"id":"external:unique.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"unique.push"}}],["external:unique.filter",{"id":"external:unique.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"unique.filter"}}],["symbol-name:endsWithTool",{"id":"symbol-name:endsWithTool","kind":"symbol","language":"jsts","symbolName":"endsWithTool","metadata":{"unresolvedName":"endsWithTool"}}],["symbol-name:isToolOnlyFollowUp",{"id":"symbol-name:isToolOnlyFollowUp","kind":"symbol","language":"jsts","symbolName":"isToolOnlyFollowUp","metadata":{"unresolvedName":"isToolOnlyFollowUp"}}],["external:sourceIds.push",{"id":"external:sourceIds.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"sourceIds.push"}}],["symbol-name:isMergeableTrailing",{"id":"symbol-name:isMergeableTrailing","kind":"symbol","language":"jsts","symbolName":"isMergeableTrailing","metadata":{"unresolvedName":"isMergeableTrailing"}}],["external:filteredMessages.slice",{"id":"external:filteredMessages.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"filteredMessages.slice"}}],["external:mergedMessages.flatMap",{"id":"external:mergedMessages.flatMap","kind":"external","language":"jsts","metadata":{"unresolvedName":"mergedMessages.flatMap"}}],["external:mergedMessages.some",{"id":"external:mergedMessages.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"mergedMessages.some"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","metadata":{"lineCount":894,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","metadata":{"lineCount":307,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx","metadata":{"lineCount":117,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts","metadata":{"lineCount":51,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","metadata":{"lineCount":86,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","metadata":{"lineCount":486,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","metadata":{"lineCount":285,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/sessionHelpers.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/sessionHelpers.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/sessionHelpers.ts","metadata":{"lineCount":49,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","metadata":{"lineCount":402,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:setSidebarRequestedWidth",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:setSidebarRequestedWidth","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","symbolName":"setSidebarRequestedWidth","symbolKind":"function","exported":false,"metadata":{"line":90,"column":31,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:scheduleSplitSessionNavigation",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:scheduleSplitSessionNavigation","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","symbolName":"scheduleSplitSessionNavigation","symbolKind":"function","exported":false,"metadata":{"line":96,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["symbol-name:callback",{"id":"symbol-name:callback","kind":"symbol","language":"jsts","symbolName":"callback","metadata":{"unresolvedName":"callback"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":660,"column":13,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:cancelPendingSplitSessionNavigation",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:cancelPendingSplitSessionNavigation","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","symbolName":"cancelPendingSplitSessionNavigation","symbolKind":"function","exported":false,"metadata":{"line":108,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["symbol-name:useChatViewportMaybe",{"id":"symbol-name:useChatViewportMaybe","kind":"symbol","language":"jsts","symbolName":"useChatViewportMaybe","metadata":{"unresolvedName":"useChatViewportMaybe"}}],["symbol-name:useModels",{"id":"symbol-name:useModels","kind":"symbol","language":"jsts","symbolName":"useModels","metadata":{"unresolvedName":"useModels"}}],["symbol-name:useHiddenModelKeys",{"id":"symbol-name:useHiddenModelKeys","kind":"symbol","language":"jsts","symbolName":"useHiddenModelKeys","metadata":{"unresolvedName":"useHiddenModelKeys"}}],["external:hiddenModelKeys.includes",{"id":"external:hiddenModelKeys.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"hiddenModelKeys.includes"}}],["symbol-name:getModelKey",{"id":"symbol-name:getModelKey","kind":"symbol","language":"jsts","symbolName":"getModelKey","metadata":{"unresolvedName":"getModelKey"}}],["symbol-name:useModelSelection",{"id":"symbol-name:useModelSelection","kind":"symbol","language":"jsts","symbolName":"useModelSelection","metadata":{"unresolvedName":"useModelSelection"}}],["external:autoApproveStore.onFullAutoChange",{"id":"external:autoApproveStore.onFullAutoChange","kind":"external","language":"jsts","metadata":{"unresolvedName":"autoApproveStore.onFullAutoChange"}}],["symbol-name:setFullAutoHint",{"id":"symbol-name:setFullAutoHint","kind":"symbol","language":"jsts","symbolName":"setFullAutoHint","metadata":{"unresolvedName":"setFullAutoHint"}}],["external:prev.every",{"id":"external:prev.every","kind":"external","language":"jsts","metadata":{"unresolvedName":"prev.every"}}],["symbol-name:setVisibleMessageIds",{"id":"symbol-name:setVisibleMessageIds","kind":"symbol","language":"jsts","symbolName":"setVisibleMessageIds","metadata":{"unresolvedName":"setVisibleMessageIds"}}],["external:chatAreaRef.current?.scrollToMessageId",{"id":"external:chatAreaRef.current?.scrollToMessageId","kind":"external","language":"jsts","metadata":{"unresolvedName":"chatAreaRef.current?.scrollToMessageId"}}],["symbol-name:setInputBoxHeight",{"id":"symbol-name:setInputBoxHeight","kind":"symbol","language":"jsts","symbolName":"setInputBoxHeight","metadata":{"unresolvedName":"setInputBoxHeight"}}],["symbol-name:useChatSession",{"id":"symbol-name:useChatSession","kind":"symbol","language":"jsts","symbolName":"useChatSession","metadata":{"unresolvedName":"useChatSession"}}],["symbol-name:useDeferredValue",{"id":"symbol-name:useDeferredValue","kind":"symbol","language":"jsts","symbolName":"useDeferredValue","metadata":{"unresolvedName":"useDeferredValue"}}],["external:messageStore.protectSession",{"id":"external:messageStore.protectSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.protectSession"}}],["external:messageStore.unprotectSession",{"id":"external:messageStore.unprotectSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.unprotectSession"}}],["symbol-name:useCancelHint",{"id":"symbol-name:useCancelHint","kind":"symbol","language":"jsts","symbolName":"useCancelHint","metadata":{"unresolvedName":"useCancelHint"}}],["external:handleVisibleMessageIdsChangeRef.current",{"id":"external:handleVisibleMessageIdsChangeRef.current","kind":"external","language":"jsts","metadata":{"unresolvedName":"handleVisibleMessageIdsChangeRef.current"}}],["symbol-name:setVisibleMessageIdsStable",{"id":"symbol-name:setVisibleMessageIdsStable","kind":"symbol","language":"jsts","symbolName":"setVisibleMessageIdsStable","metadata":{"unresolvedName":"setVisibleMessageIdsStable"}}],["external:agents.find",{"id":"external:agents.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"agents.find"}}],["symbol-name:findModelByKey",{"id":"symbol-name:findModelByKey","kind":"symbol","language":"jsts","symbolName":"findModelByKey","metadata":{"unresolvedName":"findModelByKey"}}],["symbol-name:handleModelChange",{"id":"symbol-name:handleModelChange","kind":"symbol","language":"jsts","symbolName":"handleModelChange","metadata":{"unresolvedName":"handleModelChange"}}],["symbol-name:setSelectedAgent",{"id":"symbol-name:setSelectedAgent","kind":"symbol","language":"jsts","symbolName":"setSelectedAgent","metadata":{"unresolvedName":"setSelectedAgent"}}],["symbol-name:syncModelForAgent",{"id":"symbol-name:syncModelForAgent","kind":"symbol","language":"jsts","symbolName":"syncModelForAgent","metadata":{"unresolvedName":"syncModelForAgent"}}],["external:primaryAgents.findIndex",{"id":"external:primaryAgents.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"primaryAgents.findIndex"}}],["symbol-name:handleAgentChange",{"id":"symbol-name:handleAgentChange","kind":"symbol","language":"jsts","symbolName":"handleAgentChange","metadata":{"unresolvedName":"handleAgentChange"}}],["symbol-name:restoreModelSelection",{"id":"symbol-name:restoreModelSelection","kind":"symbol","language":"jsts","symbolName":"restoreModelSelection","metadata":{"unresolvedName":"restoreModelSelection"}}],["symbol-name:restoreFromMessage",{"id":"symbol-name:restoreFromMessage","kind":"symbol","language":"jsts","symbolName":"restoreFromMessage","metadata":{"unresolvedName":"restoreFromMessage"}}],["external:[...messages].reverse().find",{"id":"external:[...messages].reverse().find","kind":"external","language":"jsts","metadata":{"unresolvedName":"[...messages].reverse().find"}}],["external:[...messages].reverse",{"id":"external:[...messages].reverse","kind":"external","language":"jsts","metadata":{"unresolvedName":"[...messages].reverse"}}],["symbol-name:restoreAgentFromMessage",{"id":"symbol-name:restoreAgentFromMessage","kind":"symbol","language":"jsts","symbolName":"restoreAgentFromMessage","metadata":{"unresolvedName":"restoreAgentFromMessage"}}],["external:overlayRef.current?.setZone",{"id":"external:overlayRef.current?.setZone","kind":"external","language":"jsts","metadata":{"unresolvedName":"overlayRef.current?.setZone"}}],["symbol-name:cancelPendingZone",{"id":"symbol-name:cancelPendingZone","kind":"symbol","language":"jsts","symbolName":"cancelPendingZone","metadata":{"unresolvedName":"cancelPendingZone"}}],["symbol-name:writeZone",{"id":"symbol-name:writeZone","kind":"symbol","language":"jsts","symbolName":"writeZone","metadata":{"unresolvedName":"writeZone"}}],["symbol-name:resetDropState",{"id":"symbol-name:resetDropState","kind":"symbol","language":"jsts","symbolName":"resetDropState","metadata":{"unresolvedName":"resetDropState"}}],["external:e.dataTransfer.types.includes",{"id":"external:e.dataTransfer.types.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"e.dataTransfer.types.includes"}}],["external:e.dataTransfer.getData",{"id":"external:e.dataTransfer.getData","kind":"external","language":"jsts","metadata":{"unresolvedName":"e.dataTransfer.getData"}}],["external:e.currentTarget.getBoundingClientRect",{"id":"external:e.currentTarget.getBoundingClientRect","kind":"external","language":"jsts","metadata":{"unresolvedName":"e.currentTarget.getBoundingClientRect"}}],["symbol-name:resolveDropZone",{"id":"symbol-name:resolveDropZone","kind":"symbol","language":"jsts","symbolName":"resolveDropZone","metadata":{"unresolvedName":"resolveDropZone"}}],["external:e.currentTarget.contains",{"id":"external:e.currentTarget.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"e.currentTarget.contains"}}],["symbol-name:cancelPendingSplitSessionNavigation",{"id":"symbol-name:cancelPendingSplitSessionNavigation","kind":"symbol","language":"jsts","symbolName":"cancelPendingSplitSessionNavigation","metadata":{"unresolvedName":"cancelPendingSplitSessionNavigation"}}],["symbol-name:readSessionDragPayload",{"id":"symbol-name:readSessionDragPayload","kind":"symbol","language":"jsts","symbolName":"readSessionDragPayload","metadata":{"unresolvedName":"readSessionDragPayload"}}],["external:paneLayoutStore.splitPaneToSide",{"id":"external:paneLayoutStore.splitPaneToSide","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneLayoutStore.splitPaneToSide"}}],["external:paneLayoutStore.findLeaf",{"id":"external:paneLayoutStore.findLeaf","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneLayoutStore.findLeaf"}}],["symbol-name:scheduleSplitSessionNavigation",{"id":"symbol-name:scheduleSplitSessionNavigation","kind":"symbol","language":"jsts","symbolName":"scheduleSplitSessionNavigation","metadata":{"unresolvedName":"scheduleSplitSessionNavigation"}}],["external:autoApproveStore.cyclePaneFullAutoMode",{"id":"external:autoApproveStore.cyclePaneFullAutoMode","kind":"external","language":"jsts","metadata":{"unresolvedName":"autoApproveStore.cyclePaneFullAutoMode"}}],["external:modelSelectorRef.current?.openMenu",{"id":"external:modelSelectorRef.current?.openMenu","kind":"external","language":"jsts","metadata":{"unresolvedName":"modelSelectorRef.current?.openMenu"}}],["external:controllerActionsRef.current.newSession",{"id":"external:controllerActionsRef.current.newSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"controllerActionsRef.current.newSession"}}],["external:controllerActionsRef.current.archiveSession",{"id":"external:controllerActionsRef.current.archiveSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"controllerActionsRef.current.archiveSession"}}],["external:controllerActionsRef.current.previousSession",{"id":"external:controllerActionsRef.current.previousSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"controllerActionsRef.current.previousSession"}}],["external:controllerActionsRef.current.nextSession",{"id":"external:controllerActionsRef.current.nextSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"controllerActionsRef.current.nextSession"}}],["external:controllerActionsRef.current.toggleAgent",{"id":"external:controllerActionsRef.current.toggleAgent","kind":"external","language":"jsts","metadata":{"unresolvedName":"controllerActionsRef.current.toggleAgent"}}],["external:controllerActionsRef.current.copyLastResponse",{"id":"external:controllerActionsRef.current.copyLastResponse","kind":"external","language":"jsts","metadata":{"unresolvedName":"controllerActionsRef.current.copyLastResponse"}}],["external:controllerActionsRef.current.cancelMessage",{"id":"external:controllerActionsRef.current.cancelMessage","kind":"external","language":"jsts","metadata":{"unresolvedName":"controllerActionsRef.current.cancelMessage"}}],["external:controllerActionsRef.current.openModelSelector",{"id":"external:controllerActionsRef.current.openModelSelector","kind":"external","language":"jsts","metadata":{"unresolvedName":"controllerActionsRef.current.openModelSelector"}}],["external:controllerActionsRef.current.toggleFullAuto",{"id":"external:controllerActionsRef.current.toggleFullAuto","kind":"external","language":"jsts","metadata":{"unresolvedName":"controllerActionsRef.current.toggleFullAuto"}}],["external:paneControllerStore.removeController",{"id":"external:paneControllerStore.removeController","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneControllerStore.removeController"}}],["external:paneControllerStore.setController",{"id":"external:paneControllerStore.setController","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneControllerStore.setController"}}],["symbol-name:setPermissionCollapsed",{"id":"symbol-name:setPermissionCollapsed","kind":"symbol","language":"jsts","symbolName":"setPermissionCollapsed","metadata":{"unresolvedName":"setPermissionCollapsed"}}],["symbol-name:setQuestionCollapsed",{"id":"symbol-name:setQuestionCollapsed","kind":"symbol","language":"jsts","symbolName":"setQuestionCollapsed","metadata":{"unresolvedName":"setQuestionCollapsed"}}],["external:pendingPermissionRequests.find",{"id":"external:pendingPermissionRequests.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"pendingPermissionRequests.find"}}],["symbol-name:handlePermissionReply",{"id":"symbol-name:handlePermissionReply","kind":"symbol","language":"jsts","symbolName":"handlePermissionReply","metadata":{"unresolvedName":"handlePermissionReply"}}],["symbol-name:handleQuestionReply",{"id":"symbol-name:handleQuestionReply","kind":"symbol","language":"jsts","symbolName":"handleQuestionReply","metadata":{"unresolvedName":"handleQuestionReply"}}],["symbol-name:handleQuestionReject",{"id":"symbol-name:handleQuestionReject","kind":"symbol","language":"jsts","symbolName":"handleQuestionReject","metadata":{"unresolvedName":"handleQuestionReject"}}],["external:chatAreaRef.current?.scrollToBottom",{"id":"external:chatAreaRef.current?.scrollToBottom","kind":"external","language":"jsts","metadata":{"unresolvedName":"chatAreaRef.current?.scrollToBottom"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:onPermissionReply",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:onPermissionReply","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","symbolName":"onPermissionReply","symbolKind":"function","exported":false,"metadata":{"line":670,"column":26,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:clamp",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:clamp","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","symbolName":"clamp","symbolKind":"function","exported":false,"metadata":{"line":26,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:getResponsiveSidebarMaxWidth",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:getResponsiveSidebarMaxWidth","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","symbolName":"getResponsiveSidebarMaxWidth","symbolKind":"function","exported":false,"metadata":{"line":30,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:getResponsiveSidebarDefaultWidth",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:getResponsiveSidebarDefaultWidth","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","symbolName":"getResponsiveSidebarDefaultWidth","symbolKind":"function","exported":false,"metadata":{"line":36,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:getResponsiveRightPanelMaxWidth",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:getResponsiveRightPanelMaxWidth","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","symbolName":"getResponsiveRightPanelMaxWidth","symbolKind":"function","exported":false,"metadata":{"line":42,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:canUseSplitPane",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:canUseSplitPane","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","symbolName":"canUseSplitPane","symbolKind":"function","exported":true,"metadata":{"line":107,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:computeChatViewport",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:computeChatViewport","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","symbolName":"computeChatViewport","symbolKind":"function","exported":false,"metadata":{"line":114,"column":1,"cyclomaticComplexity":27,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getResponsiveSidebarMaxWidth",{"id":"symbol-name:getResponsiveSidebarMaxWidth","kind":"symbol","language":"jsts","symbolName":"getResponsiveSidebarMaxWidth","metadata":{"unresolvedName":"getResponsiveSidebarMaxWidth"}}],["symbol-name:getResponsiveSidebarDefaultWidth",{"id":"symbol-name:getResponsiveSidebarDefaultWidth","kind":"symbol","language":"jsts","symbolName":"getResponsiveSidebarDefaultWidth","metadata":{"unresolvedName":"getResponsiveSidebarDefaultWidth"}}],["symbol-name:getResponsiveRightPanelMaxWidth",{"id":"symbol-name:getResponsiveRightPanelMaxWidth","kind":"symbol","language":"jsts","symbolName":"getResponsiveRightPanelMaxWidth","metadata":{"unresolvedName":"getResponsiveRightPanelMaxWidth"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:ChatViewportProvider",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:ChatViewportProvider","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","symbolName":"ChatViewportProvider","symbolKind":"function","exported":true,"metadata":{"line":248,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewport",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewport","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","symbolName":"useChatViewport","symbolKind":"function","exported":true,"metadata":{"line":252,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportMaybe",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportMaybe","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","symbolName":"useChatViewportMaybe","symbolKind":"function","exported":true,"metadata":{"line":261,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","symbolName":"useChatViewportController","symbolKind":"function","exported":true,"metadata":{"line":265,"column":1,"cyclomaticComplexity":12,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:localStorage.getItem",{"id":"external:localStorage.getItem","kind":"external","language":"jsts","metadata":{"unresolvedName":"localStorage.getItem"}}],["symbol-name:setViewportWidth",{"id":"symbol-name:setViewportWidth","kind":"symbol","language":"jsts","symbolName":"setViewportWidth","metadata":{"unresolvedName":"setViewportWidth"}}],["symbol-name:setViewportHeight",{"id":"symbol-name:setViewportHeight","kind":"symbol","language":"jsts","symbolName":"setViewportHeight","metadata":{"unresolvedName":"setViewportHeight"}}],["symbol-name:setSurfaceWidth",{"id":"symbol-name:setSurfaceWidth","kind":"symbol","language":"jsts","symbolName":"setSurfaceWidth","metadata":{"unresolvedName":"setSurfaceWidth"}}],["symbol-name:setSidebarHasCustomWidth",{"id":"symbol-name:setSidebarHasCustomWidth","kind":"symbol","language":"jsts","symbolName":"setSidebarHasCustomWidth","metadata":{"unresolvedName":"setSidebarHasCustomWidth"}}],["symbol-name:setRequestedSidebarWidthState",{"id":"symbol-name:setRequestedSidebarWidthState","kind":"symbol","language":"jsts","symbolName":"setRequestedSidebarWidthState","metadata":{"unresolvedName":"setRequestedSidebarWidthState"}}],["external:localStorage.setItem",{"id":"external:localStorage.setItem","kind":"external","language":"jsts","metadata":{"unresolvedName":"localStorage.setItem"}}],["symbol-name:computeChatViewport",{"id":"symbol-name:computeChatViewport","kind":"symbol","language":"jsts","symbolName":"computeChatViewport","metadata":{"unresolvedName":"computeChatViewport"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":319,"column":48,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:handleResize",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:handleResize","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","symbolName":"handleResize","symbolKind":"function","exported":false,"metadata":{"line":297,"column":26,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","metadata":{"lineCount":200,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","symbolName":"EmptyState","symbolKind":"function","exported":true,"metadata":{"line":13,"column":1,"cyclomaticComplexity":18,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:dropdownRef.current.contains",{"id":"external:dropdownRef.current.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"dropdownRef.current.contains"}}],["symbol-name:setIsDropdownOpen",{"id":"symbol-name:setIsDropdownOpen","kind":"symbol","language":"jsts","symbolName":"setIsDropdownOpen","metadata":{"unresolvedName":"setIsDropdownOpen"}}],["external:customPath.trim",{"id":"external:customPath.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"customPath.trim"}}],["symbol-name:onStartChat",{"id":"symbol-name:onStartChat","kind":"symbol","language":"jsts","symbolName":"onStartChat","metadata":{"unresolvedName":"onStartChat"}}],["symbol-name:setCustomPath",{"id":"symbol-name:setCustomPath","kind":"symbol","language":"jsts","symbolName":"setCustomPath","metadata":{"unresolvedName":"setCustomPath"}}],["symbol-name:setIsCustomMode",{"id":"symbol-name:setIsCustomMode","kind":"symbol","language":"jsts","symbolName":"setIsCustomMode","metadata":{"unresolvedName":"setIsCustomMode"}}],["external:projects\r\n .filter",{"id":"external:projects\r\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"projects\r\n .filter"}}],["symbol-name:handleStart",{"id":"symbol-name:handleStart","kind":"symbol","language":"jsts","symbolName":"handleStart","metadata":{"unresolvedName":"handleStart"}}],["symbol-name:handleSelectDirectory",{"id":"symbol-name:handleSelectDirectory","kind":"symbol","language":"jsts","symbolName":"handleSelectDirectory","metadata":{"unresolvedName":"handleSelectDirectory"}}],["external:otherDirectories.map",{"id":"external:otherDirectories.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"otherDirectories.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":107,"column":28,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleClickOutside",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleClickOutside","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","symbolName":"handleClickOutside","symbolKind":"function","exported":false,"metadata":{"line":29,"column":32,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleStart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleStart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","symbolName":"handleStart","symbolKind":"function","exported":false,"metadata":{"line":49,"column":23,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleSelectDirectory",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleSelectDirectory","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","symbolName":"handleSelectDirectory","symbolKind":"function","exported":false,"metadata":{"line":57,"column":33,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleCustomPath",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleCustomPath","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","symbolName":"handleCustomPath","symbolKind":"function","exported":false,"metadata":{"line":66,"column":28,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","metadata":{"lineCount":276,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","metadata":{"lineCount":136,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:SessionTitleControl",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:SessionTitleControl","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","symbolName":"SessionTitleControl","symbolKind":"function","exported":false,"metadata":{"line":51,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["symbol-name:setEditTitle",{"id":"symbol-name:setEditTitle","kind":"symbol","language":"jsts","symbolName":"setEditTitle","metadata":{"unresolvedName":"setEditTitle"}}],["symbol-name:handleRename",{"id":"symbol-name:handleRename","kind":"symbol","language":"jsts","symbolName":"handleRename","metadata":{"unresolvedName":"handleRename"}}],["symbol-name:setIsEditingTitle",{"id":"symbol-name:setIsEditingTitle","kind":"symbol","language":"jsts","symbolName":"setIsEditingTitle","metadata":{"unresolvedName":"setIsEditingTitle"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":150,"column":13,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","symbolName":"Header","symbolKind":"function","exported":true,"metadata":{"line":113,"column":1,"cyclomaticComplexity":26,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useSessionContext",{"id":"symbol-name:useSessionContext","kind":"symbol","language":"jsts","symbolName":"useSessionContext","metadata":{"unresolvedName":"useSessionContext"}}],["external:titleInputRef.current.focus",{"id":"external:titleInputRef.current.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"titleInputRef.current.focus"}}],["external:titleInputRef.current.select",{"id":"external:titleInputRef.current.select","kind":"external","language":"jsts","metadata":{"unresolvedName":"titleInputRef.current.select"}}],["external:editTitle.trim",{"id":"external:editTitle.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"editTitle.trim"}}],["symbol-name:updateSession",{"id":"symbol-name:updateSession","kind":"symbol","language":"jsts","symbolName":"updateSession","metadata":{"unresolvedName":"updateSession"}}],["external:messageStore.updateSessionMetadata",{"id":"external:messageStore.updateSessionMetadata","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.updateSessionMetadata"}}],["symbol-name:setShareDialogOpen",{"id":"symbol-name:setShareDialogOpen","kind":"symbol","language":"jsts","symbolName":"setShareDialogOpen","metadata":{"unresolvedName":"setShareDialogOpen"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleStartEdit",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleStartEdit","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","symbolName":"handleStartEdit","symbolKind":"function","exported":false,"metadata":{"line":157,"column":27,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleRename",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleRename","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","symbolName":"handleRename","symbolKind":"function","exported":false,"metadata":{"line":163,"column":24,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/index.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/index.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/index.ts","metadata":{"lineCount":9,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx","metadata":{"lineCount":131,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components"}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":26,"column":38,"cyclomaticComplexity":20,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:(request.patterns as string[]).map(p => p.replace(/\\\\n/g, '\\n')).join",{"id":"external:(request.patterns as string[]).map(p => p.replace(/\\\\n/g, '\\n')).join","kind":"external","language":"jsts","metadata":{"unresolvedName":"(request.patterns as string[]).map(p => p.replace(/\\\\n/g, '\\n')).join"}}],["external:(request.patterns as string[]).map",{"id":"external:(request.patterns as string[]).map","kind":"external","language":"jsts","metadata":{"unresolvedName":"(request.patterns as string[]).map"}}],["external:p.replace",{"id":"external:p.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"p.replace"}}],["external:autoApproveStore.addRules",{"id":"external:autoApproveStore.addRules","kind":"external","language":"jsts","metadata":{"unresolvedName":"autoApproveStore.addRules"}}],["symbol-name:onReply",{"id":"symbol-name:onReply","kind":"symbol","language":"jsts","symbolName":"onReply","metadata":{"unresolvedName":"onReply"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:handleAlways",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:handleAlways","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx","symbolName":"handleAlways","symbolKind":"function","exported":false,"metadata":{"line":59,"column":24,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","metadata":{"lineCount":310,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":294,"column":22,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:request.questions.forEach",{"id":"external:request.questions.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"request.questions.forEach"}}],["symbol-name:setAnswers",{"id":"symbol-name:setAnswers","kind":"symbol","language":"jsts","symbolName":"setAnswers","metadata":{"unresolvedName":"setAnswers"}}],["external:m.set",{"id":"external:m.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"m.set"}}],["symbol-name:setCustomEnabled",{"id":"symbol-name:setCustomEnabled","kind":"symbol","language":"jsts","symbolName":"setCustomEnabled","metadata":{"unresolvedName":"setCustomEnabled"}}],["external:prev.get",{"id":"external:prev.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"prev.get"}}],["external:s.has",{"id":"external:s.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"s.has"}}],["external:s.delete",{"id":"external:s.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"s.delete"}}],["external:s.add",{"id":"external:s.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"s.add"}}],["symbol-name:setCustomValues",{"id":"symbol-name:setCustomValues","kind":"symbol","language":"jsts","symbolName":"setCustomValues","metadata":{"unresolvedName":"setCustomValues"}}],["external:request.questions.map",{"id":"external:request.questions.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"request.questions.map"}}],["external:answers.get",{"id":"external:answers.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"answers.get"}}],["external:customEnabled.get",{"id":"external:customEnabled.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"customEnabled.get"}}],["external:customValues.get(idx)?.trim",{"id":"external:customValues.get(idx)?.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"customValues.get(idx)?.trim"}}],["external:customValues.get",{"id":"external:customValues.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"customValues.get"}}],["external:request.questions.every",{"id":"external:request.questions.every","kind":"external","language":"jsts","metadata":{"unresolvedName":"request.questions.every"}}],["symbol-name:onReject",{"id":"symbol-name:onReject","kind":"symbol","language":"jsts","symbolName":"onReject","metadata":{"unresolvedName":"onReject"}}],["symbol-name:matchesKeybinding",{"id":"symbol-name:matchesKeybinding","kind":"symbol","language":"jsts","symbolName":"matchesKeybinding","metadata":{"unresolvedName":"matchesKeybinding"}}],["symbol-name:handleSubmit",{"id":"symbol-name:handleSubmit","kind":"symbol","language":"jsts","symbolName":"handleSubmit","metadata":{"unresolvedName":"handleSubmit"}}],["symbol-name:selectOption",{"id":"symbol-name:selectOption","kind":"symbol","language":"jsts","symbolName":"selectOption","metadata":{"unresolvedName":"selectOption"}}],["symbol-name:selectCustom",{"id":"symbol-name:selectCustom","kind":"symbol","language":"jsts","symbolName":"selectCustom","metadata":{"unresolvedName":"selectCustom"}}],["symbol-name:toggleOption",{"id":"symbol-name:toggleOption","kind":"symbol","language":"jsts","symbolName":"toggleOption","metadata":{"unresolvedName":"toggleOption"}}],["symbol-name:toggleCustom",{"id":"symbol-name:toggleCustom","kind":"symbol","language":"jsts","symbolName":"toggleCustom","metadata":{"unresolvedName":"toggleCustom"}}],["symbol-name:updateCustomValue",{"id":"symbol-name:updateCustomValue","kind":"symbol","language":"jsts","symbolName":"updateCustomValue","metadata":{"unresolvedName":"updateCustomValue"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:InlineQuestionItem",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:InlineQuestionItem","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","symbolName":"InlineQuestionItem","symbolKind":"function","exported":false,"metadata":{"line":195,"column":1,"cyclomaticComplexity":21,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:textareaRef.current.focus",{"id":"external:textareaRef.current.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"textareaRef.current.focus"}}],["external:(question.options || []).map",{"id":"external:(question.options || []).map","kind":"external","language":"jsts","metadata":{"unresolvedName":"(question.options || []).map"}}],["external:selected.has",{"id":"external:selected.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"selected.has"}}],["symbol-name:onToggleOption",{"id":"symbol-name:onToggleOption","kind":"symbol","language":"jsts","symbolName":"onToggleOption","metadata":{"unresolvedName":"onToggleOption"}}],["symbol-name:onSelectOption",{"id":"symbol-name:onSelectOption","kind":"symbol","language":"jsts","symbolName":"onSelectOption","metadata":{"unresolvedName":"onSelectOption"}}],["symbol-name:onToggleCustom",{"id":"symbol-name:onToggleCustom","kind":"symbol","language":"jsts","symbolName":"onToggleCustom","metadata":{"unresolvedName":"onToggleCustom"}}],["symbol-name:onSelectCustom",{"id":"symbol-name:onSelectCustom","kind":"symbol","language":"jsts","symbolName":"onSelectCustom","metadata":{"unresolvedName":"onSelectCustom"}}],["symbol-name:onCustomValueChange",{"id":"symbol-name:onCustomValueChange","kind":"symbol","language":"jsts","symbolName":"onCustomValueChange","metadata":{"unresolvedName":"onCustomValueChange"}}],["symbol-name:adjustHeight",{"id":"symbol-name:adjustHeight","kind":"symbol","language":"jsts","symbolName":"adjustHeight","metadata":{"unresolvedName":"adjustHeight"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:onPermissionReply",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:onPermissionReply","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","symbolName":"onPermissionReply","symbolKind":"function","exported":false,"metadata":{"line":31,"column":22,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:onQuestionReply",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:onQuestionReply","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","symbolName":"onQuestionReply","symbolKind":"function","exported":false,"metadata":{"line":32,"column":20,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:onQuestionReject",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:onQuestionReject","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","symbolName":"onQuestionReject","symbolKind":"function","exported":false,"metadata":{"line":33,"column":21,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:useInlineToolRequests",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:useInlineToolRequests","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","symbolName":"useInlineToolRequests","symbolKind":"function","exported":true,"metadata":{"line":39,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:findPermissionRequestForTool",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:findPermissionRequestForTool","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","symbolName":"findPermissionRequestForTool","symbolKind":"function","exported":true,"metadata":{"line":43,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:pendingPermissions.find",{"id":"external:pendingPermissions.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"pendingPermissions.find"}}],["external:childSessionStore.isChildOf",{"id":"external:childSessionStore.isChildOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"childSessionStore.isChildOf"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:findQuestionRequestForTool",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:findQuestionRequestForTool","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","symbolName":"findQuestionRequestForTool","symbolKind":"function","exported":true,"metadata":{"line":68,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:pendingQuestions.find",{"id":"external:pendingQuestions.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"pendingQuestions.find"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","metadata":{"lineCount":104,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","metadata":{"lineCount":534,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":99,"column":19,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:vi.importActual",{"id":"external:vi.importActual","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.importActual"}}],["external:vi.mocked(getVcsStatus).mockReset",{"id":"external:vi.mocked(getVcsStatus).mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(getVcsStatus).mockReset"}}],["external:vi.mocked(getVcsBranches).mockReset",{"id":"external:vi.mocked(getVcsBranches).mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(getVcsBranches).mockReset"}}],["external:vi.mocked(stageGitPaths).mockReset",{"id":"external:vi.mocked(stageGitPaths).mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(stageGitPaths).mockReset"}}],["external:vi.mocked(commitGitChanges).mockReset",{"id":"external:vi.mocked(commitGitChanges).mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(commitGitChanges).mockReset"}}],["external:vi.mocked(getVcsStatus).mockResolvedValue",{"id":"external:vi.mocked(getVcsStatus).mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(getVcsStatus).mockResolvedValue"}}],["external:vi.mocked(getVcsBranches).mockResolvedValue",{"id":"external:vi.mocked(getVcsBranches).mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(getVcsBranches).mockResolvedValue"}}],["external:screen.findByRole",{"id":"external:screen.findByRole","kind":"external","language":"jsts","metadata":{"unresolvedName":"screen.findByRole"}}],["external:expect(trigger).toBeInTheDocument",{"id":"external:expect(trigger).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(trigger).toBeInTheDocument"}}],["external:expect(screen.getByText('main')).toBeInTheDocument",{"id":"external:expect(screen.getByText('main')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('main')).toBeInTheDocument"}}],["external:expect(screen.getByText('1 ahead')).toBeInTheDocument",{"id":"external:expect(screen.getByText('1 ahead')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('1 ahead')).toBeInTheDocument"}}],["external:expect(screen.getByText('2 behind')).toBeInTheDocument",{"id":"external:expect(screen.getByText('2 behind')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('2 behind')).toBeInTheDocument"}}],["external:vi.mocked(getVcsStatus).mockRejectedValue",{"id":"external:vi.mocked(getVcsStatus).mockRejectedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(getVcsStatus).mockRejectedValue"}}],["external:vi.mocked(getVcsBranches).mockRejectedValue",{"id":"external:vi.mocked(getVcsBranches).mockRejectedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(getVcsBranches).mockRejectedValue"}}],["external:vi.mocked(stageGitPaths).mockResolvedValue",{"id":"external:vi.mocked(stageGitPaths).mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(stageGitPaths).mockResolvedValue"}}],["external:vi.mocked(commitGitChanges).mockResolvedValue",{"id":"external:vi.mocked(commitGitChanges).mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(commitGitChanges).mockResolvedValue"}}],["external:expect(stageGitPaths).toHaveBeenCalledWith",{"id":"external:expect(stageGitPaths).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(stageGitPaths).toHaveBeenCalledWith"}}],["external:screen.getByLabelText",{"id":"external:screen.getByLabelText","kind":"external","language":"jsts","metadata":{"unresolvedName":"screen.getByLabelText"}}],["external:expect(commitGitChanges).toHaveBeenCalledWith",{"id":"external:expect(commitGitChanges).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(commitGitChanges).toHaveBeenCalledWith"}}],["external:@primer/octicons-react",{"id":"external:@primer/octicons-react","kind":"external","language":"jsts","metadata":{"source":"@primer/octicons-react"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:fileStatusLabel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:fileStatusLabel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","symbolName":"fileStatusLabel","symbolKind":"function","exported":false,"metadata":{"line":41,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:compactBranchName",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:compactBranchName","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","symbolName":"compactBranchName","symbolKind":"function","exported":false,"metadata":{"line":48,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:branch.slice",{"id":"external:branch.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"branch.slice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:countStaged",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:countStaged","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","symbolName":"countStaged","symbolKind":"function","exported":false,"metadata":{"line":52,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:files.filter",{"id":"external:files.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"files.filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:countUnstaged",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:countUnstaged","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","symbolName":"countUnstaged","symbolKind":"function","exported":false,"metadata":{"line":56,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","symbolName":"GitComposerControl","symbolKind":"function","exported":true,"metadata":{"line":60,"column":1,"cyclomaticComplexity":54,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:countStaged",{"id":"symbol-name:countStaged","kind":"symbol","language":"jsts","symbolName":"countStaged","metadata":{"unresolvedName":"countStaged"}}],["symbol-name:countUnstaged",{"id":"symbol-name:countUnstaged","kind":"symbol","language":"jsts","symbolName":"countUnstaged","metadata":{"unresolvedName":"countUnstaged"}}],["symbol-name:setStatus",{"id":"symbol-name:setStatus","kind":"symbol","language":"jsts","symbolName":"setStatus","metadata":{"unresolvedName":"setStatus"}}],["symbol-name:setBranches",{"id":"symbol-name:setBranches","kind":"symbol","language":"jsts","symbolName":"setBranches","metadata":{"unresolvedName":"setBranches"}}],["external:Promise.all",{"id":"external:Promise.all","kind":"external","language":"jsts","metadata":{"unresolvedName":"Promise.all"}}],["external:menuRef.current?.contains",{"id":"external:menuRef.current?.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"menuRef.current?.contains"}}],["external:triggerRef.current?.contains",{"id":"external:triggerRef.current?.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"triggerRef.current?.contains"}}],["symbol-name:setOpen",{"id":"symbol-name:setOpen","kind":"symbol","language":"jsts","symbolName":"setOpen","metadata":{"unresolvedName":"setOpen"}}],["external:triggerRef.current?.focus",{"id":"external:triggerRef.current?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"triggerRef.current?.focus"}}],["symbol-name:setCommitMessage",{"id":"symbol-name:setCommitMessage","kind":"symbol","language":"jsts","symbolName":"setCommitMessage","metadata":{"unresolvedName":"setCommitMessage"}}],["external:newBranchName.trim",{"id":"external:newBranchName.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"newBranchName.trim"}}],["symbol-name:runAction",{"id":"symbol-name:runAction","kind":"symbol","language":"jsts","symbolName":"runAction","metadata":{"unresolvedName":"runAction"}}],["symbol-name:setNewBranchName",{"id":"symbol-name:setNewBranchName","kind":"symbol","language":"jsts","symbolName":"setNewBranchName","metadata":{"unresolvedName":"setNewBranchName"}}],["external:status?.files.map",{"id":"external:status?.files.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"status?.files.map"}}],["external:status?.files.filter(file => file.staged).map",{"id":"external:status?.files.filter(file => file.staged).map","kind":"external","language":"jsts","metadata":{"unresolvedName":"status?.files.filter(file => file.staged).map"}}],["external:status?.files.filter",{"id":"external:status?.files.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"status?.files.filter"}}],["symbol-name:compactBranchName",{"id":"symbol-name:compactBranchName","kind":"symbol","language":"jsts","symbolName":"compactBranchName","metadata":{"unresolvedName":"compactBranchName"}}],["external:branches.map",{"id":"external:branches.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"branches.map"}}],["external:commitMessage.trim",{"id":"external:commitMessage.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"commitMessage.trim"}}],["external:status?.files\n .slice(0, 8)\n .map",{"id":"external:status?.files\n .slice(0, 8)\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"status?.files\n .slice(0, 8)\n .map"}}],["external:status?.files\n .slice",{"id":"external:status?.files\n .slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"status?.files\n .slice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":308,"column":28,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:handlePointerDown",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:handlePointerDown","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","symbolName":"handlePointerDown","symbolKind":"function","exported":false,"metadata":{"line":106,"column":31,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:handleKeyDown",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:handleKeyDown","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","symbolName":"handleKeyDown","symbolKind":"function","exported":false,"metadata":{"line":112,"column":27,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:StatusBadge",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:StatusBadge","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","symbolName":"StatusBadge","symbolKind":"function","exported":false,"metadata":{"line":429,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitActionButton",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitActionButton","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","symbolName":"GitActionButton","symbolKind":"function","exported":false,"metadata":{"line":455,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:ChangedFileRow",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:ChangedFileRow","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","symbolName":"ChangedFileRow","symbolKind":"function","exported":false,"metadata":{"line":486,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:fileStatusLabel",{"id":"symbol-name:fileStatusLabel","kind":"symbol","language":"jsts","symbolName":"fileStatusLabel","metadata":{"unresolvedName":"fileStatusLabel"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx","metadata":{"lineCount":153,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/UndoStatus.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/UndoStatus.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/UndoStatus.tsx","metadata":{"lineCount":38,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","metadata":{"lineCount":1179,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx:PresenceItem",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx:PresenceItem","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx","symbolName":"PresenceItem","symbolKind":"function","exported":true,"metadata":{"line":12,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:usePresence",{"id":"symbol-name:usePresence","kind":"symbol","language":"jsts","symbolName":"usePresence","metadata":{"unresolvedName":"usePresence"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":133,"column":38,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","metadata":{"lineCount":409,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:useFullAutoMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:useFullAutoMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","symbolName":"useFullAutoMode","symbolKind":"function","exported":false,"metadata":{"line":15,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:autoApproveStore.getPaneFullAutoMode",{"id":"external:autoApproveStore.getPaneFullAutoMode","kind":"external","language":"jsts","metadata":{"unresolvedName":"autoApproveStore.getPaneFullAutoMode"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":385,"column":22,"cyclomaticComplexity":10,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useTodos",{"id":"symbol-name:useTodos","kind":"symbol","language":"jsts","symbolName":"useTodos","metadata":{"unresolvedName":"useTodos"}}],["symbol-name:useTodoStats",{"id":"symbol-name:useTodoStats","kind":"symbol","language":"jsts","symbolName":"useTodoStats","metadata":{"unresolvedName":"useTodoStats"}}],["symbol-name:useCurrentTask",{"id":"symbol-name:useCurrentTask","kind":"symbol","language":"jsts","symbolName":"useCurrentTask","metadata":{"unresolvedName":"useCurrentTask"}}],["symbol-name:useFullAutoMode",{"id":"symbol-name:useFullAutoMode","kind":"symbol","language":"jsts","symbolName":"useFullAutoMode","metadata":{"unresolvedName":"useFullAutoMode"}}],["external:getSessionTodos(sessionId)\r\n .then",{"id":"external:getSessionTodos(sessionId)\r\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSessionTodos(sessionId)\r\n .then"}}],["symbol-name:getSessionTodos",{"id":"symbol-name:getSessionTodos","kind":"symbol","language":"jsts","symbolName":"getSessionTodos","metadata":{"unresolvedName":"getSessionTodos"}}],["external:window.clearTimeout",{"id":"external:window.clearTimeout","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.clearTimeout"}}],["symbol-name:clearPanelTimers",{"id":"symbol-name:clearPanelTimers","kind":"symbol","language":"jsts","symbolName":"clearPanelTimers","metadata":{"unresolvedName":"clearPanelTimers"}}],["external:inputContainer.setAttribute",{"id":"external:inputContainer.setAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"inputContainer.setAttribute"}}],["external:inputContainer.contains",{"id":"external:inputContainer.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"inputContainer.contains"}}],["external:activeElement.blur",{"id":"external:activeElement.blur","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeElement.blur"}}],["symbol-name:setPanelState",{"id":"symbol-name:setPanelState","kind":"symbol","language":"jsts","symbolName":"setPanelState","metadata":{"unresolvedName":"setPanelState"}}],["external:inputContainerRef?.current?.removeAttribute",{"id":"external:inputContainerRef?.current?.removeAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"inputContainerRef?.current?.removeAttribute"}}],["symbol-name:closePanel",{"id":"symbol-name:closePanel","kind":"symbol","language":"jsts","symbolName":"closePanel","metadata":{"unresolvedName":"closePanel"}}],["symbol-name:openPanel",{"id":"symbol-name:openPanel","kind":"symbol","language":"jsts","symbolName":"openPanel","metadata":{"unresolvedName":"openPanel"}}],["external:popoverRef.current?.contains",{"id":"external:popoverRef.current?.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"popoverRef.current?.contains"}}],["external:inputContainerRef?.current?.contains",{"id":"external:inputContainerRef?.current?.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"inputContainerRef?.current?.contains"}}],["external:inputContainer?.removeAttribute",{"id":"external:inputContainer?.removeAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"inputContainer?.removeAttribute"}}],["external:todos.map",{"id":"external:todos.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"todos.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:handleClick",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:handleClick","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","symbolName":"handleClick","symbolKind":"function","exported":false,"metadata":{"line":133,"column":25,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:TodoSwapPanel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:TodoSwapPanel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","symbolName":"TodoSwapPanel","symbolKind":"function","exported":false,"metadata":{"line":313,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:container.getBoundingClientRect",{"id":"external:container.getBoundingClientRect","kind":"external","language":"jsts","metadata":{"unresolvedName":"container.getBoundingClientRect"}}],["external:footer.getBoundingClientRect",{"id":"external:footer.getBoundingClientRect","kind":"external","language":"jsts","metadata":{"unresolvedName":"footer.getBoundingClientRect"}}],["symbol-name:setStyle",{"id":"symbol-name:setStyle","kind":"symbol","language":"jsts","symbolName":"setStyle","metadata":{"unresolvedName":"setStyle"}}],["symbol-name:update",{"id":"symbol-name:update","kind":"symbol","language":"jsts","symbolName":"update","metadata":{"unresolvedName":"update"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:update",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:update","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","symbolName":"update","symbolKind":"function","exported":false,"metadata":{"line":330,"column":20,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:MiniProgress",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:MiniProgress","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","symbolName":"MiniProgress","symbolKind":"function","exported":false,"metadata":{"line":368,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","metadata":{"lineCount":282,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","metadata":{"lineCount":559,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:extToMime",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:extToMime","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","symbolName":"extToMime","symbolKind":"function","exported":false,"metadata":{"line":39,"column":14,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:MenuItem",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:MenuItem","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","symbolName":"MenuItem","symbolKind":"function","exported":false,"metadata":{"line":56,"column":13,"cyclomaticComplexity":5,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":253,"column":64,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:isTauriMock.mockReturnValue",{"id":"external:isTauriMock.mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"isTauriMock.mockReturnValue"}}],["external:isTauriMobileMock.mockReturnValue",{"id":"external:isTauriMobileMock.mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"isTauriMobileMock.mockReturnValue"}}],["external:openMock.mockReset",{"id":"external:openMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"openMock.mockReset"}}],["external:readFileMock.mockReset",{"id":"external:readFileMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"readFileMock.mockReset"}}],["external:expect(inputClickSpy).toHaveBeenCalledTimes",{"id":"external:expect(inputClickSpy).toHaveBeenCalledTimes","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(inputClickSpy).toHaveBeenCalledTimes"}}],["external:expect(onFilesSelected).toHaveBeenCalledWith",{"id":"external:expect(onFilesSelected).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(onFilesSelected).toHaveBeenCalledWith"}}],["external:inputClickSpy.mockRestore",{"id":"external:inputClickSpy.mockRestore","kind":"external","language":"jsts","metadata":{"unresolvedName":"inputClickSpy.mockRestore"}}],["external:openMock.mockResolvedValue",{"id":"external:openMock.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"openMock.mockResolvedValue"}}],["external:readFileMock.mockResolvedValue",{"id":"external:readFileMock.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"readFileMock.mockResolvedValue"}}],["external:expect(openMock).toHaveBeenCalledTimes",{"id":"external:expect(openMock).toHaveBeenCalledTimes","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(openMock).toHaveBeenCalledTimes"}}],["external:expect(readFileMock).toHaveBeenCalledWith",{"id":"external:expect(readFileMock).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(readFileMock).toHaveBeenCalledWith"}}],["external:expect(onFilesSelected).toHaveBeenCalledTimes",{"id":"external:expect(onFilesSelected).toHaveBeenCalledTimes","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(onFilesSelected).toHaveBeenCalledTimes"}}],["external:expect(files).toHaveLength",{"id":"external:expect(files).toHaveLength","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(files).toHaveLength"}}],["external:expect(files[0].name).toBe",{"id":"external:expect(files[0].name).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(files[0].name).toBe"}}],["external:expect(files[0].type).toBe",{"id":"external:expect(files[0].type).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(files[0].type).toBe"}}],["external:expect(trigger).toHaveAttribute",{"id":"external:expect(trigger).toHaveAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(trigger).toHaveAttribute"}}],["external:expect(screen.getByRole('menuitemradio', { name: 'Build' })).toHaveFocus",{"id":"external:expect(screen.getByRole('menuitemradio', { name: 'Build' })).toHaveFocus","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('menuitemradio', { name: 'Build' })).toHaveFocus"}}],["external:screen.getAllByRole",{"id":"external:screen.getAllByRole","kind":"external","language":"jsts","metadata":{"unresolvedName":"screen.getAllByRole"}}],["external:expect(buttons.indexOf(voiceButton)).toBe",{"id":"external:expect(buttons.indexOf(voiceButton)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(buttons.indexOf(voiceButton)).toBe"}}],["external:buttons.indexOf",{"id":"external:buttons.indexOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"buttons.indexOf"}}],["external:expect(onVoiceTranscription).toHaveBeenCalledWith",{"id":"external:expect(onVoiceTranscription).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(onVoiceTranscription).toHaveBeenCalledWith"}}],["external:expect(screen.getByRole('button', { name: 'Send message' })).toHaveFocus",{"id":"external:expect(screen.getByRole('button', { name: 'Send message' })).toHaveFocus","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Send message' })).toHaveFocus"}}],["external:expect(screen.getByRole('textbox', { name: 'Chat input' })).toHaveFocus",{"id":"external:expect(screen.getByRole('textbox', { name: 'Chat input' })).toHaveFocus","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('textbox', { name: 'Chat input' })).toHaveFocus"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:ToolbarHarness",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:ToolbarHarness","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","symbolName":"ToolbarHarness","symbolKind":"function","exported":false,"metadata":{"line":254,"column":5,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.tsx","metadata":{"lineCount":39,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","symbolName":"InputToolbar","symbolKind":"function","exported":true,"metadata":{"line":45,"column":1,"cyclomaticComplexity":92,"maxNestingDepth":6,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:accept.push",{"id":"external:accept.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"accept.push"}}],["external:filterNames.push",{"id":"external:filterNames.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"filterNames.push"}}],["external:accept.join",{"id":"external:accept.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"accept.join"}}],["external:filterNames.join",{"id":"external:filterNames.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"filterNames.join"}}],["external:inputContainerRef?.current?.querySelector",{"id":"external:inputContainerRef?.current?.querySelector","kind":"external","language":"jsts","metadata":{"unresolvedName":"inputContainerRef?.current?.querySelector"}}],["symbol-name:close",{"id":"symbol-name:close","kind":"symbol","language":"jsts","symbolName":"close","metadata":{"unresolvedName":"close"}}],["external:menu.querySelectorAll",{"id":"external:menu.querySelectorAll","kind":"external","language":"jsts","metadata":{"unresolvedName":"menu.querySelectorAll"}}],["external:menu.querySelector",{"id":"external:menu.querySelector","kind":"external","language":"jsts","metadata":{"unresolvedName":"menu.querySelector"}}],["external:focusables[nextIndex]?.focus",{"id":"external:focusables[nextIndex]?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"focusables[nextIndex]?.focus"}}],["external:menu?.querySelectorAll",{"id":"external:menu?.querySelectorAll","kind":"external","language":"jsts","metadata":{"unresolvedName":"menu?.querySelectorAll"}}],["external:trigger?.focus",{"id":"external:trigger?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"trigger?.focus"}}],["external:items.findIndex",{"id":"external:items.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"items.findIndex"}}],["external:items[index]?.focus",{"id":"external:items[index]?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"items[index]?.focus"}}],["symbol-name:focusRelativeToTrigger",{"id":"symbol-name:focusRelativeToTrigger","kind":"symbol","language":"jsts","symbolName":"focusRelativeToTrigger","metadata":{"unresolvedName":"focusRelativeToTrigger"}}],["external:fileInputRef.current?.click",{"id":"external:fileInputRef.current?.click","kind":"external","language":"jsts","metadata":{"unresolvedName":"fileInputRef.current?.click"}}],["symbol-name:open",{"id":"symbol-name:open","kind":"symbol","language":"jsts","symbolName":"open","metadata":{"unresolvedName":"open"}}],["external:path.split(/[\\\\/]/).pop",{"id":"external:path.split(/[\\\\/]/).pop","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.split(/[\\\\/]/).pop"}}],["external:path.split",{"id":"external:path.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.split"}}],["external:fileName.split('.').pop()?.toLowerCase",{"id":"external:fileName.split('.').pop()?.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"fileName.split('.').pop()?.toLowerCase"}}],["external:fileName.split('.').pop",{"id":"external:fileName.split('.').pop","kind":"external","language":"jsts","metadata":{"unresolvedName":"fileName.split('.').pop"}}],["external:fileName.split",{"id":"external:fileName.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"fileName.split"}}],["symbol-name:extToMime",{"id":"symbol-name:extToMime","kind":"symbol","language":"jsts","symbolName":"extToMime","metadata":{"unresolvedName":"extToMime"}}],["symbol-name:readFile",{"id":"symbol-name:readFile","kind":"symbol","language":"jsts","symbolName":"readFile","metadata":{"unresolvedName":"readFile"}}],["symbol-name:onFilesSelected",{"id":"symbol-name:onFilesSelected","kind":"symbol","language":"jsts","symbolName":"onFilesSelected","metadata":{"unresolvedName":"onFilesSelected"}}],["external:agentMenuRef.current?.contains",{"id":"external:agentMenuRef.current?.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"agentMenuRef.current?.contains"}}],["external:agentTriggerRef.current?.contains",{"id":"external:agentTriggerRef.current?.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"agentTriggerRef.current?.contains"}}],["symbol-name:setAgentMenuOpen",{"id":"symbol-name:setAgentMenuOpen","kind":"symbol","language":"jsts","symbolName":"setAgentMenuOpen","metadata":{"unresolvedName":"setAgentMenuOpen"}}],["symbol-name:isFocusableElement",{"id":"symbol-name:isFocusableElement","kind":"symbol","language":"jsts","symbolName":"isFocusableElement","metadata":{"unresolvedName":"isFocusableElement"}}],["external:agentTriggerRef.current?.focus",{"id":"external:agentTriggerRef.current?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"agentTriggerRef.current?.focus"}}],["external:variantMenuRef.current?.contains",{"id":"external:variantMenuRef.current?.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"variantMenuRef.current?.contains"}}],["external:variantTriggerRef.current?.contains",{"id":"external:variantTriggerRef.current?.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"variantTriggerRef.current?.contains"}}],["symbol-name:setVariantMenuOpen",{"id":"symbol-name:setVariantMenuOpen","kind":"symbol","language":"jsts","symbolName":"setVariantMenuOpen","metadata":{"unresolvedName":"setVariantMenuOpen"}}],["external:variantTriggerRef.current?.focus",{"id":"external:variantTriggerRef.current?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"variantTriggerRef.current?.focus"}}],["symbol-name:focusMenuItem",{"id":"symbol-name:focusMenuItem","kind":"symbol","language":"jsts","symbolName":"focusMenuItem","metadata":{"unresolvedName":"focusMenuItem"}}],["symbol-name:handleMenuKeyDown",{"id":"symbol-name:handleMenuKeyDown","kind":"symbol","language":"jsts","symbolName":"handleMenuKeyDown","metadata":{"unresolvedName":"handleMenuKeyDown"}}],["external:selectableAgents.map",{"id":"external:selectableAgents.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"selectableAgents.map"}}],["external:agent.name.charAt(0).toUpperCase",{"id":"external:agent.name.charAt(0).toUpperCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"agent.name.charAt(0).toUpperCase"}}],["external:agent.name.charAt",{"id":"external:agent.name.charAt","kind":"external","language":"jsts","metadata":{"unresolvedName":"agent.name.charAt"}}],["external:agent.name.slice",{"id":"external:agent.name.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"agent.name.slice"}}],["symbol-name:onAgentChange",{"id":"symbol-name:onAgentChange","kind":"symbol","language":"jsts","symbolName":"onAgentChange","metadata":{"unresolvedName":"onAgentChange"}}],["symbol-name:closeMenuToComposer",{"id":"symbol-name:closeMenuToComposer","kind":"symbol","language":"jsts","symbolName":"closeMenuToComposer","metadata":{"unresolvedName":"closeMenuToComposer"}}],["external:selectedVariant.charAt(0).toUpperCase",{"id":"external:selectedVariant.charAt(0).toUpperCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"selectedVariant.charAt(0).toUpperCase"}}],["external:selectedVariant.charAt",{"id":"external:selectedVariant.charAt","kind":"external","language":"jsts","metadata":{"unresolvedName":"selectedVariant.charAt"}}],["external:selectedVariant.slice",{"id":"external:selectedVariant.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"selectedVariant.slice"}}],["symbol-name:onVariantChange",{"id":"symbol-name:onVariantChange","kind":"symbol","language":"jsts","symbolName":"onVariantChange","metadata":{"unresolvedName":"onVariantChange"}}],["external:variants.map",{"id":"external:variants.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"variants.map"}}],["external:variant.charAt(0).toUpperCase",{"id":"external:variant.charAt(0).toUpperCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"variant.charAt(0).toUpperCase"}}],["external:variant.charAt",{"id":"external:variant.charAt","kind":"external","language":"jsts","metadata":{"unresolvedName":"variant.charAt"}}],["external:variant.slice",{"id":"external:variant.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"variant.slice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":527,"column":27,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:handleClickOutside",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:handleClickOutside","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","symbolName":"handleClickOutside","symbolKind":"function","exported":false,"metadata":{"line":275,"column":32,"cyclomaticComplexity":9,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","metadata":{"lineCount":74,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:detectSlashTrigger",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:detectSlashTrigger","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","symbolName":"detectSlashTrigger","symbolKind":"function","exported":true,"metadata":{"line":24,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:text.startsWith",{"id":"external:text.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"text.startsWith"}}],["external:query.includes",{"id":"external:query.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"query.includes"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:isFileSupported",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:isFileSupported","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","symbolName":"isFileSupported","symbolKind":"function","exported":true,"metadata":{"line":44,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:mime.startsWith",{"id":"external:mime.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"mime.startsWith"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:ensureFileMime",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:ensureFileMime","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","symbolName":"ensureFileMime","symbolKind":"function","exported":true,"metadata":{"line":52,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:file.name.split('.').pop()?.toLowerCase",{"id":"external:file.name.split('.').pop()?.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"file.name.split('.').pop()?.toLowerCase"}}],["external:file.name.split('.').pop",{"id":"external:file.name.split('.').pop","kind":"external","language":"jsts","metadata":{"unresolvedName":"file.name.split('.').pop"}}],["external:file.name.split",{"id":"external:file.name.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"file.name.split"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:readFileAsDataUrl",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:readFileAsDataUrl","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","symbolName":"readFileAsDataUrl","symbolKind":"function","exported":true,"metadata":{"line":66,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:reader.readAsDataURL",{"id":"external:reader.readAsDataURL","kind":"external","language":"jsts","metadata":{"unresolvedName":"reader.readAsDataURL"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":67,"column":30,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/UndoStatus.tsx:UndoStatus",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/UndoStatus.tsx:UndoStatus","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/UndoStatus.tsx","symbolName":"UndoStatus","symbolKind":"function","exported":true,"metadata":{"line":11,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","metadata":{"lineCount":129,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","symbolName":"useAttachmentRail","symbolKind":"function","exported":true,"metadata":{"line":28,"column":1,"cyclomaticComplexity":18,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setOverflowing",{"id":"symbol-name:setOverflowing","kind":"symbol","language":"jsts","symbolName":"setOverflowing","metadata":{"unresolvedName":"setOverflowing"}}],["symbol-name:setShowLeftFade",{"id":"symbol-name:setShowLeftFade","kind":"symbol","language":"jsts","symbolName":"setShowLeftFade","metadata":{"unresolvedName":"setShowLeftFade"}}],["symbol-name:setShowRightFade",{"id":"symbol-name:setShowRightFade","kind":"symbol","language":"jsts","symbolName":"setShowRightFade","metadata":{"unresolvedName":"setShowRightFade"}}],["symbol-name:syncState",{"id":"symbol-name:syncState","kind":"symbol","language":"jsts","symbolName":"syncState","metadata":{"unresolvedName":"syncState"}}],["symbol-name:resetState",{"id":"symbol-name:resetState","kind":"symbol","language":"jsts","symbolName":"resetState","metadata":{"unresolvedName":"resetState"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":114,"column":12,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","metadata":{"lineCount":203,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","metadata":{"lineCount":212,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment"}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","symbolName":"useInputHistory","symbolKind":"function","exported":true,"metadata":{"line":38,"column":1,"cyclomaticComplexity":44,"maxNestingDepth":4,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useMessages",{"id":"symbol-name:useMessages","kind":"symbol","language":"jsts","symbolName":"useMessages","metadata":{"unresolvedName":"useMessages"}}],["external:getMessageText(msg).trim",{"id":"external:getMessageText(msg).trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"getMessageText(msg).trim"}}],["external:seen.has",{"id":"external:seen.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"seen.has"}}],["external:seen.add",{"id":"external:seen.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"seen.add"}}],["external:atts.push",{"id":"external:atts.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"atts.push"}}],["external:attachments.every",{"id":"external:attachments.every","kind":"external","language":"jsts","metadata":{"unresolvedName":"attachments.every"}}],["symbol-name:isHistoryUnmodified",{"id":"symbol-name:isHistoryUnmodified","kind":"symbol","language":"jsts","symbolName":"isHistoryUnmodified","metadata":{"unresolvedName":"isHistoryUnmodified"}}],["symbol-name:canNavigateHistoryAtCursor",{"id":"symbol-name:canNavigateHistoryAtCursor","kind":"symbol","language":"jsts","symbolName":"canNavigateHistoryAtCursor","metadata":{"unresolvedName":"canNavigateHistoryAtCursor"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":187,"column":43,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:canNavigateHistoryAtCursor",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:canNavigateHistoryAtCursor","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","symbolName":"canNavigateHistoryAtCursor","symbolKind":"function","exported":false,"metadata":{"line":121,"column":42,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:isHistoryUnmodified",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:isHistoryUnmodified","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","symbolName":"isHistoryUnmodified","symbolKind":"function","exported":false,"metadata":{"line":142,"column":35,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","metadata":{"lineCount":201,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","symbolName":"useMobileCollapse","symbolKind":"function","exported":true,"metadata":{"line":46,"column":1,"cyclomaticComplexity":26,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:inputContainerRef.current?.contains",{"id":"external:inputContainerRef.current?.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"inputContainerRef.current?.contains"}}],["external:contentWrapRef.current?.contains",{"id":"external:contentWrapRef.current?.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"contentWrapRef.current?.contains"}}],["external:footerRef.current?.contains",{"id":"external:footerRef.current?.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"footerRef.current?.contains"}}],["symbol-name:setIsFocused",{"id":"symbol-name:setIsFocused","kind":"symbol","language":"jsts","symbolName":"setIsFocused","metadata":{"unresolvedName":"setIsFocused"}}],["external:textareaRef.current?.focus",{"id":"external:textareaRef.current?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"textareaRef.current?.focus"}}],["symbol-name:isInsideInputArea",{"id":"symbol-name:isInsideInputArea","kind":"symbol","language":"jsts","symbolName":"isInsideInputArea","metadata":{"unresolvedName":"isInsideInputArea"}}],["symbol-name:setExpandedHeight",{"id":"symbol-name:setExpandedHeight","kind":"symbol","language":"jsts","symbolName":"setExpandedHeight","metadata":{"unresolvedName":"setExpandedHeight"}}],["symbol-name:registerInputBox",{"id":"symbol-name:registerInputBox","kind":"symbol","language":"jsts","symbolName":"registerInputBox","metadata":{"unresolvedName":"registerInputBox"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":185,"column":13,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:handleOutsidePointerDown",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:handleOutsidePointerDown","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","symbolName":"handleOutsidePointerDown","symbolKind":"function","exported":false,"metadata":{"line":151,"column":38,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx","metadata":{"lineCount":67,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","metadata":{"lineCount":140,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":49,"column":37,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:vi.mocked(useVoiceTranscription).mockReturnValue",{"id":"external:vi.mocked(useVoiceTranscription).mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(useVoiceTranscription).mockReturnValue"}}],["external:expect(startRecording).toHaveBeenCalled",{"id":"external:expect(startRecording).toHaveBeenCalled","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(startRecording).toHaveBeenCalled"}}],["external:expect(resetError).not.toHaveBeenCalled",{"id":"external:expect(resetError).not.toHaveBeenCalled","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(resetError).not.toHaveBeenCalled"}}],["external:expect(stopRecording).toHaveBeenCalled",{"id":"external:expect(stopRecording).toHaveBeenCalled","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(stopRecording).toHaveBeenCalled"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.tsx:VoiceInputButton",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.tsx:VoiceInputButton","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.tsx","symbolName":"VoiceInputButton","symbolKind":"function","exported":true,"metadata":{"line":11,"column":1,"cyclomaticComplexity":12,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useVoiceTranscription",{"id":"symbol-name:useVoiceTranscription","kind":"symbol","language":"jsts","symbolName":"useVoiceTranscription","metadata":{"unresolvedName":"useVoiceTranscription"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","metadata":{"lineCount":363,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:createHistoryMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:createHistoryMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","symbolName":"createHistoryMessage","symbolKind":"function","exported":false,"metadata":{"line":11,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":356,"column":19,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:slashCommands.map",{"id":"external:slashCommands.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"slashCommands.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:moveUp",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:moveUp","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","symbolName":"moveUp","symbolKind":"function","exported":false,"metadata":{"line":53,"column":19,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:moveDown",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:moveDown","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","symbolName":"moveDown","symbolKind":"function","exported":false,"metadata":{"line":54,"column":21,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:selectCurrent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:selectCurrent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","symbolName":"selectCurrent","symbolKind":"function","exported":false,"metadata":{"line":55,"column":26,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(onCommand).toHaveBeenCalledWith",{"id":"external:expect(onCommand).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(onCommand).toHaveBeenCalledWith"}}],["external:expect(textarea.value).toBe",{"id":"external:expect(textarea.value).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(textarea.value).toBe"}}],["external:expect(onCommand).not.toHaveBeenCalled",{"id":"external:expect(onCommand).not.toHaveBeenCalled","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(onCommand).not.toHaveBeenCalled"}}],["external:expect(onSend).toHaveBeenCalledWith",{"id":"external:expect(onSend).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(onSend).toHaveBeenCalledWith"}}],["symbol-name:resolveSend",{"id":"symbol-name:resolveSend","kind":"symbol","language":"jsts","symbolName":"resolveSend","metadata":{"unresolvedName":"resolveSend"}}],["external:expect(textarea).not.toBeDisabled",{"id":"external:expect(textarea).not.toBeDisabled","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(textarea).not.toBeDisabled"}}],["symbol-name:resolveCommand",{"id":"symbol-name:resolveCommand","kind":"symbol","language":"jsts","symbolName":"resolveCommand","metadata":{"unresolvedName":"resolveCommand"}}],["external:vi.fn().mockReturnValue",{"id":"external:vi.fn().mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.fn().mockReturnValue"}}],["external:fireEvent.compositionStart",{"id":"external:fireEvent.compositionStart","kind":"external","language":"jsts","metadata":{"unresolvedName":"fireEvent.compositionStart"}}],["external:fireEvent.compositionEnd",{"id":"external:fireEvent.compositionEnd","kind":"external","language":"jsts","metadata":{"unresolvedName":"fireEvent.compositionEnd"}}],["external:expect(onSend).not.toHaveBeenCalled",{"id":"external:expect(onSend).not.toHaveBeenCalled","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(onSend).not.toHaveBeenCalled"}}],["symbol-name:createHistoryMessage",{"id":"symbol-name:createHistoryMessage","kind":"symbol","language":"jsts","symbolName":"createHistoryMessage","metadata":{"unresolvedName":"createHistoryMessage"}}],["external:expect(textarea.selectionStart).toBe",{"id":"external:expect(textarea.selectionStart).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(textarea.selectionStart).toBe"}}],["external:expect(textarea.selectionEnd).toBe",{"id":"external:expect(textarea.selectionEnd).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(textarea.selectionEnd).toBe"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention"}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command"}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","symbolName":"InputBoxComponent","symbolKind":"function","exported":false,"metadata":{"line":93,"column":1,"cyclomaticComplexity":154,"maxNestingDepth":5,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useAttachmentRail",{"id":"symbol-name:useAttachmentRail","kind":"symbol","language":"jsts","symbolName":"useAttachmentRail","metadata":{"unresolvedName":"useAttachmentRail"}}],["symbol-name:useInputHistory",{"id":"symbol-name:useInputHistory","kind":"symbol","language":"jsts","symbolName":"useInputHistory","metadata":{"unresolvedName":"useInputHistory"}}],["symbol-name:useMobileCollapse",{"id":"symbol-name:useMobileCollapse","kind":"symbol","language":"jsts","symbolName":"useMobileCollapse","metadata":{"unresolvedName":"useMobileCollapse"}}],["symbol-name:setText",{"id":"symbol-name:setText","kind":"symbol","language":"jsts","symbolName":"setText","metadata":{"unresolvedName":"setText"}}],["symbol-name:setAttachments",{"id":"symbol-name:setAttachments","kind":"symbol","language":"jsts","symbolName":"setAttachments","metadata":{"unresolvedName":"setAttachments"}}],["external:textareaRef.current.setSelectionRange",{"id":"external:textareaRef.current.setSelectionRange","kind":"external","language":"jsts","metadata":{"unresolvedName":"textareaRef.current.setSelectionRange"}}],["symbol-name:resetHistoryIndex",{"id":"symbol-name:resetHistoryIndex","kind":"symbol","language":"jsts","symbolName":"resetHistoryIndex","metadata":{"unresolvedName":"resetHistoryIndex"}}],["symbol-name:resetDraft",{"id":"symbol-name:resetDraft","kind":"symbol","language":"jsts","symbolName":"resetDraft","metadata":{"unresolvedName":"resetDraft"}}],["symbol-name:onCommand",{"id":"symbol-name:onCommand","kind":"symbol","language":"jsts","symbolName":"onCommand","metadata":{"unresolvedName":"onCommand"}}],["symbol-name:onClearRevert",{"id":"symbol-name:onClearRevert","kind":"symbol","language":"jsts","symbolName":"onClearRevert","metadata":{"unresolvedName":"onClearRevert"}}],["symbol-name:restoreDraft",{"id":"symbol-name:restoreDraft","kind":"symbol","language":"jsts","symbolName":"restoreDraft","metadata":{"unresolvedName":"restoreDraft"}}],["symbol-name:setIsSubmitting",{"id":"symbol-name:setIsSubmitting","kind":"symbol","language":"jsts","symbolName":"setIsSubmitting","metadata":{"unresolvedName":"setIsSubmitting"}}],["symbol-name:submit",{"id":"symbol-name:submit","kind":"symbol","language":"jsts","symbolName":"submit","metadata":{"unresolvedName":"submit"}}],["symbol-name:onFailure",{"id":"symbol-name:onFailure","kind":"symbol","language":"jsts","symbolName":"onFailure","metadata":{"unresolvedName":"onFailure"}}],["symbol-name:onSuccess",{"id":"symbol-name:onSuccess","kind":"symbol","language":"jsts","symbolName":"onSuccess","metadata":{"unresolvedName":"onSuccess"}}],["external:attachments.find",{"id":"external:attachments.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"attachments.find"}}],["external:text.slice(textRange.end).trim",{"id":"external:text.slice(textRange.end).trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"text.slice(textRange.end).trim"}}],["symbol-name:submitCommandOptimistically",{"id":"symbol-name:submitCommandOptimistically","kind":"symbol","language":"jsts","symbolName":"submitCommandOptimistically","metadata":{"unresolvedName":"submitCommandOptimistically"}}],["symbol-name:runSubmit",{"id":"symbol-name:runSubmit","kind":"symbol","language":"jsts","symbolName":"runSubmit","metadata":{"unresolvedName":"runSubmit"}}],["symbol-name:setMentionQuery",{"id":"symbol-name:setMentionQuery","kind":"symbol","language":"jsts","symbolName":"setMentionQuery","metadata":{"unresolvedName":"setMentionQuery"}}],["external:slashMenuRef.current.moveUp",{"id":"external:slashMenuRef.current.moveUp","kind":"external","language":"jsts","metadata":{"unresolvedName":"slashMenuRef.current.moveUp"}}],["external:slashMenuRef.current.moveDown",{"id":"external:slashMenuRef.current.moveDown","kind":"external","language":"jsts","metadata":{"unresolvedName":"slashMenuRef.current.moveDown"}}],["external:slashMenuRef.current.selectCurrent",{"id":"external:slashMenuRef.current.selectCurrent","kind":"external","language":"jsts","metadata":{"unresolvedName":"slashMenuRef.current.selectCurrent"}}],["symbol-name:setSlashOpen",{"id":"symbol-name:setSlashOpen","kind":"symbol","language":"jsts","symbolName":"setSlashOpen","metadata":{"unresolvedName":"setSlashOpen"}}],["external:mentionMenuRef.current.moveUp",{"id":"external:mentionMenuRef.current.moveUp","kind":"external","language":"jsts","metadata":{"unresolvedName":"mentionMenuRef.current.moveUp"}}],["external:mentionMenuRef.current.moveDown",{"id":"external:mentionMenuRef.current.moveDown","kind":"external","language":"jsts","metadata":{"unresolvedName":"mentionMenuRef.current.moveDown"}}],["external:mentionMenuRef.current.getSelectedItem",{"id":"external:mentionMenuRef.current.getSelectedItem","kind":"external","language":"jsts","metadata":{"unresolvedName":"mentionMenuRef.current.getSelectedItem"}}],["external:(selected.relativePath || selected.displayName).replace",{"id":"external:(selected.relativePath || selected.displayName).replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"(selected.relativePath || selected.displayName).replace"}}],["symbol-name:updateMentionQuery",{"id":"symbol-name:updateMentionQuery","kind":"symbol","language":"jsts","symbolName":"updateMentionQuery","metadata":{"unresolvedName":"updateMentionQuery"}}],["external:mentionQuery.includes",{"id":"external:mentionQuery.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"mentionQuery.includes"}}],["external:mentionQuery.replace(/\\/$/, '').split",{"id":"external:mentionQuery.replace(/\\/$/, '').split","kind":"external","language":"jsts","metadata":{"unresolvedName":"mentionQuery.replace(/\\/$/, '').split"}}],["external:mentionQuery.replace",{"id":"external:mentionQuery.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"mentionQuery.replace"}}],["external:mentionMenuRef.current.setRestoreFolder",{"id":"external:mentionMenuRef.current.setRestoreFolder","kind":"external","language":"jsts","metadata":{"unresolvedName":"mentionMenuRef.current.setRestoreFolder"}}],["external:parts.pop",{"id":"external:parts.pop","kind":"external","language":"jsts","metadata":{"unresolvedName":"parts.pop"}}],["external:mentionMenuRef.current.selectCurrent",{"id":"external:mentionMenuRef.current.selectCurrent","kind":"external","language":"jsts","metadata":{"unresolvedName":"mentionMenuRef.current.selectCurrent"}}],["symbol-name:setMentionOpen",{"id":"symbol-name:setMentionOpen","kind":"symbol","language":"jsts","symbolName":"setMentionOpen","metadata":{"unresolvedName":"setMentionOpen"}}],["symbol-name:handleHistoryKeyDown",{"id":"symbol-name:handleHistoryKeyDown","kind":"symbol","language":"jsts","symbolName":"handleHistoryKeyDown","metadata":{"unresolvedName":"handleHistoryKeyDown"}}],["symbol-name:handleHistoryChange",{"id":"symbol-name:handleHistoryChange","kind":"symbol","language":"jsts","symbolName":"handleHistoryChange","metadata":{"unresolvedName":"handleHistoryChange"}}],["external:newText.slice",{"id":"external:newText.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"newText.slice"}}],["symbol-name:detectMentionTrigger",{"id":"symbol-name:detectMentionTrigger","kind":"symbol","language":"jsts","symbolName":"detectMentionTrigger","metadata":{"unresolvedName":"detectMentionTrigger"}}],["symbol-name:setMentionStartIndex",{"id":"symbol-name:setMentionStartIndex","kind":"symbol","language":"jsts","symbolName":"setMentionStartIndex","metadata":{"unresolvedName":"setMentionStartIndex"}}],["symbol-name:detectSlashTrigger",{"id":"symbol-name:detectSlashTrigger","kind":"symbol","language":"jsts","symbolName":"detectSlashTrigger","metadata":{"unresolvedName":"detectSlashTrigger"}}],["symbol-name:setSlashQuery",{"id":"symbol-name:setSlashQuery","kind":"symbol","language":"jsts","symbolName":"setSlashQuery","metadata":{"unresolvedName":"setSlashQuery"}}],["symbol-name:setSlashStartIndex",{"id":"symbol-name:setSlashStartIndex","kind":"symbol","language":"jsts","symbolName":"setSlashStartIndex","metadata":{"unresolvedName":"setSlashStartIndex"}}],["external:(item.relativePath || item.displayName).replace",{"id":"external:(item.relativePath || item.displayName).replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"(item.relativePath || item.displayName).replace"}}],["symbol-name:ensureFileMime",{"id":"symbol-name:ensureFileMime","kind":"symbol","language":"jsts","symbolName":"ensureFileMime","metadata":{"unresolvedName":"ensureFileMime"}}],["symbol-name:isFileSupported",{"id":"symbol-name:isFileSupported","kind":"symbol","language":"jsts","symbolName":"isFileSupported","metadata":{"unresolvedName":"isFileSupported"}}],["symbol-name:readFileAsDataUrl",{"id":"symbol-name:readFileAsDataUrl","kind":"symbol","language":"jsts","symbolName":"readFileAsDataUrl","metadata":{"unresolvedName":"readFileAsDataUrl"}}],["external:nextAttachments.push",{"id":"external:nextAttachments.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"nextAttachments.push"}}],["external:transcribedText.trim",{"id":"external:transcribedText.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"transcribedText.trim"}}],["external:current.trim",{"id":"external:current.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"current.trim"}}],["external:current.endsWith",{"id":"external:current.endsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"current.endsWith"}}],["external:textarea.focus",{"id":"external:textarea.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"textarea.focus"}}],["external:textarea.setSelectionRange",{"id":"external:textarea.setSelectionRange","kind":"external","language":"jsts","metadata":{"unresolvedName":"textarea.setSelectionRange"}}],["external:text.replace(value + ' ', '').replace",{"id":"external:text.replace(value + ' ', '').replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"text.replace(value + ' ', '').replace"}}],["external:items[i].getAsFile",{"id":"external:items[i].getAsFile","kind":"external","language":"jsts","metadata":{"unresolvedName":"items[i].getAsFile"}}],["symbol-name:handleFilesSelected",{"id":"symbol-name:handleFilesSelected","kind":"symbol","language":"jsts","symbolName":"handleFilesSelected","metadata":{"unresolvedName":"handleFilesSelected"}}],["symbol-name:normalizePath",{"id":"symbol-name:normalizePath","kind":"symbol","language":"jsts","symbolName":"normalizePath","metadata":{"unresolvedName":"normalizePath"}}],["external:beforeCursor.endsWith",{"id":"external:beforeCursor.endsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"beforeCursor.endsWith"}}],["symbol-name:toFileUrl",{"id":"symbol-name:toFileUrl","kind":"symbol","language":"jsts","symbolName":"toFileUrl","metadata":{"unresolvedName":"toFileUrl"}}],["symbol-name:insertDraggedFile",{"id":"symbol-name:insertDraggedFile","kind":"symbol","language":"jsts","symbolName":"insertDraggedFile","metadata":{"unresolvedName":"insertDraggedFile"}}],["external:attachments.forEach",{"id":"external:attachments.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"attachments.forEach"}}],["external:excludeValues.add",{"id":"external:excludeValues.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"excludeValues.add"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":940,"column":23,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx","metadata":{"lineCount":94,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":89,"column":19,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(screen.getByTestId('attachment-count')).toHaveTextContent",{"id":"external:expect(screen.getByTestId('attachment-count')).toHaveTextContent","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByTestId('attachment-count')).toHaveTextContent"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","metadata":{"lineCount":159,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":148,"column":58,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:expect(onSelect).toHaveBeenCalledWith",{"id":"external:expect(onSelect).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(onSelect).toHaveBeenCalledWith"}}],["external:expect(selectedOption).not.toBeNull",{"id":"external:expect(selectedOption).not.toBeNull","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(selectedOption).not.toBeNull"}}],["external:expect(selectedOption).not.toContainElement",{"id":"external:expect(selectedOption).not.toContainElement","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(selectedOption).not.toContainElement"}}],["external:expect(pinButtons.length).toBeGreaterThan",{"id":"external:expect(pinButtons.length).toBeGreaterThan","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(pinButtons.length).toBeGreaterThan"}}],["external:expect(screen.getByRole('status')).toHaveTextContent",{"id":"external:expect(screen.getByRole('status')).toHaveTextContent","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('status')).toHaveTextContent"}}],["external:expect(lastOption).toHaveFocus",{"id":"external:expect(lastOption).toHaveFocus","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(lastOption).toHaveFocus"}}],["external:expect(selectedOption).toHaveFocus",{"id":"external:expect(selectedOption).toHaveFocus","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(selectedOption).toHaveFocus"}}],["external:expect(firstPinButton).toHaveFocus",{"id":"external:expect(firstPinButton).toHaveFocus","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(firstPinButton).toHaveFocus"}}],["external:expect(pinButton).not.toHaveFocus",{"id":"external:expect(pinButton).not.toHaveFocus","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(pinButton).not.toHaveFocus"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:ToolbarSelectorHarness",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:ToolbarSelectorHarness","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","symbolName":"ToolbarSelectorHarness","symbolKind":"function","exported":false,"metadata":{"line":122,"column":5,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:useFlatList",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:useFlatList","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","symbolName":"useFlatList","symbolKind":"function","exported":false,"metadata":{"line":58,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:groupModelsByProvider",{"id":"symbol-name:groupModelsByProvider","kind":"symbol","language":"jsts","symbolName":"groupModelsByProvider","metadata":{"unresolvedName":"groupModelsByProvider"}}],["symbol-name:getRecentModels",{"id":"symbol-name:getRecentModels","kind":"symbol","language":"jsts","symbolName":"getRecentModels","metadata":{"unresolvedName":"getRecentModels"}}],["symbol-name:getPinnedModels",{"id":"symbol-name:getPinnedModels","kind":"symbol","language":"jsts","symbolName":"getPinnedModels","metadata":{"unresolvedName":"getPinnedModels"}}],["external:flat.push",{"id":"external:flat.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"flat.push"}}],["external:pinned.forEach",{"id":"external:pinned.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"pinned.forEach"}}],["external:addedKeys.add",{"id":"external:addedKeys.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"addedKeys.add"}}],["external:recent.filter",{"id":"external:recent.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"recent.filter"}}],["external:addedKeys.has",{"id":"external:addedKeys.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"addedKeys.has"}}],["external:recentFiltered.forEach",{"id":"external:recentFiltered.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"recentFiltered.forEach"}}],["external:groups.forEach",{"id":"external:groups.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"groups.forEach"}}],["external:g.models.filter",{"id":"external:g.models.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"g.models.filter"}}],["external:groupModels.forEach",{"id":"external:groupModels.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"groupModels.forEach"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":814,"column":22,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:setSearchQuery",{"id":"symbol-name:setSearchQuery","kind":"symbol","language":"jsts","symbolName":"setSearchQuery","metadata":{"unresolvedName":"setSearchQuery"}}],["symbol-name:setHighlightedIndex",{"id":"symbol-name:setHighlightedIndex","kind":"symbol","language":"jsts","symbolName":"setHighlightedIndex","metadata":{"unresolvedName":"setHighlightedIndex"}}],["external:flatList.map",{"id":"external:flatList.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"flatList.map"}}],["external:itemIndices.indexOf",{"id":"external:itemIndices.indexOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"itemIndices.indexOf"}}],["symbol-name:isModelPinned",{"id":"symbol-name:isModelPinned","kind":"symbol","language":"jsts","symbolName":"isModelPinned","metadata":{"unresolvedName":"isModelPinned"}}],["symbol-name:onItemClick",{"id":"symbol-name:onItemClick","kind":"symbol","language":"jsts","symbolName":"onItemClick","metadata":{"unresolvedName":"onItemClick"}}],["symbol-name:handleItemKeyDown",{"id":"symbol-name:handleItemKeyDown","kind":"symbol","language":"jsts","symbolName":"handleItemKeyDown","metadata":{"unresolvedName":"handleItemKeyDown"}}],["symbol-name:onTouchStart",{"id":"symbol-name:onTouchStart","kind":"symbol","language":"jsts","symbolName":"onTouchStart","metadata":{"unresolvedName":"onTouchStart"}}],["symbol-name:formatContext",{"id":"symbol-name:formatContext","kind":"symbol","language":"jsts","symbolName":"formatContext","metadata":{"unresolvedName":"formatContext"}}],["symbol-name:onTogglePin",{"id":"symbol-name:onTogglePin","kind":"symbol","language":"jsts","symbolName":"onTogglePin","metadata":{"unresolvedName":"onTogglePin"}}],["symbol-name:handlePinKeyDown",{"id":"symbol-name:handlePinKeyDown","kind":"symbol","language":"jsts","symbolName":"handlePinKeyDown","metadata":{"unresolvedName":"handlePinKeyDown"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:formatContext",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:formatContext","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","symbolName":"formatContext","symbolKind":"function","exported":false,"metadata":{"line":332,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:(k / 1000).toFixed",{"id":"external:(k / 1000).toFixed","kind":"external","language":"jsts","metadata":{"unresolvedName":"(k / 1000).toFixed"}}],["external:searchQuery.trim",{"id":"external:searchQuery.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"searchQuery.trim"}}],["external:searchQuery.toLowerCase",{"id":"external:searchQuery.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"searchQuery.toLowerCase"}}],["external:(typeof value === 'string' ? value : '').toLowerCase",{"id":"external:(typeof value === 'string' ? value : '').toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"(typeof value === 'string' ? value : '').toLowerCase"}}],["external:normalize(m.name).includes",{"id":"external:normalize(m.name).includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalize(m.name).includes"}}],["symbol-name:normalize",{"id":"symbol-name:normalize","kind":"symbol","language":"jsts","symbolName":"normalize","metadata":{"unresolvedName":"normalize"}}],["external:normalize(m.id).includes",{"id":"external:normalize(m.id).includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalize(m.id).includes"}}],["external:normalize(m.family).includes",{"id":"external:normalize(m.family).includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalize(m.family).includes"}}],["external:normalize(m.providerName).includes",{"id":"external:normalize(m.providerName).includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalize(m.providerName).includes"}}],["symbol-name:useFlatList",{"id":"symbol-name:useFlatList","kind":"symbol","language":"jsts","symbolName":"useFlatList","metadata":{"unresolvedName":"useFlatList"}}],["external:flatList.map((item, index) => (item.type === 'item' ? index : -1)).filter",{"id":"external:flatList.map((item, index) => (item.type === 'item' ? index : -1)).filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"flatList.map((item, index) => (item.type === 'item' ? index : -1)).filter"}}],["external:models.find",{"id":"external:models.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"models.find"}}],["external:flatList.findIndex",{"id":"external:flatList.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"flatList.findIndex"}}],["external:container?.querySelector",{"id":"external:container?.querySelector","kind":"external","language":"jsts","metadata":{"unresolvedName":"container?.querySelector"}}],["symbol-name:recordModelUsage",{"id":"symbol-name:recordModelUsage","kind":"symbol","language":"jsts","symbolName":"recordModelUsage","metadata":{"unresolvedName":"recordModelUsage"}}],["symbol-name:closeMenu",{"id":"symbol-name:closeMenu","kind":"symbol","language":"jsts","symbolName":"closeMenu","metadata":{"unresolvedName":"closeMenu"}}],["symbol-name:focusToolbarInput",{"id":"symbol-name:focusToolbarInput","kind":"symbol","language":"jsts","symbolName":"focusToolbarInput","metadata":{"unresolvedName":"focusToolbarInput"}}],["symbol-name:setRefreshTrigger",{"id":"symbol-name:setRefreshTrigger","kind":"symbol","language":"jsts","symbolName":"setRefreshTrigger","metadata":{"unresolvedName":"setRefreshTrigger"}}],["external:e.currentTarget.blur",{"id":"external:e.currentTarget.blur","kind":"external","language":"jsts","metadata":{"unresolvedName":"e.currentTarget.blur"}}],["symbol-name:toggleModelPin",{"id":"symbol-name:toggleModelPin","kind":"symbol","language":"jsts","symbolName":"toggleModelPin","metadata":{"unresolvedName":"toggleModelPin"}}],["symbol-name:handleSelect",{"id":"symbol-name:handleSelect","kind":"symbol","language":"jsts","symbolName":"handleSelect","metadata":{"unresolvedName":"handleSelect"}}],["external:target?.scrollIntoView",{"id":"external:target?.scrollIntoView","kind":"external","language":"jsts","metadata":{"unresolvedName":"target?.scrollIntoView"}}],["external:document.querySelector(selector)?.focus",{"id":"external:document.querySelector(selector)?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.querySelector(selector)?.focus"}}],["symbol-name:focusItemAtInteractiveIndex",{"id":"symbol-name:focusItemAtInteractiveIndex","kind":"symbol","language":"jsts","symbolName":"focusItemAtInteractiveIndex","metadata":{"unresolvedName":"focusItemAtInteractiveIndex"}}],["external:searchInputRef.current?.focus",{"id":"external:searchInputRef.current?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"searchInputRef.current?.focus"}}],["external:containerRef.current.contains",{"id":"external:containerRef.current.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"containerRef.current.contains"}}],["external:document.getElementById(`${idPrefix}-${realIndex}`)?.scrollIntoView",{"id":"external:document.getElementById(`${idPrefix}-${realIndex}`)?.scrollIntoView","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.getElementById(`${idPrefix}-${realIndex}`)?.scrollIntoView"}}],["external:focusTarget?.focus",{"id":"external:focusTarget?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"focusTarget?.focus"}}],["symbol-name:focusPinButtonForModel",{"id":"symbol-name:focusPinButtonForModel","kind":"symbol","language":"jsts","symbolName":"focusPinButtonForModel","metadata":{"unresolvedName":"focusPinButtonForModel"}}],["symbol-name:openMenu",{"id":"symbol-name:openMenu","kind":"symbol","language":"jsts","symbolName":"openMenu","metadata":{"unresolvedName":"openMenu"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:handleClickOutside",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:handleClickOutside","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","symbolName":"handleClickOutside","symbolKind":"function","exported":false,"metadata":{"line":579,"column":34,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:handleEsc",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:handleEsc","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","symbolName":"handleEsc","symbolKind":"function","exported":false,"metadata":{"line":595,"column":25,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:resolveDropZone",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:resolveDropZone","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx","symbolName":"resolveDropZone","symbolKind":"function","exported":true,"metadata":{"line":43,"column":1,"cyclomaticComplexity":11,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":93,"column":48,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setActiveZone",{"id":"symbol-name:setActiveZone","kind":"symbol","language":"jsts","symbolName":"setActiveZone","metadata":{"unresolvedName":"setActiveZone"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:setZone",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:setZone","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx","symbolName":"setZone","symbolKind":"function","exported":false,"metadata":{"line":80,"column":7,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","symbolName":"PaneHeader","symbolKind":"function","exported":true,"metadata":{"line":43,"column":1,"cyclomaticComplexity":32,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useSessionState",{"id":"symbol-name:useSessionState","kind":"symbol","language":"jsts","symbolName":"useSessionState","metadata":{"unresolvedName":"useSessionState"}}],["symbol-name:setIsEditing",{"id":"symbol-name:setIsEditing","kind":"symbol","language":"jsts","symbolName":"setIsEditing","metadata":{"unresolvedName":"setIsEditing"}}],["external:inputRef.current.focus",{"id":"external:inputRef.current.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"inputRef.current.focus"}}],["external:inputRef.current.select",{"id":"external:inputRef.current.select","kind":"external","language":"jsts","metadata":{"unresolvedName":"inputRef.current.select"}}],["symbol-name:setEditValue",{"id":"symbol-name:setEditValue","kind":"symbol","language":"jsts","symbolName":"setEditValue","metadata":{"unresolvedName":"setEditValue"}}],["external:editValue.trim",{"id":"external:editValue.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"editValue.trim"}}],["symbol-name:setIsDragOver",{"id":"symbol-name:setIsDragOver","kind":"symbol","language":"jsts","symbolName":"setIsDragOver","metadata":{"unresolvedName":"setIsDragOver"}}],["external:paneLayoutStore.swapPanes",{"id":"external:paneLayoutStore.swapPanes","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneLayoutStore.swapPanes"}}],["symbol-name:handleClose",{"id":"symbol-name:handleClose","kind":"symbol","language":"jsts","symbolName":"handleClose","metadata":{"unresolvedName":"handleClose"}}],["symbol-name:onTogglePaneFullscreen",{"id":"symbol-name:onTogglePaneFullscreen","kind":"symbol","language":"jsts","symbolName":"onTogglePaneFullscreen","metadata":{"unresolvedName":"onTogglePaneFullscreen"}}],["symbol-name:handleSplitH",{"id":"symbol-name:handleSplitH","kind":"symbol","language":"jsts","symbolName":"handleSplitH","metadata":{"unresolvedName":"handleSplitH"}}],["symbol-name:handleSplitV",{"id":"symbol-name:handleSplitV","kind":"symbol","language":"jsts","symbolName":"handleSplitV","metadata":{"unresolvedName":"handleSplitV"}}],["symbol-name:onOpenSidebar",{"id":"symbol-name:onOpenSidebar","kind":"symbol","language":"jsts","symbolName":"onOpenSidebar","metadata":{"unresolvedName":"onOpenSidebar"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":287,"column":24,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx","metadata":{"lineCount":223,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:PermissionDialog",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:PermissionDialog","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx","symbolName":"PermissionDialog","symbolKind":"function","exported":true,"metadata":{"line":21,"column":1,"cyclomaticComplexity":31,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:childSessionStore.getSessionInfo",{"id":"external:childSessionStore.getSessionInfo","kind":"external","language":"jsts","metadata":{"unresolvedName":"childSessionStore.getSessionInfo"}}],["symbol-name:onCollapsedChange",{"id":"symbol-name:onCollapsedChange","kind":"symbol","language":"jsts","symbolName":"onCollapsedChange","metadata":{"unresolvedName":"onCollapsedChange"}}],["external:request.patterns.map(p => p.replace(/\\\\n/g, '\\n')).join",{"id":"external:request.patterns.map(p => p.replace(/\\\\n/g, '\\n')).join","kind":"external","language":"jsts","metadata":{"unresolvedName":"request.patterns.map(p => p.replace(/\\\\n/g, '\\n')).join"}}],["external:request.patterns.map",{"id":"external:request.patterns.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"request.patterns.map"}}],["external:request.always.join",{"id":"external:request.always.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"request.always.join"}}],["symbol-name:onAutoApprove",{"id":"symbol-name:onAutoApprove","kind":"symbol","language":"jsts","symbolName":"onAutoApprove","metadata":{"unresolvedName":"onAutoApprove"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":173,"column":26,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx","metadata":{"lineCount":47,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","metadata":{"lineCount":452,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":34,"column":50,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:screen.findByDisplayValue",{"id":"external:screen.findByDisplayValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"screen.findByDisplayValue"}}],["external:expect(await screen.findByText('src')).toBeInTheDocument",{"id":"external:expect(await screen.findByText('src')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(await screen.findByText('src')).toBeInTheDocument"}}],["external:expect(await screen.findByText('docs')).toBeInTheDocument",{"id":"external:expect(await screen.findByText('docs')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(await screen.findByText('docs')).toBeInTheDocument"}}],["external:expect(screen.getByText('Add current')).toBeInTheDocument",{"id":"external:expect(screen.getByText('Add current')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('Add current')).toBeInTheDocument"}}],["external:expect(vi.mocked(getPath).mock.calls.length).toBeGreaterThanOrEqual",{"id":"external:expect(vi.mocked(getPath).mock.calls.length).toBeGreaterThanOrEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(vi.mocked(getPath).mock.calls.length).toBeGreaterThanOrEqual"}}],["external:expect(vi.mocked(listDirectory).mock.calls.length).toBeGreaterThanOrEqual",{"id":"external:expect(vi.mocked(listDirectory).mock.calls.length).toBeGreaterThanOrEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(vi.mocked(listDirectory).mock.calls.length).toBeGreaterThanOrEqual"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:normalizePath",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:normalizePath","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","symbolName":"normalizePath","symbolKind":"function","exported":false,"metadata":{"line":36,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:getDirectoryPath",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:getDirectoryPath","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","symbolName":"getDirectoryPath","symbolKind":"function","exported":false,"metadata":{"line":42,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:normalized.endsWith",{"id":"external:normalized.endsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalized.endsWith"}}],["external:normalized.lastIndexOf",{"id":"external:normalized.lastIndexOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalized.lastIndexOf"}}],["external:normalized.substring",{"id":"external:normalized.substring","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalized.substring"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:getFilterText",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:getFilterText","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","symbolName":"getFilterText","symbolKind":"function","exported":false,"metadata":{"line":50,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","symbolName":"ProjectDialog","symbolKind":"function","exported":true,"metadata":{"line":61,"column":1,"cyclomaticComplexity":54,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getDirectoryPath",{"id":"symbol-name:getDirectoryPath","kind":"symbol","language":"jsts","symbolName":"getDirectoryPath","metadata":{"unresolvedName":"getDirectoryPath"}}],["symbol-name:getFilterText",{"id":"symbol-name:getFilterText","kind":"symbol","language":"jsts","symbolName":"getFilterText","metadata":{"unresolvedName":"getFilterText"}}],["external:filterText.toLowerCase",{"id":"external:filterText.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"filterText.toLowerCase"}}],["external:items.filter",{"id":"external:items.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"items.filter"}}],["external:item.name.toLowerCase().startsWith",{"id":"external:item.name.toLowerCase().startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"item.name.toLowerCase().startsWith"}}],["external:item.name.toLowerCase",{"id":"external:item.name.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"item.name.toLowerCase"}}],["symbol-name:setItems",{"id":"symbol-name:setItems","kind":"symbol","language":"jsts","symbolName":"setItems","metadata":{"unresolvedName":"setItems"}}],["external:path.endsWith",{"id":"external:path.endsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.endsWith"}}],["symbol-name:setInputValue",{"id":"symbol-name:setInputValue","kind":"symbol","language":"jsts","symbolName":"setInputValue","metadata":{"unresolvedName":"setInputValue"}}],["symbol-name:initPath",{"id":"symbol-name:initPath","kind":"symbol","language":"jsts","symbolName":"initPath","metadata":{"unresolvedName":"initPath"}}],["external:listDirectory(currentDir)\r\n .then",{"id":"external:listDirectory(currentDir)\r\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"listDirectory(currentDir)\r\n .then"}}],["external:nodes\r\n .filter",{"id":"external:nodes\r\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"nodes\r\n .filter"}}],["external:n.name.startsWith",{"id":"external:n.name.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"n.name.startsWith"}}],["external:fileItems.findIndex",{"id":"external:fileItems.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"fileItems.findIndex"}}],["symbol-name:fileErrorHandler",{"id":"symbol-name:fileErrorHandler","kind":"symbol","language":"jsts","symbolName":"fileErrorHandler","metadata":{"unresolvedName":"fileErrorHandler"}}],["external:current.slice",{"id":"external:current.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"current.slice"}}],["external:current.split(PATH_SEP).pop",{"id":"external:current.split(PATH_SEP).pop","kind":"external","language":"jsts","metadata":{"unresolvedName":"current.split(PATH_SEP).pop"}}],["external:current.split",{"id":"external:current.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"current.split"}}],["external:path.slice",{"id":"external:path.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.slice"}}],["external:inputValue.endsWith",{"id":"external:inputValue.endsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"inputValue.endsWith"}}],["symbol-name:handleGoBack",{"id":"symbol-name:handleGoBack","kind":"symbol","language":"jsts","symbolName":"handleGoBack","metadata":{"unresolvedName":"handleGoBack"}}],["external:inputValue.split(PATH_SEP).filter",{"id":"external:inputValue.split(PATH_SEP).filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"inputValue.split(PATH_SEP).filter"}}],["external:inputValue.split",{"id":"external:inputValue.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"inputValue.split"}}],["external:filteredItems.map",{"id":"external:filteredItems.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"filteredItems.map"}}],["symbol-name:handleItemClick",{"id":"symbol-name:handleItemClick","kind":"symbol","language":"jsts","symbolName":"handleItemClick","metadata":{"unresolvedName":"handleItemClick"}}],["symbol-name:handleSelectFolder",{"id":"symbol-name:handleSelectFolder","kind":"symbol","language":"jsts","symbolName":"handleSelectFolder","metadata":{"unresolvedName":"handleSelectFolder"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":380,"column":32,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:initPath",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:initPath","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","symbolName":"initPath","symbolKind":"function","exported":false,"metadata":{"line":99,"column":24,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ListItem",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ListItem","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","symbolName":"ListItem","symbolKind":"function","exported":false,"metadata":{"line":429,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","metadata":{"lineCount":398,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","symbolName":"QuestionDialog","symbolKind":"function","exported":true,"metadata":{"line":19,"column":1,"cyclomaticComplexity":31,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:newMap.set",{"id":"external:newMap.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"newMap.set"}}],["external:current.has",{"id":"external:current.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"current.has"}}],["external:current.delete",{"id":"external:current.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"current.delete"}}],["external:current.add",{"id":"external:current.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"current.add"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":372,"column":24,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionItem",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionItem","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","symbolName":"QuestionItem","symbolKind":"function","exported":false,"metadata":{"line":281,"column":1,"cyclomaticComplexity":20,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:adjustTextareaHeight",{"id":"symbol-name:adjustTextareaHeight","kind":"symbol","language":"jsts","symbolName":"adjustTextareaHeight","metadata":{"unresolvedName":"adjustTextareaHeight"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:Indicator",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:Indicator","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","symbolName":"Indicator","symbolKind":"function","exported":false,"metadata":{"line":391,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts","metadata":{"lineCount":19,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:formatRemaining",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:formatRemaining","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx","symbolName":"formatRemaining","symbolKind":"function","exported":false,"metadata":{"line":15,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:(ms / 1000).toFixed",{"id":"external:(ms / 1000).toFixed","kind":"external","language":"jsts","metadata":{"unresolvedName":"(ms / 1000).toFixed"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":28,"column":31,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useNow",{"id":"symbol-name:useNow","kind":"symbol","language":"jsts","symbolName":"useNow","metadata":{"unresolvedName":"useNow"}}],["external:Number.isFinite",{"id":"external:Number.isFinite","kind":"external","language":"jsts","metadata":{"unresolvedName":"Number.isFinite"}}],["symbol-name:formatRemaining",{"id":"symbol-name:formatRemaining","kind":"symbol","language":"jsts","symbolName":"formatRemaining","metadata":{"unresolvedName":"formatRemaining"}}],["external:status.message?.trim",{"id":"external:status.message?.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"status.message?.trim"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:ShareDialog",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:ShareDialog","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","symbolName":"ShareDialog","symbolKind":"function","exported":true,"metadata":{"line":14,"column":1,"cyclomaticComplexity":15,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:shareSession",{"id":"symbol-name:shareSession","kind":"symbol","language":"jsts","symbolName":"shareSession","metadata":{"unresolvedName":"shareSession"}}],["external:messageStore.setShareUrl",{"id":"external:messageStore.setShareUrl","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.setShareUrl"}}],["symbol-name:unshareSession",{"id":"symbol-name:unshareSession","kind":"symbol","language":"jsts","symbolName":"unshareSession","metadata":{"unresolvedName":"unshareSession"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":21,"column":13,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleShare",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleShare","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","symbolName":"handleShare","symbolKind":"function","exported":false,"metadata":{"line":28,"column":23,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleUnshare",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleUnshare","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","symbolName":"handleUnshare","symbolKind":"function","exported":false,"metadata":{"line":43,"column":25,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleCopy",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleCopy","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","symbolName":"handleCopy","symbolKind":"function","exported":false,"metadata":{"line":58,"column":22,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx","metadata":{"lineCount":115,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","metadata":{"lineCount":367,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:ActiveSessionItem",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:ActiveSessionItem","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx","symbolName":"ActiveSessionItem","symbolKind":"function","exported":true,"metadata":{"line":13,"column":1,"cyclomaticComplexity":18,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:entry.sessionId.slice",{"id":"external:entry.sessionId.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"entry.sessionId.slice"}}],["external:directory.replace(/\\\\/g, '/').split('/').filter(Boolean).pop",{"id":"external:directory.replace(/\\\\/g, '/').split('/').filter(Boolean).pop","kind":"external","language":"jsts","metadata":{"unresolvedName":"directory.replace(/\\\\/g, '/').split('/').filter(Boolean).pop"}}],["external:directory.replace(/\\\\/g, '/').split('/').filter",{"id":"external:directory.replace(/\\\\/g, '/').split('/').filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"directory.replace(/\\\\/g, '/').split('/').filter"}}],["external:directory.replace(/\\\\/g, '/').split",{"id":"external:directory.replace(/\\\\/g, '/').split","kind":"external","language":"jsts","metadata":{"unresolvedName":"directory.replace(/\\\\/g, '/').split"}}],["external:directory.replace",{"id":"external:directory.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"directory.replace"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:handleClick",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:handleClick","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx","symbolName":"handleClick","symbolKind":"function","exported":false,"metadata":{"line":37,"column":23,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:handleDragStart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:handleDragStart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx","symbolName":"handleDragStart","symbolKind":"function","exported":false,"metadata":{"line":48,"column":27,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts","metadata":{"lineCount":42,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts","metadata":{"lineCount":34,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:makeEntry",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:makeEntry","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts","symbolName":"makeEntry","symbolKind":"function","exported":false,"metadata":{"line":5,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":33,"column":63,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["symbol-name:makeEntry",{"id":"symbol-name:makeEntry","kind":"symbol","language":"jsts","symbolName":"makeEntry","metadata":{"unresolvedName":"makeEntry"}}],["symbol-name:buildActiveSessionTree",{"id":"symbol-name:buildActiveSessionTree","kind":"symbol","language":"jsts","symbolName":"buildActiveSessionTree","metadata":{"unresolvedName":"buildActiveSessionTree"}}],["external:expect(tree.rootEntries).toEqual",{"id":"external:expect(tree.rootEntries).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(tree.rootEntries).toEqual"}}],["external:expect(tree.childrenByParent.get('root')).toEqual",{"id":"external:expect(tree.childrenByParent.get('root')).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(tree.childrenByParent.get('root')).toEqual"}}],["external:tree.childrenByParent.get",{"id":"external:tree.childrenByParent.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"tree.childrenByParent.get"}}],["external:expect(tree.childrenByParent.get('child')).toEqual",{"id":"external:expect(tree.childrenByParent.get('child')).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(tree.childrenByParent.get('child')).toEqual"}}],["external:expect(tree.childrenByParent.size).toBe",{"id":"external:expect(tree.childrenByParent.size).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(tree.childrenByParent.size).toBe"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts:buildActiveSessionTree",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts:buildActiveSessionTree","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts","symbolName":"buildActiveSessionTree","symbolKind":"function","exported":true,"metadata":{"line":8,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:busySessions.map",{"id":"external:busySessions.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"busySessions.map"}}],["symbol-name:findParentId",{"id":"symbol-name:findParentId","kind":"symbol","language":"jsts","symbolName":"findParentId","metadata":{"unresolvedName":"findParentId"}}],["external:busySessionIds.has",{"id":"external:busySessionIds.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"busySessionIds.has"}}],["external:rootEntries.push",{"id":"external:rootEntries.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"rootEntries.push"}}],["external:childrenByParent.get",{"id":"external:childrenByParent.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"childrenByParent.get"}}],["external:siblings.push",{"id":"external:siblings.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"siblings.push"}}],["external:childrenByParent.set",{"id":"external:childrenByParent.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"childrenByParent.set"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","metadata":{"lineCount":361,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["module:../../../assets/models.json?url",{"id":"module:../../../assets/models.json?url","kind":"module","language":"jsts","metadata":{"source":"../../../assets/models.json?url"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","metadata":{"lineCount":107,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:tokenTotal",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:tokenTotal","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","symbolName":"tokenTotal","symbolKind":"function","exported":false,"metadata":{"line":24,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:formatTimestamp",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:formatTimestamp","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","symbolName":"formatTimestamp","symbolKind":"function","exported":false,"metadata":{"line":35,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:d.getTime",{"id":"external:d.getTime","kind":"external","language":"jsts","metadata":{"unresolvedName":"d.getTime"}}],["external:d.toLocaleString",{"id":"external:d.toLocaleString","kind":"external","language":"jsts","metadata":{"unresolvedName":"d.toLocaleString"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:Stat",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:Stat","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","symbolName":"Stat","symbolKind":"function","exported":false,"metadata":{"line":42,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:StatCard",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:StatCard","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","symbolName":"StatCard","symbolKind":"function","exported":false,"metadata":{"line":53,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:joinList",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:joinList","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","symbolName":"joinList","symbolKind":"function","exported":false,"metadata":{"line":64,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:values.join",{"id":"external:values.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"values.join"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:modelLabel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:modelLabel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","symbolName":"modelLabel","symbolKind":"function","exported":false,"metadata":{"line":68,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:name.toLowerCase().includes",{"id":"external:name.toLowerCase().includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"name.toLowerCase().includes"}}],["external:id.toLowerCase",{"id":"external:id.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"id.toLowerCase"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:useOpenRouterMetadata",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:useOpenRouterMetadata","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","symbolName":"useOpenRouterMetadata","symbolKind":"function","exported":false,"metadata":{"line":74,"column":1,"cyclomaticComplexity":8,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:fetch(modelsCatalogUrl)\n .then",{"id":"external:fetch(modelsCatalogUrl)\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"fetch(modelsCatalogUrl)\n .then"}}],["symbol-name:selectOpenRouterModel",{"id":"symbol-name:selectOpenRouterModel","kind":"symbol","language":"jsts","symbolName":"selectOpenRouterModel","metadata":{"unresolvedName":"selectOpenRouterModel"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":295,"column":25,"cyclomaticComplexity":8,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","symbolName":"ContextDetailsDialog","symbolKind":"function","exported":true,"metadata":{"line":107,"column":1,"cyclomaticComplexity":54,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:tokenTotal",{"id":"symbol-name:tokenTotal","kind":"symbol","language":"jsts","symbolName":"tokenTotal","metadata":{"unresolvedName":"tokenTotal"}}],["symbol-name:useOpenRouterMetadata",{"id":"symbol-name:useOpenRouterMetadata","kind":"symbol","language":"jsts","symbolName":"useOpenRouterMetadata","metadata":{"unresolvedName":"useOpenRouterMetadata"}}],["symbol-name:getModelProviderLabel",{"id":"symbol-name:getModelProviderLabel","kind":"symbol","language":"jsts","symbolName":"getModelProviderLabel","metadata":{"unresolvedName":"getModelProviderLabel"}}],["symbol-name:modelLabel",{"id":"symbol-name:modelLabel","kind":"symbol","language":"jsts","symbolName":"modelLabel","metadata":{"unresolvedName":"modelLabel"}}],["external:supportedParameters.filter",{"id":"external:supportedParameters.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"supportedParameters.filter"}}],["external:['tools', 'reasoning', 'response_format', 'structured_outputs'].includes",{"id":"external:['tools', 'reasoning', 'response_format', 'structured_outputs'].includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"['tools', 'reasoning', 'response_format', 'structured_outputs'].includes"}}],["symbol-name:setExpandedId",{"id":"symbol-name:setExpandedId","kind":"symbol","language":"jsts","symbolName":"setExpandedId","metadata":{"unresolvedName":"setExpandedId"}}],["symbol-name:formatTokens",{"id":"symbol-name:formatTokens","kind":"symbol","language":"jsts","symbolName":"formatTokens","metadata":{"unresolvedName":"formatTokens"}}],["symbol-name:formatCost",{"id":"symbol-name:formatCost","kind":"symbol","language":"jsts","symbolName":"formatCost","metadata":{"unresolvedName":"formatCost"}}],["symbol-name:joinList",{"id":"symbol-name:joinList","kind":"symbol","language":"jsts","symbolName":"joinList","metadata":{"unresolvedName":"joinList"}}],["symbol-name:formatOpenRouterPricePerMillion",{"id":"symbol-name:formatOpenRouterPricePerMillion","kind":"symbol","language":"jsts","symbolName":"formatOpenRouterPricePerMillion","metadata":{"unresolvedName":"formatOpenRouterPricePerMillion"}}],["external:featuredParameters.join",{"id":"external:featuredParameters.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"featuredParameters.join"}}],["external:supportedParameters.join",{"id":"external:supportedParameters.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"supportedParameters.join"}}],["symbol-name:formatTimestamp",{"id":"symbol-name:formatTimestamp","kind":"symbol","language":"jsts","symbolName":"formatTimestamp","metadata":{"unresolvedName":"formatTimestamp"}}],["symbol-name:handleToggleMessage",{"id":"symbol-name:handleToggleMessage","kind":"symbol","language":"jsts","symbolName":"handleToggleMessage","metadata":{"unresolvedName":"handleToggleMessage"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","metadata":{"lineCount":1045,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions"}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","metadata":{"lineCount":138,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:matchesAnyDirectory",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:matchesAnyDirectory","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","symbolName":"matchesAnyDirectory","symbolKind":"function","exported":false,"metadata":{"line":71,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:candidates.some",{"id":"external:candidates.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"candidates.some"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:buildFolderStatus",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:buildFolderStatus","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","symbolName":"buildFolderStatus","symbolKind":"function","exported":false,"metadata":{"line":76,"column":1,"cyclomaticComplexity":12,"maxNestingDepth":5,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:busySessions.filter",{"id":"external:busySessions.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"busySessions.filter"}}],["symbol-name:matchesAnyDirectory",{"id":"symbol-name:matchesAnyDirectory","kind":"symbol","language":"jsts","symbolName":"matchesAnyDirectory","metadata":{"unresolvedName":"matchesAnyDirectory"}}],["external:notifications.some",{"id":"external:notifications.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"notifications.some"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:getInitialExpandedProjectIds",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:getInitialExpandedProjectIds","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","symbolName":"getInitialExpandedProjectIds","symbolKind":"function","exported":false,"metadata":{"line":147,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:projects.find",{"id":"external:projects.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"projects.find"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:areProjectIdListsEqual",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:areProjectIdListsEqual","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","symbolName":"areProjectIdListsEqual","symbolKind":"function","exported":false,"metadata":{"line":157,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:left.every",{"id":"external:left.every","kind":"external","language":"jsts","metadata":{"unresolvedName":"left.every"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:getCurrentProjectId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:getCurrentProjectId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","symbolName":"getCurrentProjectId","symbolKind":"function","exported":false,"metadata":{"line":161,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:reconcileExpandedProjectIds",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:reconcileExpandedProjectIds","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","symbolName":"reconcileExpandedProjectIds","symbolKind":"function","exported":false,"metadata":{"line":167,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:projects.some",{"id":"external:projects.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"projects.some"}}],["symbol-name:getInitialExpandedProjectIds",{"id":"symbol-name:getInitialExpandedProjectIds","kind":"symbol","language":"jsts","symbolName":"getInitialExpandedProjectIds","metadata":{"unresolvedName":"getInitialExpandedProjectIds"}}],["symbol-name:areProjectIdListsEqual",{"id":"symbol-name:areProjectIdListsEqual","kind":"symbol","language":"jsts","symbolName":"areProjectIdListsEqual","metadata":{"unresolvedName":"areProjectIdListsEqual"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:expandProjectId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:expandProjectId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","symbolName":"expandProjectId","symbolKind":"function","exported":false,"metadata":{"line":173,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:toggleProjectId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:toggleProjectId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","symbolName":"toggleProjectId","symbolKind":"function","exported":false,"metadata":{"line":178,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:createDirectoryProject",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:createDirectoryProject","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","symbolName":"createDirectoryProject","symbolKind":"function","exported":false,"metadata":{"line":182,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useCollapseExpandedIdsOnDrag",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useCollapseExpandedIdsOnDrag","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","symbolName":"useCollapseExpandedIdsOnDrag","symbolKind":"function","exported":false,"metadata":{"line":191,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setExpandedIds",{"id":"symbol-name:setExpandedIds","kind":"symbol","language":"jsts","symbolName":"setExpandedIds","metadata":{"unresolvedName":"setExpandedIds"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":1000,"column":25,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","symbolName":"useReorderableList","symbolKind":"function","exported":false,"metadata":{"line":224,"column":1,"cyclomaticComplexity":29,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:refs.current.get",{"id":"external:refs.current.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"refs.current.get"}}],["external:element.getBoundingClientRect",{"id":"external:element.getBoundingClientRect","kind":"external","language":"jsts","metadata":{"unresolvedName":"element.getBoundingClientRect"}}],["external:items.push",{"id":"external:items.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"items.push"}}],["external:withoutDragged.splice",{"id":"external:withoutDragged.splice","kind":"external","language":"jsts","metadata":{"unresolvedName":"withoutDragged.splice"}}],["external:originalOrder.indexOf",{"id":"external:originalOrder.indexOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"originalOrder.indexOf"}}],["external:finalOrder.indexOf",{"id":"external:finalOrder.indexOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"finalOrder.indexOf"}}],["symbol-name:onCommit",{"id":"symbol-name:onCommit","kind":"symbol","language":"jsts","symbolName":"onCommit","metadata":{"unresolvedName":"onCommit"}}],["symbol-name:setDragState",{"id":"symbol-name:setDragState","kind":"symbol","language":"jsts","symbolName":"setDragState","metadata":{"unresolvedName":"setDragState"}}],["symbol-name:onDragFinished",{"id":"symbol-name:onDragFinished","kind":"symbol","language":"jsts","symbolName":"onDragFinished","metadata":{"unresolvedName":"onDragFinished"}}],["symbol-name:canDrag",{"id":"symbol-name:canDrag","kind":"symbol","language":"jsts","symbolName":"canDrag","metadata":{"unresolvedName":"canDrag"}}],["symbol-name:onDragActivated",{"id":"symbol-name:onDragActivated","kind":"symbol","language":"jsts","symbolName":"onDragActivated","metadata":{"unresolvedName":"onDragActivated"}}],["symbol-name:calcNewOrder",{"id":"symbol-name:calcNewOrder","kind":"symbol","language":"jsts","symbolName":"calcNewOrder","metadata":{"unresolvedName":"calcNewOrder"}}],["symbol-name:finishDrag",{"id":"symbol-name:finishDrag","kind":"symbol","language":"jsts","symbolName":"finishDrag","metadata":{"unresolvedName":"finishDrag"}}],["external:refs.current.set",{"id":"external:refs.current.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"refs.current.set"}}],["external:refs.current.delete",{"id":"external:refs.current.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"refs.current.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onMove",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onMove","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","symbolName":"onMove","symbolKind":"function","exported":false,"metadata":{"line":292,"column":22,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onUp",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onUp","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","symbolName":"onUp","symbolKind":"function","exported":false,"metadata":{"line":309,"column":20,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:registerRef",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:registerRef","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","symbolName":"registerRef","symbolKind":"function","exported":false,"metadata":{"line":400,"column":18,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","symbolName":"FolderRecentList","symbolKind":"function","exported":true,"metadata":{"line":407,"column":1,"cyclomaticComplexity":19,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useBusySessions",{"id":"symbol-name:useBusySessions","kind":"symbol","language":"jsts","symbolName":"useBusySessions","metadata":{"unresolvedName":"useBusySessions"}}],["symbol-name:useNotifications",{"id":"symbol-name:useNotifications","kind":"symbol","language":"jsts","symbolName":"useNotifications","metadata":{"unresolvedName":"useNotifications"}}],["external:projects.map",{"id":"external:projects.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"projects.map"}}],["symbol-name:useCollapseExpandedIdsOnDrag",{"id":"symbol-name:useCollapseExpandedIdsOnDrag","kind":"symbol","language":"jsts","symbolName":"useCollapseExpandedIdsOnDrag","metadata":{"unresolvedName":"useCollapseExpandedIdsOnDrag"}}],["symbol-name:onExpandedProjectIdsChange",{"id":"symbol-name:onExpandedProjectIdsChange","kind":"symbol","language":"jsts","symbolName":"onExpandedProjectIdsChange","metadata":{"unresolvedName":"onExpandedProjectIdsChange"}}],["symbol-name:reconcileExpandedProjectIds",{"id":"symbol-name:reconcileExpandedProjectIds","kind":"symbol","language":"jsts","symbolName":"reconcileExpandedProjectIds","metadata":{"unresolvedName":"reconcileExpandedProjectIds"}}],["symbol-name:expandProjectId",{"id":"symbol-name:expandProjectId","kind":"symbol","language":"jsts","symbolName":"expandProjectId","metadata":{"unresolvedName":"expandProjectId"}}],["symbol-name:getCurrentProjectId",{"id":"symbol-name:getCurrentProjectId","kind":"symbol","language":"jsts","symbolName":"getCurrentProjectId","metadata":{"unresolvedName":"getCurrentProjectId"}}],["symbol-name:toggleProjectId",{"id":"symbol-name:toggleProjectId","kind":"symbol","language":"jsts","symbolName":"toggleProjectId","metadata":{"unresolvedName":"toggleProjectId"}}],["symbol-name:useReorderableList",{"id":"symbol-name:useReorderableList","kind":"symbol","language":"jsts","symbolName":"useReorderableList","metadata":{"unresolvedName":"useReorderableList"}}],["external:projectById.get",{"id":"external:projectById.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"projectById.get"}}],["symbol-name:onReorderProject",{"id":"symbol-name:onReorderProject","kind":"symbol","language":"jsts","symbolName":"onReorderProject","metadata":{"unresolvedName":"onReorderProject"}}],["symbol-name:onSelectProject",{"id":"symbol-name:onSelectProject","kind":"symbol","language":"jsts","symbolName":"onSelectProject","metadata":{"unresolvedName":"onSelectProject"}}],["symbol-name:createDirectoryProject",{"id":"symbol-name:createDirectoryProject","kind":"symbol","language":"jsts","symbolName":"createDirectoryProject","metadata":{"unresolvedName":"createDirectoryProject"}}],["external:expandedProjectIds.includes",{"id":"external:expandedProjectIds.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"expandedProjectIds.includes"}}],["external:workspaceDirectoriesByProjectId?.get",{"id":"external:workspaceDirectoriesByProjectId?.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"workspaceDirectoriesByProjectId?.get"}}],["symbol-name:buildFolderStatus",{"id":"symbol-name:buildFolderStatus","kind":"symbol","language":"jsts","symbolName":"buildFolderStatus","metadata":{"unresolvedName":"buildFolderStatus"}}],["external:workspaceDirectoriesByProjectId?.forEach",{"id":"external:workspaceDirectoriesByProjectId?.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"workspaceDirectoriesByProjectId?.forEach"}}],["external:directories.forEach",{"id":"external:directories.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"directories.forEach"}}],["external:workspaceDirectories.add",{"id":"external:workspaceDirectories.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"workspaceDirectories.add"}}],["external:displayOrder.map",{"id":"external:displayOrder.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"displayOrder.map"}}],["external:folderStatusByProjectId.get",{"id":"external:folderStatusByProjectId.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"folderStatusByProjectId.get"}}],["symbol-name:handleToggleProject",{"id":"symbol-name:handleToggleProject","kind":"symbol","language":"jsts","symbolName":"handleToggleProject","metadata":{"unresolvedName":"handleToggleProject"}}],["symbol-name:handlePointerStart",{"id":"symbol-name:handlePointerStart","kind":"symbol","language":"jsts","symbolName":"handlePointerStart","metadata":{"unresolvedName":"handlePointerStart"}}],["symbol-name:handleTouchStart",{"id":"symbol-name:handleTouchStart","kind":"symbol","language":"jsts","symbolName":"handleTouchStart","metadata":{"unresolvedName":"handleTouchStart"}}],["symbol-name:registerRef",{"id":"symbol-name:registerRef","kind":"symbol","language":"jsts","symbolName":"registerRef","metadata":{"unresolvedName":"registerRef"}}],["external:selectedProjectIds?.has",{"id":"external:selectedProjectIds?.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"selectedProjectIds?.has"}}],["symbol-name:onToggleProjectSelection",{"id":"symbol-name:onToggleProjectSelection","kind":"symbol","language":"jsts","symbolName":"onToggleProjectSelection","metadata":{"unresolvedName":"onToggleProjectSelection"}}],["symbol-name:setPendingDelete",{"id":"symbol-name:setPendingDelete","kind":"symbol","language":"jsts","symbolName":"setPendingDelete","metadata":{"unresolvedName":"setPendingDelete"}}],["symbol-name:onDeleteSession",{"id":"symbol-name:onDeleteSession","kind":"symbol","language":"jsts","symbolName":"onDeleteSession","metadata":{"unresolvedName":"onDeleteSession"}}],["external:pendingDelete.removeLocal",{"id":"external:pendingDelete.removeLocal","kind":"external","language":"jsts","metadata":{"unresolvedName":"pendingDelete.removeLocal"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onCommit",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onCommit","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","symbolName":"onCommit","symbolKind":"function","exported":false,"metadata":{"line":988,"column":15,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","symbolName":"FolderRecentSection","symbolKind":"function","exported":false,"metadata":{"line":631,"column":1,"cyclomaticComplexity":40,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setHasActivated",{"id":"symbol-name:setHasActivated","kind":"symbol","language":"jsts","symbolName":"setHasActivated","metadata":{"unresolvedName":"setHasActivated"}}],["symbol-name:useSessions",{"id":"symbol-name:useSessions","kind":"symbol","language":"jsts","symbolName":"useSessions","metadata":{"unresolvedName":"useSessions"}}],["external:sessions.find",{"id":"external:sessions.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessions.find"}}],["symbol-name:onRenameSession",{"id":"symbol-name:onRenameSession","kind":"symbol","language":"jsts","symbolName":"onRenameSession","metadata":{"unresolvedName":"onRenameSession"}}],["symbol-name:patchLocalSession",{"id":"symbol-name:patchLocalSession","kind":"symbol","language":"jsts","symbolName":"patchLocalSession","metadata":{"unresolvedName":"patchLocalSession"}}],["symbol-name:onRequestDeleteSession",{"id":"symbol-name:onRequestDeleteSession","kind":"symbol","language":"jsts","symbolName":"onRequestDeleteSession","metadata":{"unresolvedName":"onRequestDeleteSession"}}],["symbol-name:removeLocalSession",{"id":"symbol-name:removeLocalSession","kind":"symbol","language":"jsts","symbolName":"removeLocalSession","metadata":{"unresolvedName":"removeLocalSession"}}],["symbol-name:onToggleProjectCheck",{"id":"symbol-name:onToggleProjectCheck","kind":"symbol","language":"jsts","symbolName":"onToggleProjectCheck","metadata":{"unresolvedName":"onToggleProjectCheck"}}],["symbol-name:onToggle",{"id":"symbol-name:onToggle","kind":"symbol","language":"jsts","symbolName":"onToggle","metadata":{"unresolvedName":"onToggle"}}],["symbol-name:onSelectSession",{"id":"symbol-name:onSelectSession","kind":"symbol","language":"jsts","symbolName":"onSelectSession","metadata":{"unresolvedName":"onSelectSession"}}],["external:selectedSessionIds?.has",{"id":"external:selectedSessionIds?.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"selectedSessionIds?.has"}}],["symbol-name:onToggleSessionSelection",{"id":"symbol-name:onToggleSessionSelection","kind":"symbol","language":"jsts","symbolName":"onToggleSessionSelection","metadata":{"unresolvedName":"onToggleSessionSelection"}}],["external:expandedChildSessionIds?.has",{"id":"external:expandedChildSessionIds?.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"expandedChildSessionIds?.has"}}],["external:inlineChildSessions?.has",{"id":"external:inlineChildSessions?.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"inlineChildSessions?.has"}}],["external:inlineChildSessions?.get",{"id":"external:inlineChildSessions?.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"inlineChildSessions?.get"}}],["symbol-name:loadMore",{"id":"symbol-name:loadMore","kind":"symbol","language":"jsts","symbolName":"loadMore","metadata":{"unresolvedName":"loadMore"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:handleProjectCheckClick",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:handleProjectCheckClick","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","symbolName":"handleProjectCheckClick","symbolKind":"function","exported":false,"metadata":{"line":708,"column":35,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","symbolName":"WorkspaceFolderList","symbolKind":"function","exported":false,"metadata":{"line":923,"column":1,"cyclomaticComplexity":12,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:(draggableWorkspaceDirectories ?? []).map",{"id":"external:(draggableWorkspaceDirectories ?? []).map","kind":"external","language":"jsts","metadata":{"unresolvedName":"(draggableWorkspaceDirectories ?? []).map"}}],["external:workspaceDirectories.map",{"id":"external:workspaceDirectories.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"workspaceDirectories.map"}}],["external:draggableSet.has",{"id":"external:draggableSet.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"draggableSet.has"}}],["external:workspaceProjects.map",{"id":"external:workspaceProjects.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"workspaceProjects.map"}}],["symbol-name:setWorkspaceExpandedIds",{"id":"symbol-name:setWorkspaceExpandedIds","kind":"symbol","language":"jsts","symbolName":"setWorkspaceExpandedIds","metadata":{"unresolvedName":"setWorkspaceExpandedIds"}}],["external:workspaceById.get",{"id":"external:workspaceById.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"workspaceById.get"}}],["symbol-name:onReorderWorkspace",{"id":"symbol-name:onReorderWorkspace","kind":"symbol","language":"jsts","symbolName":"onReorderWorkspace","metadata":{"unresolvedName":"onReorderWorkspace"}}],["external:expandedWorkspaceIds.includes",{"id":"external:expandedWorkspaceIds.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"expandedWorkspaceIds.includes"}}],["external:folderStatusByWorkspaceDirectory?.get",{"id":"external:folderStatusByWorkspaceDirectory?.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"folderStatusByWorkspaceDirectory?.get"}}],["symbol-name:onSelectDirectory",{"id":"symbol-name:onSelectDirectory","kind":"symbol","language":"jsts","symbolName":"onSelectDirectory","metadata":{"unresolvedName":"onSelectDirectory"}}],["symbol-name:handleToggleWorkspace",{"id":"symbol-name:handleToggleWorkspace","kind":"symbol","language":"jsts","symbolName":"handleToggleWorkspace","metadata":{"unresolvedName":"handleToggleWorkspace"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx","metadata":{"lineCount":74,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","metadata":{"lineCount":202,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":59,"column":76,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:markReadMock.mockReset",{"id":"external:markReadMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"markReadMock.mockReset"}}],["external:dismissMock.mockReset",{"id":"external:dismissMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"dismissMock.mockReset"}}],["external:expect(markReadMock).toHaveBeenCalledWith",{"id":"external:expect(markReadMock).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(markReadMock).toHaveBeenCalledWith"}}],["external:expect(dismissMock).toHaveBeenCalledWith",{"id":"external:expect(dismissMock).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(dismissMock).toHaveBeenCalledWith"}}],["external:expect(onSelect).toHaveBeenCalledTimes",{"id":"external:expect(onSelect).toHaveBeenCalledTimes","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(onSelect).toHaveBeenCalledTimes"}}],["external:expect(row).not.toBeNull",{"id":"external:expect(row).not.toBeNull","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(row).not.toBeNull"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts","metadata":{"lineCount":21,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","symbolName":"NotificationItem","symbolKind":"function","exported":true,"metadata":{"line":31,"column":1,"cyclomaticComplexity":29,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setShowActions",{"id":"symbol-name:setShowActions","kind":"symbol","language":"jsts","symbolName":"setShowActions","metadata":{"unresolvedName":"setShowActions"}}],["external:itemRef.current.contains",{"id":"external:itemRef.current.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"itemRef.current.contains"}}],["external:notificationStore.dismiss",{"id":"external:notificationStore.dismiss","kind":"external","language":"jsts","metadata":{"unresolvedName":"notificationStore.dismiss"}}],["symbol-name:setHasFocusWithin",{"id":"symbol-name:setHasFocusWithin","kind":"symbol","language":"jsts","symbolName":"setHasFocusWithin","metadata":{"unresolvedName":"setHasFocusWithin"}}],["external:itemRef.current?.contains",{"id":"external:itemRef.current?.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"itemRef.current?.contains"}}],["symbol-name:formatNotificationTime",{"id":"symbol-name:formatNotificationTime","kind":"symbol","language":"jsts","symbolName":"formatNotificationTime","metadata":{"unresolvedName":"formatNotificationTime"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":134,"column":18,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:handleClickOutside",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:handleClickOutside","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","symbolName":"handleClickOutside","symbolKind":"function","exported":false,"metadata":{"line":74,"column":32,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:handleClick",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:handleClick","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","symbolName":"handleClick","symbolKind":"function","exported":false,"metadata":{"line":95,"column":23,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:handleDismiss",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:handleDismiss","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","symbolName":"handleDismiss","symbolKind":"function","exported":false,"metadata":{"line":109,"column":25,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts","metadata":{"lineCount":26,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts","metadata":{"lineCount":24,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":19,"column":55,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getProjectGroupIdentity",{"id":"symbol-name:getProjectGroupIdentity","kind":"symbol","language":"jsts","symbolName":"getProjectGroupIdentity","metadata":{"unresolvedName":"getProjectGroupIdentity"}}],["external:expect(getProjectGroupIdentity('/workspace/project-worktree', gitMeta)).toEqual",{"id":"external:expect(getProjectGroupIdentity('/workspace/project-worktree', gitMeta)).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getProjectGroupIdentity('/workspace/project-worktree', gitMeta)).toEqual"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts:isWorkspaceRootDirectory",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts:isWorkspaceRootDirectory","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts","symbolName":"isWorkspaceRootDirectory","symbolKind":"function","exported":true,"metadata":{"line":4,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:meta.workspaces.some",{"id":"external:meta.workspaces.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"meta.workspaces.some"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts:getProjectGroupIdentity",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts:getProjectGroupIdentity","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts","symbolName":"getProjectGroupIdentity","symbolKind":"function","exported":true,"metadata":{"line":9,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:isWorkspaceRootDirectory",{"id":"symbol-name:isWorkspaceRootDirectory","kind":"symbol","language":"jsts","symbolName":"isWorkspaceRootDirectory","metadata":{"unresolvedName":"isWorkspaceRootDirectory"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","symbolName":"SessionChildrenSlot","symbolKind":"function","exported":true,"metadata":{"line":28,"column":1,"cyclomaticComplexity":15,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:getSessionChildren(parentSession.id, parentSession.directory)\r\n .then",{"id":"external:getSessionChildren(parentSession.id, parentSession.directory)\r\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSessionChildren(parentSession.id, parentSession.directory)\r\n .then"}}],["symbol-name:getSessionChildren",{"id":"symbol-name:getSessionChildren","kind":"symbol","language":"jsts","symbolName":"getSessionChildren","metadata":{"unresolvedName":"getSessionChildren"}}],["symbol-name:setFetched",{"id":"symbol-name:setFetched","kind":"symbol","language":"jsts","symbolName":"setFetched","metadata":{"unresolvedName":"setFetched"}}],["symbol-name:onDeleteSelected",{"id":"symbol-name:onDeleteSelected","kind":"symbol","language":"jsts","symbolName":"onDeleteSelected","metadata":{"unresolvedName":"onDeleteSelected"}}],["external:list!.map",{"id":"external:list!.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"list!.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":82,"column":45,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","metadata":{"lineCount":417,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:StatusIndicator",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:StatusIndicator","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","symbolName":"StatusIndicator","symbolKind":"function","exported":false,"metadata":{"line":20,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","symbolName":"SidebarFooter","symbolKind":"function","exported":true,"metadata":{"line":77,"column":1,"cyclomaticComplexity":54,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:buttonRef.current.getBoundingClientRect",{"id":"external:buttonRef.current.getBoundingClientRect","kind":"external","language":"jsts","metadata":{"unresolvedName":"buttonRef.current.getBoundingClientRect"}}],["external:containerRef.current.getBoundingClientRect",{"id":"external:containerRef.current.getBoundingClientRect","kind":"external","language":"jsts","metadata":{"unresolvedName":"containerRef.current.getBoundingClientRect"}}],["symbol-name:setMenuPos",{"id":"symbol-name:setMenuPos","kind":"symbol","language":"jsts","symbolName":"setMenuPos","metadata":{"unresolvedName":"setMenuPos"}}],["external:buttonRef.current?.contains",{"id":"external:buttonRef.current?.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"buttonRef.current?.contains"}}],["symbol-name:setContextDialogOpen",{"id":"symbol-name:setContextDialogOpen","kind":"symbol","language":"jsts","symbolName":"setContextDialogOpen","metadata":{"unresolvedName":"setContextDialogOpen"}}],["external:(['system', 'light', 'dark'] as const).map",{"id":"external:(['system', 'light', 'dark'] as const).map","kind":"external","language":"jsts","metadata":{"unresolvedName":"(['system', 'light', 'dark'] as const).map"}}],["symbol-name:onThemeChange",{"id":"symbol-name:onThemeChange","kind":"symbol","language":"jsts","symbolName":"onThemeChange","metadata":{"unresolvedName":"onThemeChange"}}],["symbol-name:toggleWideMode",{"id":"symbol-name:toggleWideMode","kind":"symbol","language":"jsts","symbolName":"toggleWideMode","metadata":{"unresolvedName":"toggleWideMode"}}],["symbol-name:onOpenSettings",{"id":"symbol-name:onOpenSettings","kind":"symbol","language":"jsts","symbolName":"onOpenSettings","metadata":{"unresolvedName":"onOpenSettings"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":344,"column":24,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:handleClickOutside",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:handleClickOutside","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","symbolName":"handleClickOutside","symbolKind":"function","exported":false,"metadata":{"line":169,"column":32,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:handleEsc",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:handleEsc","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","symbolName":"handleEsc","symbolKind":"function","exported":false,"metadata":{"line":183,"column":23,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts:getParentPath",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts:getParentPath","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts","symbolName":"getParentPath","symbolKind":"function","exported":true,"metadata":{"line":2,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:fullPath.includes",{"id":"external:fullPath.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"fullPath.includes"}}],["external:fullPath.split",{"id":"external:fullPath.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"fullPath.split"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts:formatNotificationTime",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts:formatNotificationTime","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts","symbolName":"formatNotificationTime","symbolKind":"function","exported":true,"metadata":{"line":15,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","metadata":{"lineCount":1302,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:getSelectionRange",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:getSelectionRange","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","symbolName":"getSelectionRange","symbolKind":"function","exported":false,"metadata":{"line":79,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:visibleIds.indexOf",{"id":"external:visibleIds.indexOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"visibleIds.indexOf"}}],["external:visibleIds.slice",{"id":"external:visibleIds.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"visibleIds.slice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:findProjectGroupForDirectory",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:findProjectGroupForDirectory","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","symbolName":"findProjectGroupForDirectory","symbolKind":"function","exported":false,"metadata":{"line":90,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:project.workspaceDirectories?.some",{"id":"external:project.workspaceDirectories?.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"project.workspaceDirectories?.some"}}],["external:project.memberDirectories?.some",{"id":"external:project.memberDirectories?.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"project.memberDirectories?.some"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":1256,"column":20,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","symbolName":"SidePanel","symbolKind":"function","exported":true,"metadata":{"line":108,"column":1,"cyclomaticComplexity":196,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:savedDirectories\n .map",{"id":"external:savedDirectories\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"savedDirectories\n .map"}}],["symbol-name:useGitWorkspaceCatalog",{"id":"symbol-name:useGitWorkspaceCatalog","kind":"symbol","language":"jsts","symbolName":"useGitWorkspaceCatalog","metadata":{"unresolvedName":"useGitWorkspaceCatalog"}}],["external:element.getClientRects",{"id":"external:element.getClientRects","kind":"external","language":"jsts","metadata":{"unresolvedName":"element.getClientRects"}}],["symbol-name:getVisibleSelectionIds",{"id":"symbol-name:getVisibleSelectionIds","kind":"symbol","language":"jsts","symbolName":"getVisibleSelectionIds","metadata":{"unresolvedName":"getVisibleSelectionIds"}}],["symbol-name:setSelectedSessionIds",{"id":"symbol-name:setSelectedSessionIds","kind":"symbol","language":"jsts","symbolName":"setSelectedSessionIds","metadata":{"unresolvedName":"setSelectedSessionIds"}}],["symbol-name:getSelectionRange",{"id":"symbol-name:getSelectionRange","kind":"symbol","language":"jsts","symbolName":"getSelectionRange","metadata":{"unresolvedName":"getSelectionRange"}}],["symbol-name:setSelectedProjectIds",{"id":"symbol-name:setSelectedProjectIds","kind":"symbol","language":"jsts","symbolName":"setSelectedProjectIds","metadata":{"unresolvedName":"setSelectedProjectIds"}}],["symbol-name:setIsEditMode",{"id":"symbol-name:setIsEditMode","kind":"symbol","language":"jsts","symbolName":"setIsEditMode","metadata":{"unresolvedName":"setIsEditMode"}}],["symbol-name:useKeybindingLabel",{"id":"symbol-name:useKeybindingLabel","kind":"symbol","language":"jsts","symbolName":"useKeybindingLabel","metadata":{"unresolvedName":"useKeybindingLabel"}}],["external:projectsDropdownRef.current?.contains",{"id":"external:projectsDropdownRef.current?.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"projectsDropdownRef.current?.contains"}}],["external:projectToggleRef.current?.focus",{"id":"external:projectToggleRef.current?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"projectToggleRef.current?.focus"}}],["symbol-name:useSessionContextUsage",{"id":"symbol-name:useSessionContextUsage","kind":"symbol","language":"jsts","symbolName":"useSessionContextUsage","metadata":{"unresolvedName":"useSessionContextUsage"}}],["symbol-name:useSessionStats",{"id":"symbol-name:useSessionStats","kind":"symbol","language":"jsts","symbolName":"useSessionStats","metadata":{"unresolvedName":"useSessionStats"}}],["symbol-name:useBusyCount",{"id":"symbol-name:useBusyCount","kind":"symbol","language":"jsts","symbolName":"useBusyCount","metadata":{"unresolvedName":"useBusyCount"}}],["external:childSessionStore.subscribe.bind",{"id":"external:childSessionStore.subscribe.bind","kind":"external","language":"jsts","metadata":{"unresolvedName":"childSessionStore.subscribe.bind"}}],["symbol-name:useUnreadNotificationCount",{"id":"symbol-name:useUnreadNotificationCount","kind":"symbol","language":"jsts","symbolName":"useUnreadNotificationCount","metadata":{"unresolvedName":"useUnreadNotificationCount"}}],["symbol-name:subscribeToConnectionState",{"id":"symbol-name:subscribeToConnectionState","kind":"symbol","language":"jsts","symbolName":"subscribeToConnectionState","metadata":{"unresolvedName":"subscribeToConnectionState"}}],["external:map.has",{"id":"external:map.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"map.has"}}],["external:notifications.map",{"id":"external:notifications.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"notifications.map"}}],["external:sessionLookup.has",{"id":"external:sessionLookup.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionLookup.has"}}],["external:allNeeded.push",{"id":"external:allNeeded.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"allNeeded.push"}}],["external:allNeeded.filter",{"id":"external:allNeeded.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"allNeeded.filter"}}],["external:missing.map",{"id":"external:missing.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"missing.map"}}],["symbol-name:getSession",{"id":"symbol-name:getSession","kind":"symbol","language":"jsts","symbolName":"getSession","metadata":{"unresolvedName":"getSession"}}],["external:Object.keys",{"id":"external:Object.keys","kind":"external","language":"jsts","metadata":{"unresolvedName":"Object.keys"}}],["symbol-name:setFetchedSessions",{"id":"symbol-name:setFetchedSessions","kind":"symbol","language":"jsts","symbolName":"setFetchedSessions","metadata":{"unresolvedName":"setFetchedSessions"}}],["symbol-name:fetchMissing",{"id":"symbol-name:fetchMissing","kind":"symbol","language":"jsts","symbolName":"fetchMissing","metadata":{"unresolvedName":"fetchMissing"}}],["external:sessionLookup.get",{"id":"external:sessionLookup.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionLookup.get"}}],["external:rootSessionIds.has",{"id":"external:rootSessionIds.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"rootSessionIds.has"}}],["external:map.get",{"id":"external:map.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"map.get"}}],["external:arr.some",{"id":"external:arr.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"arr.some"}}],["external:arr.push",{"id":"external:arr.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"arr.push"}}],["symbol-name:add",{"id":"symbol-name:add","kind":"symbol","language":"jsts","symbolName":"add","metadata":{"unresolvedName":"add"}}],["external:directories.map",{"id":"external:directories.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"directories.map"}}],["external:gitWorkspaceCatalog.get",{"id":"external:gitWorkspaceCatalog.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"gitWorkspaceCatalog.get"}}],["external:groups.get",{"id":"external:groups.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"groups.get"}}],["external:groups.set",{"id":"external:groups.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"groups.set"}}],["external:savedNameByPath.get",{"id":"external:savedNameByPath.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"savedNameByPath.get"}}],["external:Array.from(groups.values()).map",{"id":"external:Array.from(groups.values()).map","kind":"external","language":"jsts","metadata":{"unresolvedName":"Array.from(groups.values()).map"}}],["external:groups.values",{"id":"external:groups.values","kind":"external","language":"jsts","metadata":{"unresolvedName":"groups.values"}}],["external:(project.memberDirectories ?? [])\n .map",{"id":"external:(project.memberDirectories ?? [])\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"(project.memberDirectories ?? [])\n .map"}}],["external:project.workspaceDirectories.filter",{"id":"external:project.workspaceDirectories.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"project.workspaceDirectories.filter"}}],["external:savedWorkspaceDirectories.some",{"id":"external:savedWorkspaceDirectories.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"savedWorkspaceDirectories.some"}}],["symbol-name:buildProjectGroups",{"id":"symbol-name:buildProjectGroups","kind":"symbol","language":"jsts","symbolName":"buildProjectGroups","metadata":{"unresolvedName":"buildProjectGroups"}}],["external:[...savedDirectories].sort",{"id":"external:[...savedDirectories].sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"[...savedDirectories].sort"}}],["symbol-name:findProjectGroupForDirectory",{"id":"symbol-name:findProjectGroupForDirectory","kind":"symbol","language":"jsts","symbolName":"findProjectGroupForDirectory","metadata":{"unresolvedName":"findProjectGroupForDirectory"}}],["external:list.some",{"id":"external:list.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"list.some"}}],["external:list.push",{"id":"external:list.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"list.push"}}],["external:gitWorkspaceCatalog.has",{"id":"external:gitWorkspaceCatalog.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"gitWorkspaceCatalog.has"}}],["external:(currentProject.memberDirectories ?? []).map",{"id":"external:(currentProject.memberDirectories ?? []).map","kind":"external","language":"jsts","metadata":{"unresolvedName":"(currentProject.memberDirectories ?? []).map"}}],["external:currentProjectWorkspaceDirectories.map",{"id":"external:currentProjectWorkspaceDirectories.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"currentProjectWorkspaceDirectories.map"}}],["external:draggableWorkspaceSet.has",{"id":"external:draggableWorkspaceSet.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"draggableWorkspaceSet.has"}}],["external:allDisplayedProjects.find",{"id":"external:allDisplayedProjects.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"allDisplayedProjects.find"}}],["symbol-name:setProjectsExpanded",{"id":"symbol-name:setProjectsExpanded","kind":"symbol","language":"jsts","symbolName":"setProjectsExpanded","metadata":{"unresolvedName":"setProjectsExpanded"}}],["external:getProjectDirectoriesToRemove(projectId).forEach",{"id":"external:getProjectDirectoriesToRemove(projectId).forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"getProjectDirectoriesToRemove(projectId).forEach"}}],["symbol-name:getProjectDirectoriesToRemove",{"id":"symbol-name:getProjectDirectoriesToRemove","kind":"symbol","language":"jsts","symbolName":"getProjectDirectoriesToRemove","metadata":{"unresolvedName":"getProjectDirectoriesToRemove"}}],["symbol-name:removeDirectory",{"id":"symbol-name:removeDirectory","kind":"symbol","language":"jsts","symbolName":"removeDirectory","metadata":{"unresolvedName":"removeDirectory"}}],["external:folderProjects.find",{"id":"external:folderProjects.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"folderProjects.find"}}],["symbol-name:reorderDirectories",{"id":"symbol-name:reorderDirectories","kind":"symbol","language":"jsts","symbolName":"reorderDirectories","metadata":{"unresolvedName":"reorderDirectories"}}],["symbol-name:onCloseMobile",{"id":"symbol-name:onCloseMobile","kind":"symbol","language":"jsts","symbolName":"onCloseMobile","metadata":{"unresolvedName":"onCloseMobile"}}],["external:activeSessionTree.childrenByParent.get",{"id":"external:activeSessionTree.childrenByParent.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeSessionTree.childrenByParent.get"}}],["external:childEntries.map",{"id":"external:childEntries.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"childEntries.map"}}],["symbol-name:renderActiveSessionNode",{"id":"symbol-name:renderActiveSessionNode","kind":"symbol","language":"jsts","symbolName":"renderActiveSessionNode","metadata":{"unresolvedName":"renderActiveSessionNode"}}],["symbol-name:deleteSession",{"id":"symbol-name:deleteSession","kind":"symbol","language":"jsts","symbolName":"deleteSession","metadata":{"unresolvedName":"deleteSession"}}],["symbol-name:onNewSession",{"id":"symbol-name:onNewSession","kind":"symbol","language":"jsts","symbolName":"onNewSession","metadata":{"unresolvedName":"onNewSession"}}],["symbol-name:setIsBatchDeleting",{"id":"symbol-name:setIsBatchDeleting","kind":"symbol","language":"jsts","symbolName":"setIsBatchDeleting","metadata":{"unresolvedName":"setIsBatchDeleting"}}],["external:selectedSessionIds.has",{"id":"external:selectedSessionIds.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"selectedSessionIds.has"}}],["external:ids.map",{"id":"external:ids.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"ids.map"}}],["symbol-name:setBatchDeleteSessionConfirm",{"id":"symbol-name:setBatchDeleteSessionConfirm","kind":"symbol","language":"jsts","symbolName":"setBatchDeleteSessionConfirm","metadata":{"unresolvedName":"setBatchDeleteSessionConfirm"}}],["symbol-name:setBatchRemoveProjectConfirm",{"id":"symbol-name:setBatchRemoveProjectConfirm","kind":"symbol","language":"jsts","symbolName":"setBatchRemoveProjectConfirm","metadata":{"unresolvedName":"setBatchRemoveProjectConfirm"}}],["symbol-name:handleSelectProject",{"id":"symbol-name:handleSelectProject","kind":"symbol","language":"jsts","symbolName":"handleSelectProject","metadata":{"unresolvedName":"handleSelectProject"}}],["symbol-name:getParentPath",{"id":"symbol-name:getParentPath","kind":"symbol","language":"jsts","symbolName":"getParentPath","metadata":{"unresolvedName":"getParentPath"}}],["symbol-name:setProjectDeleteConfirm",{"id":"symbol-name:setProjectDeleteConfirm","kind":"symbol","language":"jsts","symbolName":"setProjectDeleteConfirm","metadata":{"unresolvedName":"setProjectDeleteConfirm"}}],["symbol-name:setSearch",{"id":"symbol-name:setSearch","kind":"symbol","language":"jsts","symbolName":"setSearch","metadata":{"unresolvedName":"setSearch"}}],["symbol-name:setSidebarTab",{"id":"symbol-name:setSidebarTab","kind":"symbol","language":"jsts","symbolName":"setSidebarTab","metadata":{"unresolvedName":"setSidebarTab"}}],["symbol-name:exitEditMode",{"id":"symbol-name:exitEditMode","kind":"symbol","language":"jsts","symbolName":"exitEditMode","metadata":{"unresolvedName":"exitEditMode"}}],["external:activeSessionTree.rootEntries.map",{"id":"external:activeSessionTree.rootEntries.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeSessionTree.rootEntries.map"}}],["external:notificationStore.markAllRead",{"id":"external:notificationStore.markAllRead","kind":"external","language":"jsts","metadata":{"unresolvedName":"notificationStore.markAllRead"}}],["external:notificationStore.clearAll",{"id":"external:notificationStore.clearAll","kind":"external","language":"jsts","metadata":{"unresolvedName":"notificationStore.clearAll"}}],["symbol-name:handleRemoveProject",{"id":"symbol-name:handleRemoveProject","kind":"symbol","language":"jsts","symbolName":"handleRemoveProject","metadata":{"unresolvedName":"handleRemoveProject"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:fetchMissing",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:fetchMissing","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","symbolName":"fetchMissing","symbolKind":"function","exported":false,"metadata":{"line":314,"column":26,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:add",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:add","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","symbolName":"add","symbolKind":"function","exported":false,"metadata":{"line":361,"column":17,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","metadata":{"lineCount":352,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:clampSidebarWidth",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:clampSidebarWidth","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","symbolName":"clampSidebarWidth","symbolKind":"function","exported":false,"metadata":{"line":8,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":234,"column":45,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:onOpen",{"id":"symbol-name:onOpen","kind":"symbol","language":"jsts","symbolName":"onOpen","metadata":{"unresolvedName":"onOpen"}}],["symbol-name:setProjectDialogKey",{"id":"symbol-name:setProjectDialogKey","kind":"symbol","language":"jsts","symbolName":"setProjectDialogKey","metadata":{"unresolvedName":"setProjectDialogKey"}}],["symbol-name:setIsProjectDialogOpen",{"id":"symbol-name:setIsProjectDialogOpen","kind":"symbol","language":"jsts","symbolName":"setIsProjectDialogOpen","metadata":{"unresolvedName":"setIsProjectDialogOpen"}}],["symbol-name:onProjectDialogClose",{"id":"symbol-name:onProjectDialogClose","kind":"symbol","language":"jsts","symbolName":"onProjectDialogClose","metadata":{"unresolvedName":"onProjectDialogClose"}}],["symbol-name:clampSidebarWidth",{"id":"symbol-name:clampSidebarWidth","kind":"symbol","language":"jsts","symbolName":"clampSidebarWidth","metadata":{"unresolvedName":"clampSidebarWidth"}}],["external:actions.setSidebarRequestedWidth",{"id":"external:actions.setSidebarRequestedWidth","kind":"external","language":"jsts","metadata":{"unresolvedName":"actions.setSidebarRequestedWidth"}}],["symbol-name:persistSidebarWidth",{"id":"symbol-name:persistSidebarWidth","kind":"symbol","language":"jsts","symbolName":"persistSidebarWidth","metadata":{"unresolvedName":"persistSidebarWidth"}}],["external:moveEvent.preventDefault",{"id":"external:moveEvent.preventDefault","kind":"external","language":"jsts","metadata":{"unresolvedName":"moveEvent.preventDefault"}}],["symbol-name:setIsSwipingActive",{"id":"symbol-name:setIsSwipingActive","kind":"symbol","language":"jsts","symbolName":"setIsSwipingActive","metadata":{"unresolvedName":"setIsSwipingActive"}}],["symbol-name:setSwipeX",{"id":"symbol-name:setSwipeX","kind":"symbol","language":"jsts","symbolName":"setSwipeX","metadata":{"unresolvedName":"setSwipeX"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleMouseMove",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleMouseMove","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","symbolName":"handleMouseMove","symbolKind":"function","exported":false,"metadata":{"line":95,"column":31,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleMouseUp",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleMouseUp","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","symbolName":"handleMouseUp","symbolKind":"function","exported":false,"metadata":{"line":108,"column":29,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleTouchMove",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleTouchMove","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","symbolName":"handleTouchMove","symbolKind":"function","exported":false,"metadata":{"line":134,"column":31,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleTouchEnd",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleTouchEnd","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","symbolName":"handleTouchEnd","symbolKind":"function","exported":false,"metadata":{"line":149,"column":30,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:containsLeaf",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:containsLeaf","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","symbolName":"containsLeaf","symbolKind":"function","exported":false,"metadata":{"line":28,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:containsLeaf",{"id":"symbol-name:containsLeaf","kind":"symbol","language":"jsts","symbolName":"containsLeaf","metadata":{"unresolvedName":"containsLeaf"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitContainer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitContainer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","symbolName":"SplitContainer","symbolKind":"function","exported":true,"metadata":{"line":48,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:renderLeaf",{"id":"symbol-name:renderLeaf","kind":"symbol","language":"jsts","symbolName":"renderLeaf","metadata":{"unresolvedName":"renderLeaf"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:buildGridTemplate",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:buildGridTemplate","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","symbolName":"buildGridTemplate","symbolKind":"function","exported":false,"metadata":{"line":67,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:(r * 100).toFixed",{"id":"external:(r * 100).toFixed","kind":"external","language":"jsts","metadata":{"unresolvedName":"(r * 100).toFixed"}}],["external:((1 - r) * 100).toFixed",{"id":"external:((1 - r) * 100).toFixed","kind":"external","language":"jsts","metadata":{"unresolvedName":"((1 - r) * 100).toFixed"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitNode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitNode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","symbolName":"SplitNode","symbolKind":"function","exported":false,"metadata":{"line":72,"column":1,"cyclomaticComplexity":17,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:buildGridTemplate",{"id":"symbol-name:buildGridTemplate","kind":"symbol","language":"jsts","symbolName":"buildGridTemplate","metadata":{"unresolvedName":"buildGridTemplate"}}],["symbol-name:applyRatio",{"id":"symbol-name:applyRatio","kind":"symbol","language":"jsts","symbolName":"applyRatio","metadata":{"unresolvedName":"applyRatio"}}],["external:paneLayoutStore.setRatio",{"id":"external:paneLayoutStore.setRatio","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneLayoutStore.setRatio"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":105,"column":41,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:applyRatio",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:applyRatio","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","symbolName":"applyRatio","symbolKind":"function","exported":false,"metadata":{"line":90,"column":26,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:onMove",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:onMove","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","symbolName":"onMove","symbolKind":"function","exported":false,"metadata":{"line":99,"column":22,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:onUp",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:onUp","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","symbolName":"onUp","symbolKind":"function","exported":false,"metadata":{"line":114,"column":20,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts","metadata":{"lineCount":56,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/types.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/types.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/types.ts","metadata":{"lineCount":47,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","metadata":{"lineCount":216,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:createMentionElement",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:createMentionElement","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts","symbolName":"createMentionElement","symbolKind":"function","exported":true,"metadata":{"line":5,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:formatMentionLabel",{"id":"symbol-name:formatMentionLabel","kind":"symbol","language":"jsts","symbolName":"formatMentionLabel","metadata":{"unresolvedName":"formatMentionLabel"}}],["external:span.addEventListener",{"id":"external:span.addEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"span.addEventListener"}}],["external:span.removeEventListener",{"id":"external:span.removeEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"span.removeEventListener"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:handleClick",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:handleClick","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts","symbolName":"handleClick","symbolKind":"function","exported":false,"metadata":{"line":20,"column":23,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":34,"column":34,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:cleanup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:cleanup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts","symbolName":"cleanup","symbolKind":"function","exported":false,"metadata":{"line":47,"column":14,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/index.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/index.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/index.ts","metadata":{"lineCount":33,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","metadata":{"lineCount":85,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","metadata":{"lineCount":432,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":76,"column":15,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:vi.mocked(listDirectory).mockResolvedValue",{"id":"external:vi.mocked(listDirectory).mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(listDirectory).mockResolvedValue"}}],["external:vi.mocked(searchFiles).mockResolvedValue",{"id":"external:vi.mocked(searchFiles).mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(searchFiles).mockResolvedValue"}}],["external:expect(screen.getByText('planner')).toBeInTheDocument",{"id":"external:expect(screen.getByText('planner')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('planner')).toBeInTheDocument"}}],["external:expect(screen.getAllByText('src').length).toBeGreaterThan",{"id":"external:expect(screen.getAllByText('src').length).toBeGreaterThan","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getAllByText('src').length).toBeGreaterThan"}}],["external:expect(screen.getAllByText('README.md').length).toBeGreaterThan",{"id":"external:expect(screen.getAllByText('README.md').length).toBeGreaterThan","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getAllByText('README.md').length).toBeGreaterThan"}}],["external:expect(onNavigate).toHaveBeenCalledWith",{"id":"external:expect(onNavigate).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(onNavigate).toHaveBeenCalledWith"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":377,"column":22,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:query.lastIndexOf",{"id":"external:query.lastIndexOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"query.lastIndexOf"}}],["external:query.slice",{"id":"external:query.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"query.slice"}}],["symbol-name:setDynamicMaxHeight",{"id":"symbol-name:setDynamicMaxHeight","kind":"symbol","language":"jsts","symbolName":"setDynamicMaxHeight","metadata":{"unresolvedName":"setDynamicMaxHeight"}}],["external:parent.getBoundingClientRect",{"id":"external:parent.getBoundingClientRect","kind":"external","language":"jsts","metadata":{"unresolvedName":"parent.getBoundingClientRect"}}],["external:window.visualViewport?.addEventListener",{"id":"external:window.visualViewport?.addEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.visualViewport?.addEventListener"}}],["external:window.visualViewport?.removeEventListener",{"id":"external:window.visualViewport?.removeEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.visualViewport?.removeEventListener"}}],["external:selectedEl.scrollIntoView",{"id":"external:selectedEl.scrollIntoView","kind":"external","language":"jsts","metadata":{"unresolvedName":"selectedEl.scrollIntoView"}}],["symbol-name:toAbsolutePath",{"id":"symbol-name:toAbsolutePath","kind":"symbol","language":"jsts","symbolName":"toAbsolutePath","metadata":{"unresolvedName":"toAbsolutePath"}}],["external:listDirectory(cleanPath, rootPath)\r\n .then",{"id":"external:listDirectory(cleanPath, rootPath)\r\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"listDirectory(cleanPath, rootPath)\r\n .then"}}],["external:nodes.forEach",{"id":"external:nodes.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"nodes.forEach"}}],["external:n.name.toLowerCase().includes",{"id":"external:n.name.toLowerCase().includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"n.name.toLowerCase().includes"}}],["external:n.name.toLowerCase",{"id":"external:n.name.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"n.name.toLowerCase"}}],["external:folders.push",{"id":"external:folders.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"folders.push"}}],["symbol-name:createItem",{"id":"symbol-name:createItem","kind":"symbol","language":"jsts","symbolName":"createItem","metadata":{"unresolvedName":"createItem"}}],["external:agents\r\n .filter",{"id":"external:agents\r\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"agents\r\n .filter"}}],["external:a.name.toLowerCase().includes",{"id":"external:a.name.toLowerCase().includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"a.name.toLowerCase().includes"}}],["external:a.name.toLowerCase",{"id":"external:a.name.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"a.name.toLowerCase"}}],["external:[...agentItems, ...folders, ...files].filter",{"id":"external:[...agentItems, ...folders, ...files].filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"[...agentItems, ...folders, ...files].filter"}}],["external:excludeValues?.has",{"id":"external:excludeValues?.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"excludeValues?.has"}}],["external:allItems.findIndex",{"id":"external:allItems.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"allItems.findIndex"}}],["symbol-name:loadDirectory",{"id":"symbol-name:loadDirectory","kind":"symbol","language":"jsts","symbolName":"loadDirectory","metadata":{"unresolvedName":"loadDirectory"}}],["external:searchFiles(query, { limit: 20, directory: rootPath })\r\n .then",{"id":"external:searchFiles(query, { limit: 20, directory: rootPath })\r\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"searchFiles(query, { limit: 20, directory: rootPath })\r\n .then"}}],["external:paths.forEach",{"id":"external:paths.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"paths.forEach"}}],["symbol-name:getFileName",{"id":"symbol-name:getFileName","kind":"symbol","language":"jsts","symbolName":"getFileName","metadata":{"unresolvedName":"getFileName"}}],["external:fileItems.push",{"id":"external:fileItems.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"fileItems.push"}}],["external:agents\r\n .filter",{"id":"external:agents\r\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"agents\r\n .filter"}}],["external:[...agentItems, ...folders, ...fileItems].filter",{"id":"external:[...agentItems, ...folders, ...fileItems].filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"[...agentItems, ...folders, ...fileItems].filter"}}],["external:normalizePath(currentPath).split",{"id":"external:normalizePath(currentPath).split","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalizePath(currentPath).split"}}],["symbol-name:onNavigate",{"id":"symbol-name:onNavigate","kind":"symbol","language":"jsts","symbolName":"onNavigate","metadata":{"unresolvedName":"onNavigate"}}],["external:menuRef.current.contains",{"id":"external:menuRef.current.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"menuRef.current.contains"}}],["external:pathParts.slice",{"id":"external:pathParts.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"pathParts.slice"}}],["external:parentParts.join",{"id":"external:parentParts.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"parentParts.join"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:calculate",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:calculate","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","symbolName":"calculate","symbolKind":"function","exported":false,"metadata":{"line":76,"column":23,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:moveUp",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:moveUp","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","symbolName":"moveUp","symbolKind":"function","exported":false,"metadata":{"line":277,"column":15,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:moveDown",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:moveDown","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","symbolName":"moveDown","symbolKind":"function","exported":false,"metadata":{"line":280,"column":17,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:selectCurrent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:selectCurrent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","symbolName":"selectCurrent","symbolKind":"function","exported":false,"metadata":{"line":283,"column":22,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:enterFolder",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:enterFolder","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","symbolName":"enterFolder","symbolKind":"function","exported":false,"metadata":{"line":289,"column":20,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:goBack",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:goBack","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","symbolName":"goBack","symbolKind":"function","exported":false,"metadata":{"line":296,"column":15,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:setRestoreFolder",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:setRestoreFolder","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","symbolName":"setRestoreFolder","symbolKind":"function","exported":false,"metadata":{"line":305,"column":25,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:handleClickOutside",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:handleClickOutside","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","symbolName":"handleClickOutside","symbolKind":"function","exported":false,"metadata":{"line":314,"column":32,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:TypeBadge",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:TypeBadge","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","symbolName":"TypeBadge","symbolKind":"function","exported":false,"metadata":{"line":416,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","metadata":{"lineCount":128,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:MentionTag",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:MentionTag","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","symbolName":"MentionTag","symbolKind":"function","exported":true,"metadata":{"line":33,"column":1,"cyclomaticComplexity":8,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":119,"column":21,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:RichText",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:RichText","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","symbolName":"RichText","symbolKind":"function","exported":true,"metadata":{"line":110,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:parseMentions",{"id":"symbol-name:parseMentions","kind":"symbol","language":"jsts","symbolName":"parseMentions","metadata":{"unresolvedName":"parseMentions"}}],["external:segments.map",{"id":"external:segments.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"segments.map"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","metadata":{"lineCount":340,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","symbolName":"useMention","symbolKind":"function","exported":true,"metadata":{"line":42,"column":1,"cyclomaticComplexity":8,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setMenuState",{"id":"symbol-name:setMenuState","kind":"symbol","language":"jsts","symbolName":"setMenuState","metadata":{"unresolvedName":"setMenuState"}}],["symbol-name:onMenuClose",{"id":"symbol-name:onMenuClose","kind":"symbol","language":"jsts","symbolName":"onMenuClose","metadata":{"unresolvedName":"onMenuClose"}}],["symbol-name:getPlainText",{"id":"symbol-name:getPlainText","kind":"symbol","language":"jsts","symbolName":"getPlainText","metadata":{"unresolvedName":"getPlainText"}}],["symbol-name:getSerializedText",{"id":"symbol-name:getSerializedText","kind":"symbol","language":"jsts","symbolName":"getSerializedText","metadata":{"unresolvedName":"getSerializedText"}}],["symbol-name:onTextChange",{"id":"symbol-name:onTextChange","kind":"symbol","language":"jsts","symbolName":"onTextChange","metadata":{"unresolvedName":"onTextChange"}}],["symbol-name:getCursorPosition",{"id":"symbol-name:getCursorPosition","kind":"symbol","language":"jsts","symbolName":"getCursorPosition","metadata":{"unresolvedName":"getCursorPosition"}}],["external:plainText.slice",{"id":"external:plainText.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"plainText.slice"}}],["symbol-name:rebuildEditorContent",{"id":"symbol-name:rebuildEditorContent","kind":"symbol","language":"jsts","symbolName":"rebuildEditorContent","metadata":{"unresolvedName":"rebuildEditorContent"}}],["symbol-name:setMentions",{"id":"symbol-name:setMentions","kind":"symbol","language":"jsts","symbolName":"setMentions","metadata":{"unresolvedName":"setMentions"}}],["external:editor.focus",{"id":"external:editor.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"editor.focus"}}],["symbol-name:moveCursorToEnd",{"id":"symbol-name:moveCursorToEnd","kind":"symbol","language":"jsts","symbolName":"moveCursorToEnd","metadata":{"unresolvedName":"moveCursorToEnd"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":297,"column":51,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getPlainText",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getPlainText","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","symbolName":"getPlainText","symbolKind":"function","exported":false,"metadata":{"line":190,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:el.classList.contains",{"id":"external:el.classList.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"el.classList.contains"}}],["external:el.childNodes.forEach",{"id":"external:el.childNodes.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"el.childNodes.forEach"}}],["external:editor.childNodes.forEach",{"id":"external:editor.childNodes.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"editor.childNodes.forEach"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:walk",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:walk","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","symbolName":"walk","symbolKind":"function","exported":false,"metadata":{"line":255,"column":16,"cyclomaticComplexity":10,"maxNestingDepth":5,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getSerializedText",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getSerializedText","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","symbolName":"getSerializedText","symbolKind":"function","exported":false,"metadata":{"line":215,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":4,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getCursorPosition",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getCursorPosition","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","symbolName":"getCursorPosition","symbolKind":"function","exported":false,"metadata":{"line":244,"column":1,"cyclomaticComplexity":14,"maxNestingDepth":5,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:window.getSelection",{"id":"external:window.getSelection","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.getSelection"}}],["external:selection.getRangeAt",{"id":"external:selection.getRangeAt","kind":"external","language":"jsts","metadata":{"unresolvedName":"selection.getRangeAt"}}],["external:range.cloneRange",{"id":"external:range.cloneRange","kind":"external","language":"jsts","metadata":{"unresolvedName":"range.cloneRange"}}],["external:preCaretRange.selectNodeContents",{"id":"external:preCaretRange.selectNodeContents","kind":"external","language":"jsts","metadata":{"unresolvedName":"preCaretRange.selectNodeContents"}}],["external:preCaretRange.setEnd",{"id":"external:preCaretRange.setEnd","kind":"external","language":"jsts","metadata":{"unresolvedName":"preCaretRange.setEnd"}}],["symbol-name:walk",{"id":"symbol-name:walk","kind":"symbol","language":"jsts","symbolName":"walk","metadata":{"unresolvedName":"walk"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:rebuildEditorContent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:rebuildEditorContent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","symbolName":"rebuildEditorContent","symbolKind":"function","exported":false,"metadata":{"line":288,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:editor.querySelectorAll('.mention-tag').forEach",{"id":"external:editor.querySelectorAll('.mention-tag').forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"editor.querySelectorAll('.mention-tag').forEach"}}],["external:editor.querySelectorAll",{"id":"external:editor.querySelectorAll","kind":"external","language":"jsts","metadata":{"unresolvedName":"editor.querySelectorAll"}}],["external:mentionSpans.push",{"id":"external:mentionSpans.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"mentionSpans.push"}}],["external:span.cloneNode",{"id":"external:span.cloneNode","kind":"external","language":"jsts","metadata":{"unresolvedName":"span.cloneNode"}}],["external:editor.appendChild",{"id":"external:editor.appendChild","kind":"external","language":"jsts","metadata":{"unresolvedName":"editor.appendChild"}}],["external:document.createTextNode",{"id":"external:document.createTextNode","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.createTextNode"}}],["symbol-name:createMentionElement",{"id":"symbol-name:createMentionElement","kind":"symbol","language":"jsts","symbolName":"createMentionElement","metadata":{"unresolvedName":"createMentionElement"}}],["external:afterText.trimStart",{"id":"external:afterText.trimStart","kind":"external","language":"jsts","metadata":{"unresolvedName":"afterText.trimStart"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:moveCursorToEnd",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:moveCursorToEnd","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","symbolName":"moveCursorToEnd","symbolKind":"function","exported":false,"metadata":{"line":323,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:document.createRange",{"id":"external:document.createRange","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.createRange"}}],["external:range.setStart",{"id":"external:range.setStart","kind":"external","language":"jsts","metadata":{"unresolvedName":"range.setStart"}}],["external:range.setStartAfter",{"id":"external:range.setStartAfter","kind":"external","language":"jsts","metadata":{"unresolvedName":"range.setStartAfter"}}],["external:range.collapse",{"id":"external:range.collapse","kind":"external","language":"jsts","metadata":{"unresolvedName":"range.collapse"}}],["external:sel?.removeAllRanges",{"id":"external:sel?.removeAllRanges","kind":"external","language":"jsts","metadata":{"unresolvedName":"sel?.removeAllRanges"}}],["external:sel?.addRange",{"id":"external:sel?.addRange","kind":"external","language":"jsts","metadata":{"unresolvedName":"sel?.addRange"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts","metadata":{"lineCount":52,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":46,"column":57,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(normalizePath('foo\\\\bar//baz.ts')).toBe",{"id":"external:expect(normalizePath('foo\\\\bar//baz.ts')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(normalizePath('foo\\\\bar//baz.ts')).toBe"}}],["external:expect(getFileName('foo/bar/baz.ts')).toBe",{"id":"external:expect(getFileName('foo/bar/baz.ts')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getFileName('foo/bar/baz.ts')).toBe"}}],["external:expect(toAbsolutePath('./src/app.ts', '/workspace/project')).toBe",{"id":"external:expect(toAbsolutePath('./src/app.ts', '/workspace/project')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(toAbsolutePath('./src/app.ts', '/workspace/project')).toBe"}}],["external:expect(toAbsolutePath('', '/workspace/project')).toBe",{"id":"external:expect(toAbsolutePath('', '/workspace/project')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(toAbsolutePath('', '/workspace/project')).toBe"}}],["external:expect(toFileUrl('/workspace/project/src/app.ts')).toBe",{"id":"external:expect(toFileUrl('/workspace/project/src/app.ts')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(toFileUrl('/workspace/project/src/app.ts')).toBe"}}],["external:expect(toFileUrl('C:/repo/app.ts')).toBe",{"id":"external:expect(toFileUrl('C:/repo/app.ts')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(toFileUrl('C:/repo/app.ts')).toBe"}}],["symbol-name:serializeMention",{"id":"symbol-name:serializeMention","kind":"symbol","language":"jsts","symbolName":"serializeMention","metadata":{"unresolvedName":"serializeMention"}}],["external:expect(serialized).toBe",{"id":"external:expect(serialized).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(serialized).toBe"}}],["external:expect(formatMentionLabel('agent', 'planner')).toBe",{"id":"external:expect(formatMentionLabel('agent', 'planner')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatMentionLabel('agent', 'planner')).toBe"}}],["external:expect(parsed).toHaveLength",{"id":"external:expect(parsed).toHaveLength","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(parsed).toHaveLength"}}],["external:expect(parsed[1]).toMatchObject",{"id":"external:expect(parsed[1]).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(parsed[1]).toMatchObject"}}],["symbol-name:extractMentions",{"id":"symbol-name:extractMentions","kind":"symbol","language":"jsts","symbolName":"extractMentions","metadata":{"unresolvedName":"extractMentions"}}],["external:expect(stripMentions('Look [[file:src/app.ts]] here')).toBe",{"id":"external:expect(stripMentions('Look [[file:src/app.ts]] here')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(stripMentions('Look [[file:src/app.ts]] here')).toBe"}}],["symbol-name:stripMentions",{"id":"symbol-name:stripMentions","kind":"symbol","language":"jsts","symbolName":"stripMentions","metadata":{"unresolvedName":"stripMentions"}}],["external:'Look here'.trim",{"id":"external:'Look here'.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"'Look here'.trim"}}],["external:expect(detectMentionTrigger('hello @src/com', 14)).toEqual",{"id":"external:expect(detectMentionTrigger('hello @src/com', 14)).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(detectMentionTrigger('hello @src/com', 14)).toEqual"}}],["external:expect(detectMentionTrigger('email@test.com', 14)).toBeNull",{"id":"external:expect(detectMentionTrigger('email@test.com', 14)).toBeNull","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(detectMentionTrigger('email@test.com', 14)).toBeNull"}}],["external:expect(detectMentionTrigger('hello @src com', 14)).toBeNull",{"id":"external:expect(detectMentionTrigger('hello @src com', 14)).toBeNull","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(detectMentionTrigger('hello @src com', 14)).toBeNull"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:normalizePath",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:normalizePath","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","symbolName":"normalizePath","symbolKind":"function","exported":true,"metadata":{"line":11,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:getFileName",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:getFileName","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","symbolName":"getFileName","symbolKind":"function","exported":true,"metadata":{"line":18,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:normalized.split",{"id":"external:normalized.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalized.split"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toAbsolutePath",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toAbsolutePath","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","symbolName":"toAbsolutePath","symbolKind":"function","exported":true,"metadata":{"line":27,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:normalizePath(rootPath).replace",{"id":"external:normalizePath(rootPath).replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalizePath(rootPath).replace"}}],["external:normalizePath(relativePath).replace",{"id":"external:normalizePath(relativePath).replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalizePath(relativePath).replace"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toFileUrl",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toFileUrl","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","symbolName":"toFileUrl","symbolKind":"function","exported":true,"metadata":{"line":47,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:formatMentionLabel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:formatMentionLabel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","symbolName":"formatMentionLabel","symbolKind":"function","exported":true,"metadata":{"line":64,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:type.charAt(0).toUpperCase",{"id":"external:type.charAt(0).toUpperCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"type.charAt(0).toUpperCase"}}],["external:type.charAt",{"id":"external:type.charAt","kind":"external","language":"jsts","metadata":{"unresolvedName":"type.charAt"}}],["external:type.slice",{"id":"external:type.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"type.slice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:formatMentionShort",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:formatMentionShort","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","symbolName":"formatMentionShort","symbolKind":"function","exported":true,"metadata":{"line":72,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:serializeMention",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:serializeMention","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","symbolName":"serializeMention","symbolKind":"function","exported":true,"metadata":{"line":79,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:parseMentions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:parseMentions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","symbolName":"parseMentions","symbolKind":"function","exported":true,"metadata":{"line":87,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getMentionPattern",{"id":"symbol-name:getMentionPattern","kind":"symbol","language":"jsts","symbolName":"getMentionPattern","metadata":{"unresolvedName":"getMentionPattern"}}],["external:pattern.exec",{"id":"external:pattern.exec","kind":"external","language":"jsts","metadata":{"unresolvedName":"pattern.exec"}}],["external:segments.push",{"id":"external:segments.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"segments.push"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:extractMentions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:extractMentions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","symbolName":"extractMentions","symbolKind":"function","exported":true,"metadata":{"line":127,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:mentions.push",{"id":"external:mentions.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"mentions.push"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:stripMentions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:stripMentions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","symbolName":"stripMentions","symbolKind":"function","exported":true,"metadata":{"line":146,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:text.replace(getMentionPattern(), '').trim",{"id":"external:text.replace(getMentionPattern(), '').trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"text.replace(getMentionPattern(), '').trim"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:detectMentionTrigger",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:detectMentionTrigger","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","symbolName":"detectMentionTrigger","symbolKind":"function","exported":true,"metadata":{"line":154,"column":1,"cyclomaticComplexity":9,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:textBeforeCursor.lastIndexOf",{"id":"external:textBeforeCursor.lastIndexOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"textBeforeCursor.lastIndexOf"}}],["external:textBeforeCursor.slice",{"id":"external:textBeforeCursor.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"textBeforeCursor.slice"}}],["external:textAfterTrigger.includes",{"id":"external:textAfterTrigger.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"textAfterTrigger.includes"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/index.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/index.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/index.ts","metadata":{"lineCount":3,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","metadata":{"lineCount":168,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","metadata":{"lineCount":1048,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:createAssistantMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:createAssistantMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","symbolName":"createAssistantMessage","symbolKind":"function","exported":false,"metadata":{"line":44,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:createUserMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:createUserMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","symbolName":"createUserMessage","symbolKind":"function","exported":false,"metadata":{"line":78,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":151,"column":55,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(onFork).toHaveBeenCalledWith",{"id":"external:expect(onFork).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(onFork).toHaveBeenCalledWith"}}],["external:expect(screen.queryByRole('button', { name: /fork|分叉/i })).toBeNull",{"id":"external:expect(screen.queryByRole('button', { name: /fork|分叉/i })).toBeNull","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.queryByRole('button', { name: /fork|分叉/i })).toBeNull"}}],["external:expect(screen.queryByRole('button', { name: /copy/i })).toBeNull",{"id":"external:expect(screen.queryByRole('button', { name: /copy/i })).toBeNull","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.queryByRole('button', { name: /copy/i })).toBeNull"}}],["external:expect(screen.getByText('History compacted')).toBeInTheDocument",{"id":"external:expect(screen.getByText('History compacted')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('History compacted')).toBeInTheDocument"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts"}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools"}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","metadata":{"lineCount":80,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":622,"column":13,"cyclomaticComplexity":12,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:useEntryGrowAnimation",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:useEntryGrowAnimation","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","symbolName":"useEntryGrowAnimation","symbolKind":"function","exported":false,"metadata":{"line":99,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expandedMessages.has",{"id":"external:expandedMessages.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"expandedMessages.has"}}],["external:overflowStateCache.get",{"id":"external:overflowStateCache.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"overflowStateCache.get"}}],["external:overflowStateCache.set",{"id":"external:overflowStateCache.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"overflowStateCache.set"}}],["symbol-name:setIsOverflow",{"id":"symbol-name:setIsOverflow","kind":"symbol","language":"jsts","symbolName":"setIsOverflow","metadata":{"unresolvedName":"setIsOverflow"}}],["external:document.fonts?.ready?.then",{"id":"external:document.fonts?.ready?.then","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.fonts?.ready?.then"}}],["external:expandedMessages.add",{"id":"external:expandedMessages.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"expandedMessages.add"}}],["external:expandedMessages.delete",{"id":"external:expandedMessages.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"expandedMessages.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:measure",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:measure","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","symbolName":"measure","symbolKind":"function","exported":false,"metadata":{"line":145,"column":21,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setIsForking",{"id":"symbol-name:setIsForking","kind":"symbol","language":"jsts","symbolName":"setIsForking","metadata":{"unresolvedName":"setIsForking"}}],["symbol-name:onFork",{"id":"symbol-name:onFork","kind":"symbol","language":"jsts","symbolName":"onFork","metadata":{"unresolvedName":"onFork"}}],["symbol-name:handleFork",{"id":"symbol-name:handleFork","kind":"symbol","language":"jsts","symbolName":"handleFork","metadata":{"unresolvedName":"handleFork"}}],["symbol-name:useEntryGrowAnimation",{"id":"symbol-name:useEntryGrowAnimation","kind":"symbol","language":"jsts","symbolName":"useEntryGrowAnimation","metadata":{"unresolvedName":"useEntryGrowAnimation"}}],["external:fileParts.map",{"id":"external:fileParts.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"fileParts.map"}}],["external:agentParts.map",{"id":"external:agentParts.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"agentParts.map"}}],["symbol-name:setShowSystemContext",{"id":"symbol-name:setShowSystemContext","kind":"symbol","language":"jsts","symbolName":"setShowSystemContext","metadata":{"unresolvedName":"setShowSystemContext"}}],["external:syntheticParts.map",{"id":"external:syntheticParts.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"syntheticParts.map"}}],["external:compactionParts.map",{"id":"external:compactionParts.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"compactionParts.map"}}],["symbol-name:onUndo",{"id":"symbol-name:onUndo","kind":"symbol","language":"jsts","symbolName":"onUndo","metadata":{"unresolvedName":"onUndo"}}],["symbol-name:onEnsureParts",{"id":"symbol-name:onEnsureParts","kind":"symbol","language":"jsts","symbolName":"onEnsureParts","metadata":{"unresolvedName":"onEnsureParts"}}],["symbol-name:groupPartsForRender",{"id":"symbol-name:groupPartsForRender","kind":"symbol","language":"jsts","symbolName":"groupPartsForRender","metadata":{"unresolvedName":"groupPartsForRender"}}],["external:ended.add",{"id":"external:ended.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"ended.add"}}],["external:parts\n .filter",{"id":"external:parts\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"parts\n .filter"}}],["external:fullText.trim",{"id":"external:fullText.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"fullText.trim"}}],["external:parts.some",{"id":"external:parts.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"parts.some"}}],["external:renderItems.map",{"id":"external:renderItems.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"renderItems.map"}}],["external:renderItems.findLastIndex",{"id":"external:renderItems.findLastIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"renderItems.findLastIndex"}}],["external:endedReasoningIds.has",{"id":"external:endedReasoningIds.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"endedReasoningIds.has"}}],["symbol-name:formatDuration",{"id":"symbol-name:formatDuration","kind":"symbol","language":"jsts","symbolName":"formatDuration","metadata":{"unresolvedName":"formatDuration"}}],["symbol-name:formatDetailedDateTime",{"id":"symbol-name:formatDetailedDateTime","kind":"symbol","language":"jsts","symbolName":"formatDetailedDateTime","metadata":{"unresolvedName":"formatDetailedDateTime"}}],["symbol-name:formatCompletedAt",{"id":"symbol-name:formatCompletedAt","kind":"symbol","language":"jsts","symbolName":"formatCompletedAt","metadata":{"unresolvedName":"formatCompletedAt"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:isReadableTool",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:isReadableTool","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","symbolName":"isReadableTool","symbolKind":"function","exported":false,"metadata":{"line":559,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:READABLE_TOOL_PATTERNS.test",{"id":"external:READABLE_TOOL_PATTERNS.test","kind":"external","language":"jsts","metadata":{"unresolvedName":"READABLE_TOOL_PATTERNS.test"}}],["external:toolName.toLowerCase",{"id":"external:toolName.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"toolName.toLowerCase"}}],["symbol-name:useInlineToolRequests",{"id":"symbol-name:useInlineToolRequests","kind":"symbol","language":"jsts","symbolName":"useInlineToolRequests","metadata":{"unresolvedName":"useInlineToolRequests"}}],["symbol-name:getTaskChildSessionId",{"id":"symbol-name:getTaskChildSessionId","kind":"symbol","language":"jsts","symbolName":"getTaskChildSessionId","metadata":{"unresolvedName":"getTaskChildSessionId"}}],["symbol-name:findPermissionRequestForTool",{"id":"symbol-name:findPermissionRequestForTool","kind":"symbol","language":"jsts","symbolName":"findPermissionRequestForTool","metadata":{"unresolvedName":"findPermissionRequestForTool"}}],["symbol-name:findQuestionRequestForTool",{"id":"symbol-name:findQuestionRequestForTool","kind":"symbol","language":"jsts","symbolName":"findQuestionRequestForTool","metadata":{"unresolvedName":"findQuestionRequestForTool"}}],["symbol-name:buildDescriptiveToolStepsSummary",{"id":"symbol-name:buildDescriptiveToolStepsSummary","kind":"symbol","language":"jsts","symbolName":"buildDescriptiveToolStepsSummary","metadata":{"unresolvedName":"buildDescriptiveToolStepsSummary"}}],["symbol-name:extractToolData",{"id":"symbol-name:extractToolData","kind":"symbol","language":"jsts","symbolName":"extractToolData","metadata":{"unresolvedName":"extractToolData"}}],["symbol-name:computePartDiffStats",{"id":"symbol-name:computePartDiffStats","kind":"symbol","language":"jsts","symbolName":"computePartDiffStats","metadata":{"unresolvedName":"computePartDiffStats"}}],["symbol-name:isReadableTool",{"id":"symbol-name:isReadableTool","kind":"symbol","language":"jsts","symbolName":"isReadableTool","metadata":{"unresolvedName":"isReadableTool"}}],["external:stepsSummary?.map",{"id":"external:stepsSummary?.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"stepsSummary?.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatTokens",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatTokens","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","symbolName":"formatTokens","symbolKind":"function","exported":false,"metadata":{"line":760,"column":1,"cyclomaticComplexity":8,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:(total / 1000).toFixed",{"id":"external:(total / 1000).toFixed","kind":"external","language":"jsts","metadata":{"unresolvedName":"(total / 1000).toFixed"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","symbolName":"buildDescriptiveToolStepsSummary","symbolKind":"function","exported":false,"metadata":{"line":799,"column":1,"cyclomaticComplexity":31,"maxNestingDepth":4,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getToolSummaryCategory",{"id":"symbol-name:getToolSummaryCategory","kind":"symbol","language":"jsts","symbolName":"getToolSummaryCategory","metadata":{"unresolvedName":"getToolSummaryCategory"}}],["external:doneMap.has",{"id":"external:doneMap.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"doneMap.has"}}],["external:categoryOrder.push",{"id":"external:categoryOrder.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"categoryOrder.push"}}],["external:doneMap.set",{"id":"external:doneMap.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"doneMap.set"}}],["external:failedMap.set",{"id":"external:failedMap.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"failedMap.set"}}],["external:activeMap.set",{"id":"external:activeMap.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeMap.set"}}],["external:doneMap.get",{"id":"external:doneMap.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"doneMap.get"}}],["external:failedMap.get",{"id":"external:failedMap.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"failedMap.get"}}],["symbol-name:isToolPartActive",{"id":"symbol-name:isToolPartActive","kind":"symbol","language":"jsts","symbolName":"isToolPartActive","metadata":{"unresolvedName":"isToolPartActive"}}],["external:activeMap.get",{"id":"external:activeMap.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeMap.get"}}],["external:categoryOrder.filter",{"id":"external:categoryOrder.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"categoryOrder.filter"}}],["symbol-name:formatToolSummarySegment",{"id":"symbol-name:formatToolSummarySegment","kind":"symbol","language":"jsts","symbolName":"formatToolSummarySegment","metadata":{"unresolvedName":"formatToolSummarySegment"}}],["symbol-name:pushFinishedSegments",{"id":"symbol-name:pushFinishedSegments","kind":"symbol","language":"jsts","symbolName":"pushFinishedSegments","metadata":{"unresolvedName":"pushFinishedSegments"}}],["external:finishedCategories.slice",{"id":"external:finishedCategories.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"finishedCategories.slice"}}],["external:finishedCategories\n .slice(MAX_CATEGORIES)\n .reduce",{"id":"external:finishedCategories\n .slice(MAX_CATEGORIES)\n .reduce","kind":"external","language":"jsts","metadata":{"unresolvedName":"finishedCategories\n .slice(MAX_CATEGORIES)\n .reduce"}}],["external:finishedCategories\n .slice",{"id":"external:finishedCategories\n .slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"finishedCategories\n .slice"}}],["external:seg.text.charAt(0).toLowerCase",{"id":"external:seg.text.charAt(0).toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"seg.text.charAt(0).toLowerCase"}}],["external:seg.text.charAt",{"id":"external:seg.text.charAt","kind":"external","language":"jsts","metadata":{"unresolvedName":"seg.text.charAt"}}],["external:seg.text.slice",{"id":"external:seg.text.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"seg.text.slice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:pushFinishedSegments",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:pushFinishedSegments","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","symbolName":"pushFinishedSegments","symbolKind":"function","exported":false,"metadata":{"line":830,"column":32,"cyclomaticComplexity":9,"maxNestingDepth":4,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatToolSummarySegment",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatToolSummarySegment","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","symbolName":"formatToolSummarySegment","symbolKind":"function","exported":false,"metadata":{"line":890,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:phase.charAt(0).toUpperCase",{"id":"external:phase.charAt(0).toUpperCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"phase.charAt(0).toUpperCase"}}],["external:phase.charAt",{"id":"external:phase.charAt","kind":"external","language":"jsts","metadata":{"unresolvedName":"phase.charAt"}}],["external:phase.slice",{"id":"external:phase.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"phase.slice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:getToolSummaryCategory",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:getToolSummaryCategory","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","symbolName":"getToolSummaryCategory","symbolKind":"function","exported":false,"metadata":{"line":900,"column":1,"cyclomaticComplexity":31,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:lower.includes",{"id":"external:lower.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"lower.includes"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:isToolPartActive",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:isToolPartActive","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","symbolName":"isToolPartActive","symbolKind":"function","exported":false,"metadata":{"line":939,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:getTaskChildSessionId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:getTaskChildSessionId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","symbolName":"getTaskChildSessionId","symbolKind":"function","exported":false,"metadata":{"line":943,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:part.tool.toLowerCase",{"id":"external:part.tool.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"part.tool.toLowerCase"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:computePartDiffStats",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:computePartDiffStats","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","symbolName":"computePartDiffStats","symbolKind":"function","exported":false,"metadata":{"line":950,"column":1,"cyclomaticComplexity":14,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:diffPairStats",{"id":"symbol-name:diffPairStats","kind":"symbol","language":"jsts","symbolName":"diffPairStats","metadata":{"unresolvedName":"diffPairStats"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:diffPairStats",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:diffPairStats","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","symbolName":"diffPairStats","symbolKind":"function","exported":false,"metadata":{"line":975,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:hasMoreToolsAhead",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:hasMoreToolsAhead","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","symbolName":"hasMoreToolsAhead","symbolKind":"function","exported":false,"metadata":{"line":995,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:groupPartsForRender",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:groupPartsForRender","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","symbolName":"groupPartsForRender","symbolKind":"function","exported":false,"metadata":{"line":1007,"column":1,"cyclomaticComplexity":15,"maxNestingDepth":5,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:isToolPart",{"id":"symbol-name:isToolPart","kind":"symbol","language":"jsts","symbolName":"isToolPart","metadata":{"unresolvedName":"isToolPart"}}],["external:toolGroup.push",{"id":"external:toolGroup.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"toolGroup.push"}}],["symbol-name:hasMoreToolsAhead",{"id":"symbol-name:hasMoreToolsAhead","kind":"symbol","language":"jsts","symbolName":"hasMoreToolsAhead","metadata":{"unresolvedName":"hasMoreToolsAhead"}}],["symbol-name:flushToolGroup",{"id":"symbol-name:flushToolGroup","kind":"symbol","language":"jsts","symbolName":"flushToolGroup","metadata":{"unresolvedName":"flushToolGroup"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:flushToolGroup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:flushToolGroup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","symbolName":"flushToolGroup","symbolKind":"function","exported":false,"metadata":{"line":1012,"column":26,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx","metadata":{"lineCount":51,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":43,"column":43,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:fromFilePart",{"id":"symbol-name:fromFilePart","kind":"symbol","language":"jsts","symbolName":"fromFilePart","metadata":{"unresolvedName":"fromFilePart"}}],["symbol-name:fromAgentPart",{"id":"symbol-name:fromAgentPart","kind":"symbol","language":"jsts","symbolName":"fromAgentPart","metadata":{"unresolvedName":"fromAgentPart"}}],["symbol-name:fromTextPart",{"id":"symbol-name:fromTextPart","kind":"symbol","language":"jsts","symbolName":"fromTextPart","metadata":{"unresolvedName":"fromTextPart"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/index.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/index.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/index.ts","metadata":{"lineCount":9,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx","metadata":{"lineCount":133,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":37,"column":31,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getErrorInfo",{"id":"symbol-name:getErrorInfo","kind":"symbol","language":"jsts","symbolName":"getErrorInfo","metadata":{"unresolvedName":"getErrorInfo"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:getErrorInfo",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:getErrorInfo","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx","symbolName":"getErrorInfo","symbolKind":"function","exported":false,"metadata":{"line":83,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","metadata":{"lineCount":92,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","metadata":{"lineCount":260,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":76,"column":59,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(screen.getByRole('button', { expanded: true })).toBeInTheDocument",{"id":"external:expect(screen.getByRole('button', { expanded: true })).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('button', { expanded: true })).toBeInTheDocument"}}],["external:expect(screen.getByText('Thinking...')).toBeInTheDocument",{"id":"external:expect(screen.getByText('Thinking...')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('Thinking...')).toBeInTheDocument"}}],["external:expect(screen.getAllByText('thinking through steps...').length).toBeGreaterThan",{"id":"external:expect(screen.getAllByText('thinking through steps...').length).toBeGreaterThan","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getAllByText('thinking through steps...').length).toBeGreaterThan"}}],["external:expect(screen.queryByTestId('markdown-content')).not.toBeInTheDocument",{"id":"external:expect(screen.queryByTestId('markdown-content')).not.toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.queryByTestId('markdown-content')).not.toBeInTheDocument"}}],["external:expect(screen.getByTestId('markdown-content')).toHaveTextContent",{"id":"external:expect(screen.getByTestId('markdown-content')).toHaveTextContent","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByTestId('markdown-content')).toHaveTextContent"}}],["external:expect(screen.queryByRole('button')).not.toBeInTheDocument",{"id":"external:expect(screen.queryByRole('button')).not.toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.queryByRole('button')).not.toBeInTheDocument"}}],["external:expect(screen.getAllByText('short').length).toBeGreaterThan",{"id":"external:expect(screen.getAllByText('short').length).toBeGreaterThan","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getAllByText('short').length).toBeGreaterThan"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":97,"column":12,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:rawText.trim",{"id":"external:rawText.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"rawText.trim"}}],["external:(displayText || '').replace(/\\s+/g, ' ').trim",{"id":"external:(displayText || '').replace(/\\s+/g, ' ').trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"(displayText || '').replace(/\\s+/g, ' ').trim"}}],["external:(displayText || '').replace",{"id":"external:(displayText || '').replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"(displayText || '').replace"}}],["external:(durationMs / 1000).toFixed",{"id":"external:(durationMs / 1000).toFixed","kind":"external","language":"jsts","metadata":{"unresolvedName":"(durationMs / 1000).toFixed"}}],["external:/[\\r\\n]/.test",{"id":"external:/[\\r\\n]/.test","kind":"external","language":"jsts","metadata":{"unresolvedName":"/[\\r\\n]/.test"}}],["symbol-name:setSummaryOverflow",{"id":"symbol-name:setSummaryOverflow","kind":"symbol","language":"jsts","symbolName":"setSummaryOverflow","metadata":{"unresolvedName":"setSummaryOverflow"}}],["symbol-name:measureSummaryOverflow",{"id":"symbol-name:measureSummaryOverflow","kind":"symbol","language":"jsts","symbolName":"measureSummaryOverflow","metadata":{"unresolvedName":"measureSummaryOverflow"}}],["external:fontsReady.then(() => measureSummaryOverflow()).catch",{"id":"external:fontsReady.then(() => measureSummaryOverflow()).catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"fontsReady.then(() => measureSummaryOverflow()).catch"}}],["external:fontsReady.then",{"id":"external:fontsReady.then","kind":"external","language":"jsts","metadata":{"unresolvedName":"fontsReady.then"}}],["external:ro?.disconnect",{"id":"external:ro?.disconnect","kind":"external","language":"jsts","metadata":{"unresolvedName":"ro?.disconnect"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx","metadata":{"lineCount":88,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":27,"column":40,"cyclomaticComplexity":42,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:formatNumber",{"id":"symbol-name:formatNumber","kind":"symbol","language":"jsts","symbolName":"formatNumber","metadata":{"unresolvedName":"formatNumber"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","metadata":{"lineCount":174,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":89,"column":24,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useSessionNavigation",{"id":"symbol-name:useSessionNavigation","kind":"symbol","language":"jsts","symbolName":"useSessionNavigation","metadata":{"unresolvedName":"useSessionNavigation"}}],["symbol-name:useChildSessions",{"id":"symbol-name:useChildSessions","kind":"symbol","language":"jsts","symbolName":"useChildSessions","metadata":{"unresolvedName":"useChildSessions"}}],["symbol-name:findMatchingChildSession",{"id":"symbol-name:findMatchingChildSession","kind":"symbol","language":"jsts","symbolName":"findMatchingChildSession","metadata":{"unresolvedName":"findMatchingChildSession"}}],["symbol-name:navigateToSession",{"id":"symbol-name:navigateToSession","kind":"symbol","language":"jsts","symbolName":"navigateToSession","metadata":{"unresolvedName":"navigateToSession"}}],["symbol-name:handleEnter",{"id":"symbol-name:handleEnter","kind":"symbol","language":"jsts","symbolName":"handleEnter","metadata":{"unresolvedName":"handleEnter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:handleEnter",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:handleEnter","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","symbolName":"handleEnter","symbolKind":"function","exported":false,"metadata":{"line":39,"column":23,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:findMatchingChildSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:findMatchingChildSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","symbolName":"findMatchingChildSession","symbolKind":"function","exported":false,"metadata":{"line":161,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:childSessions.filter",{"id":"external:childSessions.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"childSessions.filter"}}],["external:matchingAgent.sort",{"id":"external:matchingAgent.sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"matchingAgent.sort"}}],["external:childSessions.sort",{"id":"external:childSessions.sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"childSessions.sort"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","metadata":{"lineCount":70,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx","metadata":{"lineCount":146,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":62,"column":9,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(toggle).toHaveAttribute",{"id":"external:expect(toggle).toHaveAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(toggle).toHaveAttribute"}}],["external:expect(screen.getByText('network timeout')).toBeInTheDocument",{"id":"external:expect(screen.getByText('network timeout')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('network timeout')).toBeInTheDocument"}}],["external:expect(screen.getByText('src/app.tsx')).toBeInTheDocument",{"id":"external:expect(screen.getByText('src/app.tsx')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('src/app.tsx')).toBeInTheDocument"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":100,"column":35,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:new Date(time.created).toLocaleTimeString",{"id":"external:new Date(time.created).toLocaleTimeString","kind":"external","language":"jsts","metadata":{"unresolvedName":"new Date(time.created).toLocaleTimeString"}}],["external:hash.slice",{"id":"external:hash.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"hash.slice"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/TextPartView.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/TextPartView.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/TextPartView.tsx","metadata":{"lineCount":28,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/TextPartView.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/TextPartView.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/TextPartView.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":13,"column":34,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:displayText.trim",{"id":"external:displayText.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"displayText.trim"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","metadata":{"lineCount":135,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","metadata":{"lineCount":535,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","symbolName":"t","symbolKind":"function","exported":false,"metadata":{"line":12,"column":8,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:createRunningToolPart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:createRunningToolPart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","symbolName":"createRunningToolPart","symbolKind":"function","exported":false,"metadata":{"line":69,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":127,"column":65,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:vi.setSystemTime",{"id":"external:vi.setSystemTime","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.setSystemTime"}}],["external:getActiveCalibratedNowMock.mockReset",{"id":"external:getActiveCalibratedNowMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"getActiveCalibratedNowMock.mockReset"}}],["external:getActiveCalibratedNowMock.mockReturnValue",{"id":"external:getActiveCalibratedNowMock.mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getActiveCalibratedNowMock.mockReturnValue"}}],["symbol-name:createRunningToolPart",{"id":"symbol-name:createRunningToolPart","kind":"symbol","language":"jsts","symbolName":"createRunningToolPart","metadata":{"unresolvedName":"createRunningToolPart"}}],["external:expect(screen.getByText('Running')).toBeInTheDocument",{"id":"external:expect(screen.getByText('Running')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('Running')).toBeInTheDocument"}}],["external:expect(screen.getByText('2.5s')).toBeInTheDocument",{"id":"external:expect(screen.getByText('2.5s')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('2.5s')).toBeInTheDocument"}}],["external:expect(screen.getByText('3.0s')).toBeInTheDocument",{"id":"external:expect(screen.getByText('3.0s')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('3.0s')).toBeInTheDocument"}}],["external:expect(screen.getByText('3.5s')).toBeInTheDocument",{"id":"external:expect(screen.getByText('3.5s')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('3.5s')).toBeInTheDocument"}}],["external:expect(screen.getByText('0ms')).toBeInTheDocument",{"id":"external:expect(screen.getByText('0ms')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('0ms')).toBeInTheDocument"}}],["external:expect(screen.getByText('123ms')).toBeInTheDocument",{"id":"external:expect(screen.getByText('123ms')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('123ms')).toBeInTheDocument"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":499,"column":23,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getInputDescription",{"id":"symbol-name:getInputDescription","kind":"symbol","language":"jsts","symbolName":"getInputDescription","metadata":{"unresolvedName":"getInputDescription"}}],["external:serverStore.getActiveCalibratedNow",{"id":"external:serverStore.getActiveCalibratedNow","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStore.getActiveCalibratedNow"}}],["symbol-name:setCachedPermissionRequest",{"id":"symbol-name:setCachedPermissionRequest","kind":"symbol","language":"jsts","symbolName":"setCachedPermissionRequest","metadata":{"unresolvedName":"setCachedPermissionRequest"}}],["symbol-name:getToolIcon",{"id":"symbol-name:getToolIcon","kind":"symbol","language":"jsts","symbolName":"getToolIcon","metadata":{"unresolvedName":"getToolIcon"}}],["symbol-name:computeDiffStatsFromData",{"id":"symbol-name:computeDiffStatsFromData","kind":"symbol","language":"jsts","symbolName":"computeDiffStatsFromData","metadata":{"unresolvedName":"computeDiffStatsFromData"}}],["symbol-name:formatToolName",{"id":"symbol-name:formatToolName","kind":"symbol","language":"jsts","symbolName":"formatToolName","metadata":{"unresolvedName":"formatToolName"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:isReadableTool",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:isReadableTool","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","symbolName":"isReadableTool","symbolKind":"function","exported":false,"metadata":{"line":450,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:computeDiffStatsFromData",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:computeDiffStatsFromData","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","symbolName":"computeDiffStatsFromData","symbolKind":"function","exported":false,"metadata":{"line":455,"column":1,"cyclomaticComplexity":14,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:computeDiffPair",{"id":"symbol-name:computeDiffPair","kind":"symbol","language":"jsts","symbolName":"computeDiffPair","metadata":{"unresolvedName":"computeDiffPair"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:computeDiffPair",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:computeDiffPair","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","symbolName":"computeDiffPair","symbolKind":"function","exported":false,"metadata":{"line":484,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:tool.toLowerCase",{"id":"external:tool.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"tool.toLowerCase"}}],["external:lowerTool.includes",{"id":"external:lowerTool.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"lowerTool.includes"}}],["symbol-name:hasTodos",{"id":"symbol-name:hasTodos","kind":"symbol","language":"jsts","symbolName":"hasTodos","metadata":{"unresolvedName":"hasTodos"}}],["symbol-name:getToolConfig",{"id":"symbol-name:getToolConfig","kind":"symbol","language":"jsts","symbolName":"getToolConfig","metadata":{"unresolvedName":"getToolConfig"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:getTaskChildSessionId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:getTaskChildSessionId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","symbolName":"getTaskChildSessionId","symbolKind":"function","exported":false,"metadata":{"line":520,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:getInputDescription",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:getInputDescription","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","symbolName":"getInputDescription","symbolKind":"function","exported":false,"metadata":{"line":527,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx","metadata":{"lineCount":46,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx:wrapTool",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx:wrapTool","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx","symbolName":"wrapTool","symbolKind":"function","exported":false,"metadata":{"line":29,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":30,"column":10,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/index.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/index.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/index.ts","metadata":{"lineCount":12,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts","metadata":{"lineCount":46,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","metadata":{"lineCount":366,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":6,"column":54,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:defaultExtractData",{"id":"symbol-name:defaultExtractData","kind":"symbol","language":"jsts","symbolName":"defaultExtractData","metadata":{"unresolvedName":"defaultExtractData"}}],["external:expect(extracted.files).toEqual",{"id":"external:expect(extracted.files).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(extracted.files).toEqual"}}],["external:expect(extracted.diagnostics).toEqual",{"id":"external:expect(extracted.diagnostics).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(extracted.diagnostics).toEqual"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/types.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/types.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/types.ts","metadata":{"lineCount":91,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers"}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":32,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:keywords.some",{"id":"external:keywords.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"keywords.some"}}],["external:names.some",{"id":"external:names.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"names.some"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","symbolName":"defaultExtractData","symbolKind":"function","exported":true,"metadata":{"line":63,"column":1,"cyclomaticComplexity":62,"maxNestingDepth":6,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:(metadata.files as MetadataFileEntry[]).map",{"id":"external:(metadata.files as MetadataFileEntry[]).map","kind":"external","language":"jsts","metadata":{"unresolvedName":"(metadata.files as MetadataFileEntry[]).map"}}],["external:diagnostics.push",{"id":"external:diagnostics.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"diagnostics.push"}}],["external:file.split(/[/\\\\]/).pop",{"id":"external:file.split(/[/\\\\]/).pop","kind":"external","language":"jsts","metadata":{"unresolvedName":"file.split(/[/\\\\]/).pop"}}],["external:file.split",{"id":"external:file.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"file.split"}}],["external:diagnostics.filter",{"id":"external:diagnostics.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"diagnostics.filter"}}],["external:result.output.trim",{"id":"external:result.output.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.output.trim"}}],["external:trimmed.startsWith",{"id":"external:trimmed.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"trimmed.startsWith"}}],["external:trimmed.endsWith",{"id":"external:trimmed.endsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"trimmed.endsWith"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:bashExtractData",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:bashExtractData","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","symbolName":"bashExtractData","symbolKind":"function","exported":false,"metadata":{"line":203,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:cwd.trim",{"id":"external:cwd.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"cwd.trim"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:readExtractData",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:readExtractData","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","symbolName":"readExtractData","symbolKind":"function","exported":false,"metadata":{"line":221,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:str.match",{"id":"external:str.match","kind":"external","language":"jsts","metadata":{"unresolvedName":"str.match"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:writeExtractData",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:writeExtractData","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","symbolName":"writeExtractData","symbolKind":"function","exported":false,"metadata":{"line":233,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:editExtractData",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:editExtractData","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","symbolName":"editExtractData","symbolKind":"function","exported":false,"metadata":{"line":249,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:getToolConfig",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:getToolConfig","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","symbolName":"getToolConfig","symbolKind":"function","exported":true,"metadata":{"line":344,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:toolRegistry.find",{"id":"external:toolRegistry.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"toolRegistry.find"}}],["external:config.match",{"id":"external:config.match","kind":"external","language":"jsts","metadata":{"unresolvedName":"config.match"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:getToolIcon",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:getToolIcon","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","symbolName":"getToolIcon","symbolKind":"function","exported":true,"metadata":{"line":351,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:extractToolData",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:extractToolData","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","symbolName":"extractToolData","symbolKind":"function","exported":true,"metadata":{"line":359,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:config.extractData",{"id":"external:config.extractData","kind":"external","language":"jsts","metadata":{"unresolvedName":"config.extractData"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","metadata":{"lineCount":316,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts","metadata":{"lineCount":141,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:BashRenderer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:BashRenderer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","symbolName":"BashRenderer","symbolKind":"function","exported":true,"metadata":{"line":25,"column":1,"cyclomaticComplexity":11,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:data.input?.trim",{"id":"external:data.input?.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"data.input?.trim"}}],["external:data.output?.trim",{"id":"external:data.output?.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"data.output?.trim"}}],["external:data.cwd?.trim",{"id":"external:data.cwd?.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"data.cwd?.trim"}}],["symbol-name:parseAnsi",{"id":"symbol-name:parseAnsi","kind":"symbol","language":"jsts","symbolName":"parseAnsi","metadata":{"unresolvedName":"parseAnsi"}}],["symbol-name:surface",{"id":"symbol-name:surface","kind":"symbol","language":"jsts","symbolName":"surface","metadata":{"unresolvedName":"surface"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":296,"column":21,"cyclomaticComplexity":9,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:TerminalSurface",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:TerminalSurface","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","symbolName":"TerminalSurface","symbolKind":"function","exported":false,"metadata":{"line":82,"column":1,"cyclomaticComplexity":18,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:WorkingDirectoryPrompt",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:WorkingDirectoryPrompt","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","symbolName":"WorkingDirectoryPrompt","symbolKind":"function","exported":false,"metadata":{"line":171,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:truncatePromptPath",{"id":"symbol-name:truncatePromptPath","kind":"symbol","language":"jsts","symbolName":"truncatePromptPath","metadata":{"unresolvedName":"truncatePromptPath"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:truncatePromptPath",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:truncatePromptPath","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","symbolName":"truncatePromptPath","symbolKind":"function","exported":false,"metadata":{"line":206,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:path.includes",{"id":"external:path.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.includes"}}],["external:path.split(/[\\\\/]+/).filter",{"id":"external:path.split(/[\\\\/]+/).filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.split(/[\\\\/]+/).filter"}}],["external:segments.slice(-2).join",{"id":"external:segments.slice(-2).join","kind":"external","language":"jsts","metadata":{"unresolvedName":"segments.slice(-2).join"}}],["external:segments.slice",{"id":"external:segments.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"segments.slice"}}],["external:root.endsWith",{"id":"external:root.endsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"root.endsWith"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:ClickToCopyCommand",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:ClickToCopyCommand","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","symbolName":"ClickToCopyCommand","symbolKind":"function","exported":false,"metadata":{"line":222,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:HighlightedCommand",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:HighlightedCommand","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","symbolName":"HighlightedCommand","symbolKind":"function","exported":false,"metadata":{"line":253,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:tokens.map",{"id":"external:tokens.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"tokens.map"}}],["external:line.map",{"id":"external:line.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"line.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:TerminalCursor",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:TerminalCursor","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","symbolName":"TerminalCursor","symbolKind":"function","exported":false,"metadata":{"line":280,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:AnsiOutput",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:AnsiOutput","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","symbolName":"AnsiOutput","symbolKind":"function","exported":false,"metadata":{"line":293,"column":1,"cyclomaticComplexity":9,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","metadata":{"lineCount":233,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:DefaultRenderer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:DefaultRenderer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","symbolName":"DefaultRenderer","symbolKind":"function","exported":true,"metadata":{"line":15,"column":1,"cyclomaticComplexity":20,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:OutputBlock",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:OutputBlock","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","symbolName":"OutputBlock","symbolKind":"function","exported":false,"metadata":{"line":79,"column":1,"cyclomaticComplexity":14,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:data.files.map",{"id":"external:data.files.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"data.files.map"}}],["symbol-name:formatLabel",{"id":"symbol-name:formatLabel","kind":"symbol","language":"jsts","symbolName":"formatLabel","metadata":{"unresolvedName":"formatLabel"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:FileResultIcon",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:FileResultIcon","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","symbolName":"FileResultIcon","symbolKind":"function","exported":false,"metadata":{"line":156,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":166,"column":16,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:DiagnosticsBlock",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:DiagnosticsBlock","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","symbolName":"DiagnosticsBlock","symbolKind":"function","exported":false,"metadata":{"line":181,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:diagnostics.map",{"id":"external:diagnostics.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"diagnostics.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:formatLabel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:formatLabel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","symbolName":"formatLabel","symbolKind":"function","exported":false,"metadata":{"line":225,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:name\r\n .split(/[_-]/)\r\n .map",{"id":"external:name\r\n .split(/[_-]/)\r\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"name\r\n .split(/[_-]/)\r\n .map"}}],["external:name\r\n .split",{"id":"external:name\r\n .split","kind":"external","language":"jsts","metadata":{"unresolvedName":"name\r\n .split"}}],["external:word.charAt(0).toUpperCase",{"id":"external:word.charAt(0).toUpperCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"word.charAt(0).toUpperCase"}}],["external:word.charAt",{"id":"external:word.charAt","kind":"external","language":"jsts","metadata":{"unresolvedName":"word.charAt"}}],["external:word.slice(1).toLowerCase",{"id":"external:word.slice(1).toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"word.slice(1).toLowerCase"}}],["external:word.slice",{"id":"external:word.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"word.slice"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/index.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/index.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/index.ts","metadata":{"lineCount":7,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","metadata":{"lineCount":244,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:QuestionRenderer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:QuestionRenderer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","symbolName":"QuestionRenderer","symbolKind":"function","exported":true,"metadata":{"line":40,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:buildQAList",{"id":"symbol-name:buildQAList","kind":"symbol","language":"jsts","symbolName":"buildQAList","metadata":{"unresolvedName":"buildQAList"}}],["external:qaList.map",{"id":"external:qaList.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"qaList.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":90,"column":25,"cyclomaticComplexity":5,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:AnsweredQuestion",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:AnsweredQuestion","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","symbolName":"AnsweredQuestion","symbolKind":"function","exported":false,"metadata":{"line":79,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:qa.options.map",{"id":"external:qa.options.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"qa.options.map"}}],["external:qa.answers.includes",{"id":"external:qa.answers.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"qa.answers.includes"}}],["external:qa.answers\r\n .filter",{"id":"external:qa.answers\r\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"qa.answers\r\n .filter"}}],["external:qa.options.some",{"id":"external:qa.options.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"qa.options.some"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:buildQAList",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:buildQAList","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","symbolName":"buildQAList","symbolKind":"function","exported":false,"metadata":{"line":139,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:extractQuestions",{"id":"symbol-name:extractQuestions","kind":"symbol","language":"jsts","symbolName":"extractQuestions","metadata":{"unresolvedName":"extractQuestions"}}],["symbol-name:extractMetadataAnswers",{"id":"symbol-name:extractMetadataAnswers","kind":"symbol","language":"jsts","symbolName":"extractMetadataAnswers","metadata":{"unresolvedName":"extractMetadataAnswers"}}],["external:questions.map",{"id":"external:questions.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"questions.map"}}],["symbol-name:parseAnswersFromOutput",{"id":"symbol-name:parseAnswersFromOutput","kind":"symbol","language":"jsts","symbolName":"parseAnswersFromOutput","metadata":{"unresolvedName":"parseAnswersFromOutput"}}],["external:answerMap.get",{"id":"external:answerMap.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"answerMap.get"}}],["external:pairs.push",{"id":"external:pairs.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"pairs.push"}}],["external:answers.map",{"id":"external:answers.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"answers.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:extractQuestions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:extractQuestions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","symbolName":"extractQuestions","symbolKind":"function","exported":false,"metadata":{"line":184,"column":1,"cyclomaticComplexity":8,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:raw.map",{"id":"external:raw.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"raw.map"}}],["external:q.options.map",{"id":"external:q.options.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"q.options.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:extractMetadataAnswers",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:extractMetadataAnswers","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","symbolName":"extractMetadataAnswers","symbolKind":"function","exported":false,"metadata":{"line":209,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:answers.every",{"id":"external:answers.every","kind":"external","language":"jsts","metadata":{"unresolvedName":"answers.every"}}],["external:a.every",{"id":"external:a.every","kind":"external","language":"jsts","metadata":{"unresolvedName":"a.every"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:parseAnswersFromOutput",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:parseAnswersFromOutput","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","symbolName":"parseAnswersFromOutput","symbolKind":"function","exported":false,"metadata":{"line":225,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:regex.exec",{"id":"external:regex.exec","kind":"external","language":"jsts","metadata":{"unresolvedName":"regex.exec"}}],["external:rawAnswer\r\n .split(', ')\r\n .map(s => s.trim())\r\n .filter",{"id":"external:rawAnswer\r\n .split(', ')\r\n .map(s => s.trim())\r\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"rawAnswer\r\n .split(', ')\r\n .map(s => s.trim())\r\n .filter"}}],["external:rawAnswer\r\n .split(', ')\r\n .map",{"id":"external:rawAnswer\r\n .split(', ')\r\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"rawAnswer\r\n .split(', ')\r\n .map"}}],["external:rawAnswer\r\n .split",{"id":"external:rawAnswer\r\n .split","kind":"external","language":"jsts","metadata":{"unresolvedName":"rawAnswer\r\n .split"}}],["external:s.trim",{"id":"external:s.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"s.trim"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","metadata":{"lineCount":438,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":397,"column":24,"cyclomaticComplexity":7,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:abortSession",{"id":"symbol-name:abortSession","kind":"symbol","language":"jsts","symbolName":"abortSession","metadata":{"unresolvedName":"abortSession"}}],["external:messageStore.setLoadState",{"id":"external:messageStore.setLoadState","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.setLoadState"}}],["external:getSessionMessages(sessionId, 20)\r\n .then",{"id":"external:getSessionMessages(sessionId, 20)\r\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSessionMessages(sessionId, 20)\r\n .then"}}],["external:messageStore.setMessages",{"id":"external:messageStore.setMessages","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.setMessages"}}],["external:msg.parts.some",{"id":"external:msg.parts.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"msg.parts.some"}}],["external:visibleMessages.map",{"id":"external:visibleMessages.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"visibleMessages.map"}}],["external:p.text?.trim",{"id":"external:p.text?.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"p.text?.trim"}}],["external:textParts\r\n .map(p => p.text)\r\n .join('\\n')\r\n .trim",{"id":"external:textParts\r\n .map(p => p.text)\r\n .join('\\n')\r\n .trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"textParts\r\n .map(p => p.text)\r\n .join('\\n')\r\n .trim"}}],["external:textParts\r\n .map(p => p.text)\r\n .join",{"id":"external:textParts\r\n .map(p => p.text)\r\n .join","kind":"external","language":"jsts","metadata":{"unresolvedName":"textParts\r\n .map(p => p.text)\r\n .join"}}],["external:textParts\r\n .map",{"id":"external:textParts\r\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"textParts\r\n .map"}}],["external:textContent.slice",{"id":"external:textContent.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"textContent.slice"}}],["external:toolParts.map",{"id":"external:toolParts.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"toolParts.map"}}],["external:title.slice",{"id":"external:title.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"title.slice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:MessageSkeleton",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:MessageSkeleton","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","symbolName":"MessageSkeleton","symbolKind":"function","exported":false,"metadata":{"line":425,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx","metadata":{"lineCount":113,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts","metadata":{"lineCount":21,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:TodoRenderer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:TodoRenderer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx","symbolName":"TodoRenderer","symbolKind":"function","exported":true,"metadata":{"line":23,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:extractTodos",{"id":"symbol-name:extractTodos","kind":"symbol","language":"jsts","symbolName":"extractTodos","metadata":{"unresolvedName":"extractTodos"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:TodoList",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:TodoList","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx","symbolName":"TodoList","symbolKind":"function","exported":false,"metadata":{"line":37,"column":1,"cyclomaticComplexity":8,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:todos.filter",{"id":"external:todos.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"todos.filter"}}],["symbol-name:getTodoIcon",{"id":"symbol-name:getTodoIcon","kind":"symbol","language":"jsts","symbolName":"getTodoIcon","metadata":{"unresolvedName":"getTodoIcon"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:getTodoIcon",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:getTodoIcon","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx","symbolName":"getTodoIcon","symbolKind":"function","exported":false,"metadata":{"line":93,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts:extractTodos",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts:extractTodos","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts","symbolName":"extractTodos","symbolKind":"function","exported":true,"metadata":{"line":10,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts:hasTodos",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts:hasTodos","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts","symbolName":"hasTodos","symbolKind":"function","exported":true,"metadata":{"line":18,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/index.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/index.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/index.ts","metadata":{"lineCount":4,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx","metadata":{"lineCount":71,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","metadata":{"lineCount":262,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":45,"column":76,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:expect(onSelectProject).not.toHaveBeenCalled",{"id":"external:expect(onSelectProject).not.toHaveBeenCalled","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(onSelectProject).not.toHaveBeenCalled"}}],["external:within(dialog).getByRole",{"id":"external:within(dialog).getByRole","kind":"external","language":"jsts","metadata":{"unresolvedName":"within(dialog).getByRole"}}],["symbol-name:within",{"id":"symbol-name:within","kind":"symbol","language":"jsts","symbolName":"within","metadata":{"unresolvedName":"within"}}],["external:expect(onRemoveProject).toHaveBeenCalledWith",{"id":"external:expect(onRemoveProject).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(onRemoveProject).toHaveBeenCalledWith"}}],["external:expect(projectRow).not.toBeNull",{"id":"external:expect(projectRow).not.toBeNull","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(projectRow).not.toBeNull"}}],["external:expect(onSelectProject).toHaveBeenCalledWith",{"id":"external:expect(onSelectProject).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(onSelectProject).toHaveBeenCalledWith"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","symbolName":"ProjectSelector","symbolKind":"function","exported":true,"metadata":{"line":24,"column":1,"cyclomaticComplexity":22,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:dropdownRef.current?.contains",{"id":"external:dropdownRef.current?.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"dropdownRef.current?.contains"}}],["external:worktree.replace(/\\\\/g, '/').split('/').filter",{"id":"external:worktree.replace(/\\\\/g, '/').split('/').filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"worktree.replace(/\\\\/g, '/').split('/').filter"}}],["external:worktree.replace(/\\\\/g, '/').split",{"id":"external:worktree.replace(/\\\\/g, '/').split","kind":"external","language":"jsts","metadata":{"unresolvedName":"worktree.replace(/\\\\/g, '/').split"}}],["external:worktree.replace",{"id":"external:worktree.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"worktree.replace"}}],["external:projects.filter",{"id":"external:projects.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"projects.filter"}}],["symbol-name:getDisplayName",{"id":"symbol-name:getDisplayName","kind":"symbol","language":"jsts","symbolName":"getDisplayName","metadata":{"unresolvedName":"getDisplayName"}}],["external:otherProjects.map",{"id":"external:otherProjects.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"otherProjects.map"}}],["symbol-name:onAddProject",{"id":"symbol-name:onAddProject","kind":"symbol","language":"jsts","symbolName":"onAddProject","metadata":{"unresolvedName":"onAddProject"}}],["symbol-name:onRemoveProject",{"id":"symbol-name:onRemoveProject","kind":"symbol","language":"jsts","symbolName":"onRemoveProject","metadata":{"unresolvedName":"onRemoveProject"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":248,"column":20,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:handleClickOutside",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:handleClickOutside","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","symbolName":"handleClickOutside","symbolKind":"function","exported":false,"metadata":{"line":49,"column":32,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectItem",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectItem","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","symbolName":"ProjectItem","symbolKind":"function","exported":false,"metadata":{"line":215,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","metadata":{"lineCount":147,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","metadata":{"lineCount":902,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":119,"column":61,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:useSessionActiveEntryMock.mockReturnValue",{"id":"external:useSessionActiveEntryMock.mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"useSessionActiveEntryMock.mockReturnValue"}}],["external:useHasUnreadCompletedNotificationMock.mockReturnValue",{"id":"external:useHasUnreadCompletedNotificationMock.mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"useHasUnreadCompletedNotificationMock.mockReturnValue"}}],["external:markSessionNotificationsReadMock.mockReset",{"id":"external:markSessionNotificationsReadMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"markSessionNotificationsReadMock.mockReset"}}],["external:expect(markSessionNotificationsReadMock).toHaveBeenCalledWith",{"id":"external:expect(markSessionNotificationsReadMock).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(markSessionNotificationsReadMock).toHaveBeenCalledWith"}}],["external:expect(sessionRow).not.toBeNull",{"id":"external:expect(sessionRow).not.toBeNull","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(sessionRow).not.toBeNull"}}],["external:expect(screen.getByRole('button', { name: /project-a/i })).toBeInTheDocument",{"id":"external:expect(screen.getByRole('button', { name: /project-a/i })).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: /project-a/i })).toBeInTheDocument"}}],["external:expect(screen.getByRole('button', { name: /project-b/i })).toBeInTheDocument",{"id":"external:expect(screen.getByRole('button', { name: /project-b/i })).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: /project-b/i })).toBeInTheDocument"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/dateUtils.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/dateUtils.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/dateUtils.ts","metadata":{"lineCount":20,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","metadata":{"lineCount":65,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","symbolName":"SessionList","symbolKind":"function","exported":true,"metadata":{"line":42,"column":1,"cyclomaticComplexity":30,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["symbol-name:onLoadMore",{"id":"symbol-name:onLoadMore","kind":"symbol","language":"jsts","symbolName":"onLoadMore","metadata":{"unresolvedName":"onLoadMore"}}],["symbol-name:groupSessionsByProject",{"id":"symbol-name:groupSessionsByProject","kind":"symbol","language":"jsts","symbolName":"groupSessionsByProject","metadata":{"unresolvedName":"groupSessionsByProject"}}],["symbol-name:setCollapsedProjectKeys",{"id":"symbol-name:setCollapsedProjectKeys","kind":"symbol","language":"jsts","symbolName":"setCollapsedProjectKeys","metadata":{"unresolvedName":"setCollapsedProjectKeys"}}],["symbol-name:onSearchChange",{"id":"symbol-name:onSearchChange","kind":"symbol","language":"jsts","symbolName":"onSearchChange","metadata":{"unresolvedName":"onSearchChange"}}],["external:projectGroups.map",{"id":"external:projectGroups.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"projectGroups.map"}}],["external:collapsedProjectKeys.has",{"id":"external:collapsedProjectKeys.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"collapsedProjectKeys.has"}}],["symbol-name:toggleProjectGroup",{"id":"symbol-name:toggleProjectGroup","kind":"symbol","language":"jsts","symbolName":"toggleProjectGroup","metadata":{"unresolvedName":"toggleProjectGroup"}}],["external:group.sessions.map",{"id":"external:group.sessions.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"group.sessions.map"}}],["symbol-name:onRename",{"id":"symbol-name:onRename","kind":"symbol","language":"jsts","symbolName":"onRename","metadata":{"unresolvedName":"onRename"}}],["symbol-name:onDelete",{"id":"symbol-name:onDelete","kind":"symbol","language":"jsts","symbolName":"onDelete","metadata":{"unresolvedName":"onDelete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":781,"column":20,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","symbolName":"SessionListItem","symbolKind":"function","exported":true,"metadata":{"line":310,"column":1,"cyclomaticComplexity":137,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["symbol-name:useSessionActiveEntry",{"id":"symbol-name:useSessionActiveEntry","kind":"symbol","language":"jsts","symbolName":"useSessionActiveEntry","metadata":{"unresolvedName":"useSessionActiveEntry"}}],["symbol-name:useHasUnreadCompletedNotification",{"id":"symbol-name:useHasUnreadCompletedNotification","kind":"symbol","language":"jsts","symbolName":"useHasUnreadCompletedNotification","metadata":{"unresolvedName":"useHasUnreadCompletedNotification"}}],["symbol-name:handleSaveEdit",{"id":"symbol-name:handleSaveEdit","kind":"symbol","language":"jsts","symbolName":"handleSaveEdit","metadata":{"unresolvedName":"handleSaveEdit"}}],["symbol-name:handleCancelEdit",{"id":"symbol-name:handleCancelEdit","kind":"symbol","language":"jsts","symbolName":"handleCancelEdit","metadata":{"unresolvedName":"handleCancelEdit"}}],["external:notificationStore.markSessionNotificationsRead",{"id":"external:notificationStore.markSessionNotificationsRead","kind":"external","language":"jsts","metadata":{"unresolvedName":"notificationStore.markSessionNotificationsRead"}}],["symbol-name:onToggleCheck",{"id":"symbol-name:onToggleCheck","kind":"symbol","language":"jsts","symbolName":"onToggleCheck","metadata":{"unresolvedName":"onToggleCheck"}}],["symbol-name:formatRelativeTime",{"id":"symbol-name:formatRelativeTime","kind":"symbol","language":"jsts","symbolName":"formatRelativeTime","metadata":{"unresolvedName":"formatRelativeTime"}}],["external:session.directory.replace(/\\\\/g, '/').split('/').filter(Boolean).pop",{"id":"external:session.directory.replace(/\\\\/g, '/').split('/').filter(Boolean).pop","kind":"external","language":"jsts","metadata":{"unresolvedName":"session.directory.replace(/\\\\/g, '/').split('/').filter(Boolean).pop"}}],["external:session.directory.replace(/\\\\/g, '/').split('/').filter",{"id":"external:session.directory.replace(/\\\\/g, '/').split('/').filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"session.directory.replace(/\\\\/g, '/').split('/').filter"}}],["external:session.directory.replace(/\\\\/g, '/').split",{"id":"external:session.directory.replace(/\\\\/g, '/').split","kind":"external","language":"jsts","metadata":{"unresolvedName":"session.directory.replace(/\\\\/g, '/').split"}}],["external:session.directory.replace",{"id":"external:session.directory.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"session.directory.replace"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleDelete",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleDelete","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","symbolName":"handleDelete","symbolKind":"function","exported":false,"metadata":{"line":354,"column":24,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleStartEdit",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleStartEdit","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","symbolName":"handleStartEdit","symbolKind":"function","exported":false,"metadata":{"line":360,"column":27,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleSaveEdit",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleSaveEdit","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","symbolName":"handleSaveEdit","symbolKind":"function","exported":false,"metadata":{"line":367,"column":26,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleCancelEdit",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleCancelEdit","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","symbolName":"handleCancelEdit","symbolKind":"function","exported":false,"metadata":{"line":375,"column":28,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleKeyDown",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleKeyDown","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","symbolName":"handleKeyDown","symbolKind":"function","exported":false,"metadata":{"line":380,"column":25,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleClickOutside",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleClickOutside","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","symbolName":"handleClickOutside","symbolKind":"function","exported":false,"metadata":{"line":418,"column":32,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleClick",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleClick","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","symbolName":"handleClick","symbolKind":"function","exported":false,"metadata":{"line":445,"column":23,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleCheckClick",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleCheckClick","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","symbolName":"handleCheckClick","symbolKind":"function","exported":false,"metadata":{"line":456,"column":28,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleCheckMouseDown",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleCheckMouseDown","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","symbolName":"handleCheckMouseDown","symbolKind":"function","exported":false,"metadata":{"line":461,"column":32,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleDragStart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleDragStart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","symbolName":"handleDragStart","symbolKind":"function","exported":false,"metadata":{"line":467,"column":27,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:LoadingSpinner",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:LoadingSpinner","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","symbolName":"LoadingSpinner","symbolKind":"function","exported":false,"metadata":{"line":898,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts","metadata":{"lineCount":46,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:session",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:session","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts","symbolName":"session","symbolKind":"function","exported":false,"metadata":{"line":5,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":35,"column":81,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["symbol-name:getProjectNameFromDirectory",{"id":"symbol-name:getProjectNameFromDirectory","kind":"symbol","language":"jsts","symbolName":"getProjectNameFromDirectory","metadata":{"unresolvedName":"getProjectNameFromDirectory"}}],["external:expect(getProjectNameFromDirectory('/home/user/work/my-app')).toBe",{"id":"external:expect(getProjectNameFromDirectory('/home/user/work/my-app')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getProjectNameFromDirectory('/home/user/work/my-app')).toBe"}}],["external:expect(getProjectNameFromDirectory('')).toBe",{"id":"external:expect(getProjectNameFromDirectory('')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getProjectNameFromDirectory('')).toBe"}}],["symbol-name:session",{"id":"symbol-name:session","kind":"symbol","language":"jsts","symbolName":"session","metadata":{"unresolvedName":"session"}}],["external:expect(groups.map(group => group.name)).toEqual",{"id":"external:expect(groups.map(group => group.name)).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(groups.map(group => group.name)).toEqual"}}],["external:groups.map",{"id":"external:groups.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"groups.map"}}],["external:expect(groups[0].sessions.map(item => item.id)).toEqual",{"id":"external:expect(groups[0].sessions.map(item => item.id)).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(groups[0].sessions.map(item => item.id)).toEqual"}}],["external:groups[0].sessions.map",{"id":"external:groups[0].sessions.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"groups[0].sessions.map"}}],["external:expect(groups[1].sessions.map(item => item.id)).toEqual",{"id":"external:expect(groups[1].sessions.map(item => item.id)).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(groups[1].sessions.map(item => item.id)).toEqual"}}],["external:groups[1].sessions.map",{"id":"external:groups[1].sessions.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"groups[1].sessions.map"}}],["external:expect(groups).toHaveLength",{"id":"external:expect(groups).toHaveLength","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(groups).toHaveLength"}}],["external:expect(groups[0].name).toBe",{"id":"external:expect(groups[0].name).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(groups[0].name).toBe"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:normalizeProjectDirectory",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:normalizeProjectDirectory","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","symbolName":"normalizeProjectDirectory","symbolKind":"function","exported":true,"metadata":{"line":11,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:(directory || 'unknown').replace(/\\\\/g, '/').replace",{"id":"external:(directory || 'unknown').replace(/\\\\/g, '/').replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"(directory || 'unknown').replace(/\\\\/g, '/').replace"}}],["external:(directory || 'unknown').replace",{"id":"external:(directory || 'unknown').replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"(directory || 'unknown').replace"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:getProjectNameFromDirectory",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:getProjectNameFromDirectory","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","symbolName":"getProjectNameFromDirectory","symbolKind":"function","exported":true,"metadata":{"line":15,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["symbol-name:normalizeProjectDirectory",{"id":"symbol-name:normalizeProjectDirectory","kind":"symbol","language":"jsts","symbolName":"normalizeProjectDirectory","metadata":{"unresolvedName":"normalizeProjectDirectory"}}],["external:normalized.split('/').filter",{"id":"external:normalized.split('/').filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalized.split('/').filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:getUpdatedTime",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:getUpdatedTime","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","symbolName":"getUpdatedTime","symbolKind":"function","exported":false,"metadata":{"line":22,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:sessionMatchesSearch",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:sessionMatchesSearch","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","symbolName":"sessionMatchesSearch","symbolKind":"function","exported":false,"metadata":{"line":26,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:haystack.includes",{"id":"external:haystack.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"haystack.includes"}}],["external:search.toLowerCase",{"id":"external:search.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"search.toLowerCase"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","symbolName":"groupSessionsByProject","symbolKind":"function","exported":true,"metadata":{"line":35,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["symbol-name:sessionMatchesSearch",{"id":"symbol-name:sessionMatchesSearch","kind":"symbol","language":"jsts","symbolName":"sessionMatchesSearch","metadata":{"unresolvedName":"sessionMatchesSearch"}}],["external:search.trim",{"id":"external:search.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"search.trim"}}],["symbol-name:getUpdatedTime",{"id":"symbol-name:getUpdatedTime","kind":"symbol","language":"jsts","symbolName":"getUpdatedTime","metadata":{"unresolvedName":"getUpdatedTime"}}],["external:existing.sessions.push",{"id":"external:existing.sessions.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"existing.sessions.push"}}],["external:Array.from(groups.values())\n .map",{"id":"external:Array.from(groups.values())\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"Array.from(groups.values())\n .map"}}],["external:[...group.sessions].sort",{"id":"external:[...group.sessions].sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"[...group.sessions].sort"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","metadata":{"lineCount":174,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","metadata":{"lineCount":190,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","metadata":{"lineCount":203,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:openExternalUrl",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:openExternalUrl","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","symbolName":"openExternalUrl","symbolKind":"function","exported":false,"metadata":{"line":11,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:import('@tauri-apps/plugin-opener')\r\n .then",{"id":"external:import('@tauri-apps/plugin-opener')\r\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"import('@tauri-apps/plugin-opener')\r\n .then"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","symbolName":"AboutSettings","symbolKind":"function","exported":true,"metadata":{"line":22,"column":1,"cyclomaticComplexity":21,"maxNestingDepth":4,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:new Date(latestRelease.publishedAt).toLocaleString",{"id":"external:new Date(latestRelease.publishedAt).toLocaleString","kind":"external","language":"jsts","metadata":{"unresolvedName":"new Date(latestRelease.publishedAt).toLocaleString"}}],["symbol-name:openExternalUrl",{"id":"symbol-name:openExternalUrl","kind":"symbol","language":"jsts","symbolName":"openExternalUrl","metadata":{"unresolvedName":"openExternalUrl"}}],["symbol-name:setBackupError",{"id":"symbol-name:setBackupError","kind":"symbol","language":"jsts","symbolName":"setBackupError","metadata":{"unresolvedName":"setBackupError"}}],["symbol-name:setBackupBusy",{"id":"symbol-name:setBackupBusy","kind":"symbol","language":"jsts","symbolName":"setBackupBusy","metadata":{"unresolvedName":"setBackupBusy"}}],["symbol-name:exportSettingsBackup",{"id":"symbol-name:exportSettingsBackup","kind":"symbol","language":"jsts","symbolName":"exportSettingsBackup","metadata":{"unresolvedName":"exportSettingsBackup"}}],["symbol-name:previewBackupMeta",{"id":"symbol-name:previewBackupMeta","kind":"symbol","language":"jsts","symbolName":"previewBackupMeta","metadata":{"unresolvedName":"previewBackupMeta"}}],["external:new Date(createdAt).toLocaleString",{"id":"external:new Date(createdAt).toLocaleString","kind":"external","language":"jsts","metadata":{"unresolvedName":"new Date(createdAt).toLocaleString"}}],["symbol-name:importSettingsBackup",{"id":"symbol-name:importSettingsBackup","kind":"symbol","language":"jsts","symbolName":"importSettingsBackup","metadata":{"unresolvedName":"importSettingsBackup"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":62,"column":5,"cyclomaticComplexity":6,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","metadata":{"lineCount":132,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","symbolName":"AgentSettings","symbolKind":"function","exported":true,"metadata":{"line":7,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setAutoApprove",{"id":"symbol-name:setAutoApprove","kind":"symbol","language":"jsts","symbolName":"setAutoApprove","metadata":{"unresolvedName":"setAutoApprove"}}],["external:autoApproveStore.setEnabled",{"id":"external:autoApproveStore.setEnabled","kind":"external","language":"jsts","metadata":{"unresolvedName":"autoApproveStore.setEnabled"}}],["external:autoApproveStore.clearAllRules",{"id":"external:autoApproveStore.clearAllRules","kind":"external","language":"jsts","metadata":{"unresolvedName":"autoApproveStore.clearAllRules"}}],["symbol-name:setQueueFollowupMessages",{"id":"symbol-name:setQueueFollowupMessages","kind":"symbol","language":"jsts","symbolName":"setQueueFollowupMessages","metadata":{"unresolvedName":"setQueueFollowupMessages"}}],["external:themeStore.setQueueFollowupMessages",{"id":"external:themeStore.setQueueFollowupMessages","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.setQueueFollowupMessages"}}],["symbol-name:setDescriptiveToolSteps",{"id":"symbol-name:setDescriptiveToolSteps","kind":"symbol","language":"jsts","symbolName":"setDescriptiveToolSteps","metadata":{"unresolvedName":"setDescriptiveToolSteps"}}],["external:themeStore.setDescriptiveToolSteps",{"id":"external:themeStore.setDescriptiveToolSteps","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.setDescriptiveToolSteps"}}],["symbol-name:setInlineToolRequests",{"id":"symbol-name:setInlineToolRequests","kind":"symbol","language":"jsts","symbolName":"setInlineToolRequests","metadata":{"unresolvedName":"setInlineToolRequests"}}],["external:themeStore.setInlineToolRequests",{"id":"external:themeStore.setInlineToolRequests","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.setInlineToolRequests"}}],["symbol-name:setCompactInlinePermission",{"id":"symbol-name:setCompactInlinePermission","kind":"symbol","language":"jsts","symbolName":"setCompactInlinePermission","metadata":{"unresolvedName":"setCompactInlinePermission"}}],["external:themeStore.setCompactInlinePermission",{"id":"external:themeStore.setCompactInlinePermission","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.setCompactInlinePermission"}}],["symbol-name:setToolCardStyle",{"id":"symbol-name:setToolCardStyle","kind":"symbol","language":"jsts","symbolName":"setToolCardStyle","metadata":{"unresolvedName":"setToolCardStyle"}}],["external:themeStore.setToolCardStyle",{"id":"external:themeStore.setToolCardStyle","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.setToolCardStyle"}}],["symbol-name:setImmersiveMode",{"id":"symbol-name:setImmersiveMode","kind":"symbol","language":"jsts","symbolName":"setImmersiveMode","metadata":{"unresolvedName":"setImmersiveMode"}}],["external:themeStore.setImmersiveMode",{"id":"external:themeStore.setImmersiveMode","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.setImmersiveMode"}}],["symbol-name:handleToolCardStyleChange",{"id":"symbol-name:handleToolCardStyleChange","kind":"symbol","language":"jsts","symbolName":"handleToolCardStyleChange","metadata":{"unresolvedName":"handleToolCardStyleChange"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleAutoApprove",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleAutoApprove","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","symbolName":"handleAutoApprove","symbolKind":"function","exported":false,"metadata":{"line":17,"column":29,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleQueueFollowupMessagesToggle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleQueueFollowupMessagesToggle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","symbolName":"handleQueueFollowupMessagesToggle","symbolKind":"function","exported":false,"metadata":{"line":24,"column":45,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleDescriptiveToolStepsToggle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleDescriptiveToolStepsToggle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","symbolName":"handleDescriptiveToolStepsToggle","symbolKind":"function","exported":false,"metadata":{"line":30,"column":44,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleInlineToolRequestsToggle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleInlineToolRequestsToggle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","symbolName":"handleInlineToolRequestsToggle","symbolKind":"function","exported":false,"metadata":{"line":36,"column":42,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleCompactInlinePermissionToggle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleCompactInlinePermissionToggle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","symbolName":"handleCompactInlinePermissionToggle","symbolKind":"function","exported":false,"metadata":{"line":42,"column":47,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleToolCardStyleChange",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleToolCardStyleChange","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","symbolName":"handleToolCardStyleChange","symbolKind":"function","exported":false,"metadata":{"line":48,"column":37,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleImmersiveModeToggle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleImmersiveModeToggle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","symbolName":"handleImmersiveModeToggle","symbolKind":"function","exported":false,"metadata":{"line":53,"column":37,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","metadata":{"lineCount":720,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes"}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:toCssHsl",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:toCssHsl","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","symbolName":"toCssHsl","symbolKind":"function","exported":false,"metadata":{"line":22,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:getPresetPreviewColors",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:getPresetPreviewColors","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","symbolName":"getPresetPreviewColors","symbolKind":"function","exported":false,"metadata":{"line":26,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getThemePreset",{"id":"symbol-name:getThemePreset","kind":"symbol","language":"jsts","symbolName":"getThemePreset","metadata":{"unresolvedName":"getThemePreset"}}],["symbol-name:toCssHsl",{"id":"symbol-name:toCssHsl","kind":"symbol","language":"jsts","symbolName":"toCssHsl","metadata":{"unresolvedName":"toCssHsl"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:getSnippetFileName",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:getSnippetFileName","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","symbolName":"getSnippetFileName","symbolKind":"function","exported":false,"metadata":{"line":38,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:name\n .trim()\n .replace(/[<>:\"/\\\\|?*]/g, '')\n .replace",{"id":"external:name\n .trim()\n .replace(/[<>:\"/\\\\|?*]/g, '')\n .replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"name\n .trim()\n .replace(/[<>:\"/\\\\|?*]/g, '')\n .replace"}}],["external:name\n .trim()\n .replace",{"id":"external:name\n .trim()\n .replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"name\n .trim()\n .replace"}}],["external:name\n .trim",{"id":"external:name\n .trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"name\n .trim"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:PresetCard",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:PresetCard","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","symbolName":"PresetCard","symbolKind":"function","exported":false,"metadata":{"line":47,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getPresetPreviewColors",{"id":"symbol-name:getPresetPreviewColors","kind":"symbol","language":"jsts","symbolName":"getPresetPreviewColors","metadata":{"unresolvedName":"getPresetPreviewColors"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:FontScaleSlider",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:FontScaleSlider","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","symbolName":"FontScaleSlider","symbolKind":"function","exported":false,"metadata":{"line":124,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:CustomCSSEditor",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:CustomCSSEditor","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","symbolName":"CustomCSSEditor","symbolKind":"function","exported":false,"metadata":{"line":163,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setLocalValue",{"id":"symbol-name:setLocalValue","kind":"symbol","language":"jsts","symbolName":"setLocalValue","metadata":{"unresolvedName":"setLocalValue"}}],["symbol-name:onImportFile",{"id":"symbol-name:onImportFile","kind":"symbol","language":"jsts","symbolName":"onImportFile","metadata":{"unresolvedName":"onImportFile"}}],["external:reader.readAsText",{"id":"external:reader.readAsText","kind":"external","language":"jsts","metadata":{"unresolvedName":"reader.readAsText"}}],["external:localValue.trim",{"id":"external:localValue.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"localValue.trim"}}],["symbol-name:onLoadTemplate",{"id":"symbol-name:onLoadTemplate","kind":"symbol","language":"jsts","symbolName":"onLoadTemplate","metadata":{"unresolvedName":"onLoadTemplate"}}],["symbol-name:handleChange",{"id":"symbol-name:handleChange","kind":"symbol","language":"jsts","symbolName":"handleChange","metadata":{"unresolvedName":"handleChange"}}],["symbol-name:onClear",{"id":"symbol-name:onClear","kind":"symbol","language":"jsts","symbolName":"onClear","metadata":{"unresolvedName":"onClear"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":695,"column":22,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleChange",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleChange","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","symbolName":"handleChange","symbolKind":"function","exported":false,"metadata":{"line":186,"column":24,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleFileImport",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleFileImport","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","symbolName":"handleFileImport","symbolKind":"function","exported":false,"metadata":{"line":192,"column":28,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:SavedSnippetItem",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:SavedSnippetItem","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","symbolName":"SavedSnippetItem","symbolKind":"function","exported":false,"metadata":{"line":430,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:snippet.css.slice",{"id":"external:snippet.css.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"snippet.css.slice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","symbolName":"AppearanceSettings","symbolKind":"function","exported":true,"metadata":{"line":489,"column":1,"cyclomaticComplexity":22,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:customCSSSnippets.find",{"id":"external:customCSSSnippets.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"customCSSSnippets.find"}}],["symbol-name:clearActiveCustomCSSSnippet",{"id":"symbol-name:clearActiveCustomCSSSnippet","kind":"symbol","language":"jsts","symbolName":"clearActiveCustomCSSSnippet","metadata":{"unresolvedName":"clearActiveCustomCSSSnippet"}}],["symbol-name:setCustomCSS",{"id":"symbol-name:setCustomCSS","kind":"symbol","language":"jsts","symbolName":"setCustomCSS","metadata":{"unresolvedName":"setCustomCSS"}}],["external:snippetName.trim",{"id":"external:snippetName.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"snippetName.trim"}}],["external:customCSS.trim",{"id":"external:customCSS.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"customCSS.trim"}}],["symbol-name:saveCustomCSSSnippet",{"id":"symbol-name:saveCustomCSSSnippet","kind":"symbol","language":"jsts","symbolName":"saveCustomCSSSnippet","metadata":{"unresolvedName":"saveCustomCSSSnippet"}}],["symbol-name:updateCustomCSSSnippet",{"id":"symbol-name:updateCustomCSSSnippet","kind":"symbol","language":"jsts","symbolName":"updateCustomCSSSnippet","metadata":{"unresolvedName":"updateCustomCSSSnippet"}}],["symbol-name:deleteCustomCSSSnippet",{"id":"symbol-name:deleteCustomCSSSnippet","kind":"symbol","language":"jsts","symbolName":"deleteCustomCSSSnippet","metadata":{"unresolvedName":"deleteCustomCSSSnippet"}}],["symbol-name:getSnippetFileName",{"id":"symbol-name:getSnippetFileName","kind":"symbol","language":"jsts","symbolName":"getSnippetFileName","metadata":{"unresolvedName":"getSnippetFileName"}}],["external:availablePresets.map",{"id":"external:availablePresets.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"availablePresets.map"}}],["symbol-name:setPresetWithAnimation",{"id":"symbol-name:setPresetWithAnimation","kind":"symbol","language":"jsts","symbolName":"setPresetWithAnimation","metadata":{"unresolvedName":"setPresetWithAnimation"}}],["symbol-name:setSnippetDraft",{"id":"symbol-name:setSnippetDraft","kind":"symbol","language":"jsts","symbolName":"setSnippetDraft","metadata":{"unresolvedName":"setSnippetDraft"}}],["external:customCSSSnippets.map",{"id":"external:customCSSSnippets.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"customCSSSnippets.map"}}],["symbol-name:applyCustomCSSSnippet",{"id":"symbol-name:applyCustomCSSSnippet","kind":"symbol","language":"jsts","symbolName":"applyCustomCSSSnippet","metadata":{"unresolvedName":"applyCustomCSSSnippet"}}],["symbol-name:handleExportSnippet",{"id":"symbol-name:handleExportSnippet","kind":"symbol","language":"jsts","symbolName":"handleExportSnippet","metadata":{"unresolvedName":"handleExportSnippet"}}],["symbol-name:handleDeleteSnippet",{"id":"symbol-name:handleDeleteSnippet","kind":"symbol","language":"jsts","symbolName":"handleDeleteSnippet","metadata":{"unresolvedName":"handleDeleteSnippet"}}],["symbol-name:setThemeWithAnimation",{"id":"symbol-name:setThemeWithAnimation","kind":"symbol","language":"jsts","symbolName":"setThemeWithAnimation","metadata":{"unresolvedName":"setThemeWithAnimation"}}],["symbol-name:setGlassEffect",{"id":"symbol-name:setGlassEffect","kind":"symbol","language":"jsts","symbolName":"setGlassEffect","metadata":{"unresolvedName":"setGlassEffect"}}],["symbol-name:setUIFontScale",{"id":"symbol-name:setUIFontScale","kind":"symbol","language":"jsts","symbolName":"setUIFontScale","metadata":{"unresolvedName":"setUIFontScale"}}],["symbol-name:setCodeFontScale",{"id":"symbol-name:setCodeFontScale","kind":"symbol","language":"jsts","symbolName":"setCodeFontScale","metadata":{"unresolvedName":"setCodeFontScale"}}],["external:i18n.changeLanguage",{"id":"external:i18n.changeLanguage","kind":"external","language":"jsts","metadata":{"unresolvedName":"i18n.changeLanguage"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleImportCSS",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleImportCSS","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","symbolName":"handleImportCSS","symbolKind":"function","exported":false,"metadata":{"line":525,"column":27,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleSaveNewSnippet",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleSaveNewSnippet","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","symbolName":"handleSaveNewSnippet","symbolKind":"function","exported":false,"metadata":{"line":530,"column":32,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleRenameSnippet",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleRenameSnippet","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","symbolName":"handleRenameSnippet","symbolKind":"function","exported":false,"metadata":{"line":537,"column":31,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleUpdateSnippet",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleUpdateSnippet","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","symbolName":"handleUpdateSnippet","symbolKind":"function","exported":false,"metadata":{"line":543,"column":31,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleDeleteSnippet",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleDeleteSnippet","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","symbolName":"handleDeleteSnippet","symbolKind":"function","exported":false,"metadata":{"line":548,"column":31,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleExportSnippet",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleExportSnippet","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","symbolName":"handleExportSnippet","symbolKind":"function","exported":false,"metadata":{"line":554,"column":31,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","metadata":{"lineCount":138,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:ChatSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:ChatSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","symbolName":"ChatSettings","symbolKind":"function","exported":true,"metadata":{"line":9,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:usePathMode",{"id":"symbol-name:usePathMode","kind":"symbol","language":"jsts","symbolName":"usePathMode","metadata":{"unresolvedName":"usePathMode"}}],["symbol-name:setCollapseUserMessages",{"id":"symbol-name:setCollapseUserMessages","kind":"symbol","language":"jsts","symbolName":"setCollapseUserMessages","metadata":{"unresolvedName":"setCollapseUserMessages"}}],["external:themeStore.setCollapseUserMessages",{"id":"external:themeStore.setCollapseUserMessages","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.setCollapseUserMessages"}}],["symbol-name:setReasoningDisplayMode",{"id":"symbol-name:setReasoningDisplayMode","kind":"symbol","language":"jsts","symbolName":"setReasoningDisplayMode","metadata":{"unresolvedName":"setReasoningDisplayMode"}}],["external:themeStore.setReasoningDisplayMode",{"id":"external:themeStore.setReasoningDisplayMode","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.setReasoningDisplayMode"}}],["symbol-name:setPathMode",{"id":"symbol-name:setPathMode","kind":"symbol","language":"jsts","symbolName":"setPathMode","metadata":{"unresolvedName":"setPathMode"}}],["symbol-name:handleReasoningDisplayModeChange",{"id":"symbol-name:handleReasoningDisplayModeChange","kind":"symbol","language":"jsts","symbolName":"handleReasoningDisplayModeChange","metadata":{"unresolvedName":"handleReasoningDisplayModeChange"}}],["symbol-name:setStepFinishDisplay",{"id":"symbol-name:setStepFinishDisplay","kind":"symbol","language":"jsts","symbolName":"setStepFinishDisplay","metadata":{"unresolvedName":"setStepFinishDisplay"}}],["external:themeStore.setStepFinishDisplay",{"id":"external:themeStore.setStepFinishDisplay","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.setStepFinishDisplay"}}],["symbol-name:setCompletedAtFormat",{"id":"symbol-name:setCompletedAtFormat","kind":"symbol","language":"jsts","symbolName":"setCompletedAtFormat","metadata":{"unresolvedName":"setCompletedAtFormat"}}],["external:themeStore.setCompletedAtFormat",{"id":"external:themeStore.setCompletedAtFormat","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.setCompletedAtFormat"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:handleCollapseToggle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:handleCollapseToggle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","symbolName":"handleCollapseToggle","symbolKind":"function","exported":false,"metadata":{"line":19,"column":32,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:handleReasoningDisplayModeChange",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:handleReasoningDisplayModeChange","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","symbolName":"handleReasoningDisplayModeChange","symbolKind":"function","exported":false,"metadata":{"line":25,"column":44,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":126,"column":25,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx","metadata":{"lineCount":118,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","metadata":{"lineCount":172,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":105,"column":76,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:useModelsMock.mockReturnValue",{"id":"external:useModelsMock.mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"useModelsMock.mockReturnValue"}}],["external:useHiddenModelKeysMock.mockReturnValue",{"id":"external:useHiddenModelKeysMock.mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"useHiddenModelKeysMock.mockReturnValue"}}],["external:setVisibleMock.mockReset",{"id":"external:setVisibleMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"setVisibleMock.mockReset"}}],["external:setManyVisibleMock.mockReset",{"id":"external:setManyVisibleMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"setManyVisibleMock.mockReset"}}],["external:expect(modelButton).toHaveAttribute",{"id":"external:expect(modelButton).toHaveAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(modelButton).toHaveAttribute"}}],["external:expect(switches[0]).toHaveAttribute",{"id":"external:expect(switches[0]).toHaveAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(switches[0]).toHaveAttribute"}}],["external:expect(switches[1]).toHaveAttribute",{"id":"external:expect(switches[1]).toHaveAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(switches[1]).toHaveAttribute"}}],["external:expect(setVisibleMock).toHaveBeenCalledWith",{"id":"external:expect(setVisibleMock).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(setVisibleMock).toHaveBeenCalledWith"}}],["external:expect(modelRow).not.toBeNull",{"id":"external:expect(modelRow).not.toBeNull","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(modelRow).not.toBeNull"}}],["external:expect(switches[2]).toHaveAttribute",{"id":"external:expect(switches[2]).toHaveAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(switches[2]).toHaveAttribute"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:formatContext",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:formatContext","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","symbolName":"formatContext","symbolKind":"function","exported":false,"metadata":{"line":9,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","symbolName":"ModelsSettings","symbolKind":"function","exported":true,"metadata":{"line":16,"column":1,"cyclomaticComplexity":20,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:models.reduce",{"id":"external:models.reduce","kind":"external","language":"jsts","metadata":{"unresolvedName":"models.reduce"}}],["external:hiddenModelKeySet.has",{"id":"external:hiddenModelKeySet.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"hiddenModelKeySet.has"}}],["external:query.trim().toLowerCase",{"id":"external:query.trim().toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"query.trim().toLowerCase"}}],["external:normalize(model.name).includes",{"id":"external:normalize(model.name).includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalize(model.name).includes"}}],["external:normalize(model.id).includes",{"id":"external:normalize(model.id).includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalize(model.id).includes"}}],["external:normalize(model.family).includes",{"id":"external:normalize(model.family).includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalize(model.family).includes"}}],["external:normalize(model.providerName).includes",{"id":"external:normalize(model.providerName).includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalize(model.providerName).includes"}}],["external:providerModels.filter",{"id":"external:providerModels.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"providerModels.filter"}}],["external:modelVisibilityStore.setManyVisible",{"id":"external:modelVisibilityStore.setManyVisible","kind":"external","language":"jsts","metadata":{"unresolvedName":"modelVisibilityStore.setManyVisible"}}],["external:group.models.map",{"id":"external:group.models.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"group.models.map"}}],["external:modelVisibilityStore.setVisible",{"id":"external:modelVisibilityStore.setVisible","kind":"external","language":"jsts","metadata":{"unresolvedName":"modelVisibilityStore.setVisible"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":153,"column":41,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx","metadata":{"lineCount":73,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:qrcode",{"id":"external:qrcode","kind":"external","language":"jsts","metadata":{"source":"qrcode"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","metadata":{"lineCount":115,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":47,"column":48,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:vi.mocked(getNetworkAccess).mockReset",{"id":"external:vi.mocked(getNetworkAccess).mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(getNetworkAccess).mockReset"}}],["external:vi.mocked(updateNetworkAccess).mockReset",{"id":"external:vi.mocked(updateNetworkAccess).mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(updateNetworkAccess).mockReset"}}],["external:vi.mocked(getNetworkAccess).mockResolvedValue",{"id":"external:vi.mocked(getNetworkAccess).mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(getNetworkAccess).mockResolvedValue"}}],["external:screen.findByAltText",{"id":"external:screen.findByAltText","kind":"external","language":"jsts","metadata":{"unresolvedName":"screen.findByAltText"}}],["external:expect(QRCode.toDataURL).toHaveBeenCalledWith",{"id":"external:expect(QRCode.toDataURL).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(QRCode.toDataURL).toHaveBeenCalledWith"}}],["external:vi.mocked(updateNetworkAccess).mockResolvedValue",{"id":"external:vi.mocked(updateNetworkAccess).mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(updateNetworkAccess).mockResolvedValue"}}],["external:expect(updateNetworkAccess).toHaveBeenCalledWith",{"id":"external:expect(updateNetworkAccess).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(updateNetworkAccess).toHaveBeenCalledWith"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:NetworkAccessSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:NetworkAccessSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","symbolName":"NetworkAccessSettings","symbolKind":"function","exported":true,"metadata":{"line":6,"column":1,"cyclomaticComplexity":20,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:getNetworkAccess()\n .then",{"id":"external:getNetworkAccess()\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"getNetworkAccess()\n .then"}}],["symbol-name:setInfo",{"id":"symbol-name:setInfo","kind":"symbol","language":"jsts","symbolName":"setInfo","metadata":{"unresolvedName":"setInfo"}}],["symbol-name:setQrDataUrl",{"id":"symbol-name:setQrDataUrl","kind":"symbol","language":"jsts","symbolName":"setQrDataUrl","metadata":{"unresolvedName":"setQrDataUrl"}}],["external:QRCode.toDataURL(url, { margin: 1, width: 144 })\n .then",{"id":"external:QRCode.toDataURL(url, { margin: 1, width: 144 })\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"QRCode.toDataURL(url, { margin: 1, width: 144 })\n .then"}}],["external:QRCode.toDataURL",{"id":"external:QRCode.toDataURL","kind":"external","language":"jsts","metadata":{"unresolvedName":"QRCode.toDataURL"}}],["symbol-name:setIsSaving",{"id":"symbol-name:setIsSaving","kind":"symbol","language":"jsts","symbolName":"setIsSaving","metadata":{"unresolvedName":"setIsSaving"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":42,"column":12,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:toggleLanAccess",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:toggleLanAccess","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","symbolName":"toggleLanAccess","symbolKind":"function","exported":false,"metadata":{"line":47,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","metadata":{"lineCount":534,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","metadata":{"lineCount":182,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","metadata":{"lineCount":557,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","metadata":{"lineCount":390,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:VolumeSlider",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:VolumeSlider","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","symbolName":"VolumeSlider","symbolKind":"function","exported":false,"metadata":{"line":73,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventEnableRow",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventEnableRow","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","symbolName":"EventEnableRow","symbolKind":"function","exported":false,"metadata":{"line":111,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useNotificationEventSettings",{"id":"symbol-name:useNotificationEventSettings","kind":"symbol","language":"jsts","symbolName":"useNotificationEventSettings","metadata":{"unresolvedName":"useNotificationEventSettings"}}],["external:notificationEventSettingsStore.setSystemEnabled",{"id":"external:notificationEventSettingsStore.setSystemEnabled","kind":"external","language":"jsts","metadata":{"unresolvedName":"notificationEventSettingsStore.setSystemEnabled"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","symbolName":"EventSoundCard","symbolKind":"function","exported":false,"metadata":{"line":147,"column":1,"cyclomaticComplexity":15,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useSoundSettings",{"id":"symbol-name:useSoundSettings","kind":"symbol","language":"jsts","symbolName":"useSoundSettings","metadata":{"unresolvedName":"useSoundSettings"}}],["external:soundStore.hasCustomAudio",{"id":"external:soundStore.hasCustomAudio","kind":"external","language":"jsts","metadata":{"unresolvedName":"soundStore.hasCustomAudio"}}],["external:soundStore.getCustomAudioBlob",{"id":"external:soundStore.getCustomAudioBlob","kind":"external","language":"jsts","metadata":{"unresolvedName":"soundStore.getCustomAudioBlob"}}],["symbol-name:playSound",{"id":"symbol-name:playSound","kind":"symbol","language":"jsts","symbolName":"playSound","metadata":{"unresolvedName":"playSound"}}],["symbol-name:setUploadError",{"id":"symbol-name:setUploadError","kind":"symbol","language":"jsts","symbolName":"setUploadError","metadata":{"unresolvedName":"setUploadError"}}],["external:soundStore.setEventSound",{"id":"external:soundStore.setEventSound","kind":"external","language":"jsts","metadata":{"unresolvedName":"soundStore.setEventSound"}}],["external:soundStore.uploadCustomAudio",{"id":"external:soundStore.uploadCustomAudio","kind":"external","language":"jsts","metadata":{"unresolvedName":"soundStore.uploadCustomAudio"}}],["external:result.error.charAt(0).toUpperCase",{"id":"external:result.error.charAt(0).toUpperCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.error.charAt(0).toUpperCase"}}],["external:result.error.charAt",{"id":"external:result.error.charAt","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.error.charAt"}}],["external:result.error.slice",{"id":"external:result.error.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.error.slice"}}],["external:soundStore.removeCustomAudio",{"id":"external:soundStore.removeCustomAudio","kind":"external","language":"jsts","metadata":{"unresolvedName":"soundStore.removeCustomAudio"}}],["external:soundStore.exportCustomAudio",{"id":"external:soundStore.exportCustomAudio","kind":"external","language":"jsts","metadata":{"unresolvedName":"soundStore.exportCustomAudio"}}],["symbol-name:handleSoundChange",{"id":"symbol-name:handleSoundChange","kind":"symbol","language":"jsts","symbolName":"handleSoundChange","metadata":{"unresolvedName":"handleSoundChange"}}],["external:soundOptions.map",{"id":"external:soundOptions.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"soundOptions.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":209,"column":42,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:NotificationSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:NotificationSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","symbolName":"NotificationSettings","symbolKind":"function","exported":true,"metadata":{"line":350,"column":1,"cyclomaticComplexity":13,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useNotification",{"id":"symbol-name:useNotification","kind":"symbol","language":"jsts","symbolName":"useNotification","metadata":{"unresolvedName":"useNotification"}}],["symbol-name:isSoundSupported",{"id":"symbol-name:isSoundSupported","kind":"symbol","language":"jsts","symbolName":"isSoundSupported","metadata":{"unresolvedName":"isSoundSupported"}}],["symbol-name:sendNotification",{"id":"symbol-name:sendNotification","kind":"symbol","language":"jsts","symbolName":"sendNotification","metadata":{"unresolvedName":"sendNotification"}}],["symbol-name:setToastEnabledState",{"id":"symbol-name:setToastEnabledState","kind":"symbol","language":"jsts","symbolName":"setToastEnabledState","metadata":{"unresolvedName":"setToastEnabledState"}}],["external:notificationStore.setToastEnabled",{"id":"external:notificationStore.setToastEnabled","kind":"external","language":"jsts","metadata":{"unresolvedName":"notificationStore.setToastEnabled"}}],["symbol-name:setNotificationsEnabled",{"id":"symbol-name:setNotificationsEnabled","kind":"symbol","language":"jsts","symbolName":"setNotificationsEnabled","metadata":{"unresolvedName":"setNotificationsEnabled"}}],["external:EVENT_TYPES.map",{"id":"external:EVENT_TYPES.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"EVENT_TYPES.map"}}],["external:soundStore.setEnabled",{"id":"external:soundStore.setEnabled","kind":"external","language":"jsts","metadata":{"unresolvedName":"soundStore.setEnabled"}}],["external:soundStore.setCurrentSessionEnabled",{"id":"external:soundStore.setCurrentSessionEnabled","kind":"external","language":"jsts","metadata":{"unresolvedName":"soundStore.setCurrentSessionEnabled"}}],["external:soundStore.setVolume",{"id":"external:soundStore.setVolume","kind":"external","language":"jsts","metadata":{"unresolvedName":"soundStore.setVolume"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:handleTestNotification",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:handleTestNotification","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","symbolName":"handleTestNotification","symbolKind":"function","exported":false,"metadata":{"line":363,"column":34,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:handleToastToggle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:handleToastToggle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","symbolName":"handleToastToggle","symbolKind":"function","exported":false,"metadata":{"line":367,"column":29,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","metadata":{"lineCount":596,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServerItem",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServerItem","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","symbolName":"ServerItem","symbolKind":"function","exported":false,"metadata":{"line":25,"column":1,"cyclomaticComplexity":21,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:onEdit",{"id":"symbol-name:onEdit","kind":"symbol","language":"jsts","symbolName":"onEdit","metadata":{"unresolvedName":"onEdit"}}],["symbol-name:setEditing",{"id":"symbol-name:setEditing","kind":"symbol","language":"jsts","symbolName":"setEditing","metadata":{"unresolvedName":"setEditing"}}],["symbol-name:onCheckHealth",{"id":"symbol-name:onCheckHealth","kind":"symbol","language":"jsts","symbolName":"onCheckHealth","metadata":{"unresolvedName":"onCheckHealth"}}],["symbol-name:statusTitle",{"id":"symbol-name:statusTitle","kind":"symbol","language":"jsts","symbolName":"statusTitle","metadata":{"unresolvedName":"statusTitle"}}],["symbol-name:statusIcon",{"id":"symbol-name:statusIcon","kind":"symbol","language":"jsts","symbolName":"statusIcon","metadata":{"unresolvedName":"statusIcon"}}],["symbol-name:setConfirmDelete",{"id":"symbol-name:setConfirmDelete","kind":"symbol","language":"jsts","symbolName":"setConfirmDelete","metadata":{"unresolvedName":"setConfirmDelete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:statusIcon",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:statusIcon","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","symbolName":"statusIcon","symbolKind":"function","exported":false,"metadata":{"line":46,"column":22,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:statusTitle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:statusTitle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","symbolName":"statusTitle","symbolKind":"function","exported":false,"metadata":{"line":53,"column":23,"cyclomaticComplexity":10,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":569,"column":22,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:EditServerForm",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:EditServerForm","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","symbolName":"EditServerForm","symbolKind":"function","exported":false,"metadata":{"line":181,"column":1,"cyclomaticComplexity":12,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:onSave",{"id":"symbol-name:onSave","kind":"symbol","language":"jsts","symbolName":"onSave","metadata":{"unresolvedName":"onSave"}}],["external:password.trim",{"id":"external:password.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"password.trim"}}],["external:username.trim",{"id":"external:username.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"username.trim"}}],["symbol-name:setShowAuth",{"id":"symbol-name:setShowAuth","kind":"symbol","language":"jsts","symbolName":"setShowAuth","metadata":{"unresolvedName":"setShowAuth"}}],["symbol-name:setUsername",{"id":"symbol-name:setUsername","kind":"symbol","language":"jsts","symbolName":"setUsername","metadata":{"unresolvedName":"setUsername"}}],["symbol-name:setPassword",{"id":"symbol-name:setPassword","kind":"symbol","language":"jsts","symbolName":"setPassword","metadata":{"unresolvedName":"setPassword"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","symbolName":"handleSubmit","symbolKind":"function","exported":false,"metadata":{"line":334,"column":24,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:AddServerForm",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:AddServerForm","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","symbolName":"AddServerForm","symbolKind":"function","exported":false,"metadata":{"line":319,"column":1,"cyclomaticComplexity":14,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:onAdd",{"id":"symbol-name:onAdd","kind":"symbol","language":"jsts","symbolName":"onAdd","metadata":{"unresolvedName":"onAdd"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","symbolName":"ServersSettings","symbolKind":"function","exported":true,"metadata":{"line":481,"column":1,"cyclomaticComplexity":13,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useServerStore",{"id":"symbol-name:useServerStore","kind":"symbol","language":"jsts","symbolName":"useServerStore","metadata":{"unresolvedName":"useServerStore"}}],["external:servers.find",{"id":"external:servers.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"servers.find"}}],["external:servers.filter",{"id":"external:servers.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"servers.filter"}}],["symbol-name:checkAllHealth",{"id":"symbol-name:checkAllHealth","kind":"symbol","language":"jsts","symbolName":"checkAllHealth","metadata":{"unresolvedName":"checkAllHealth"}}],["external:messageStore.clearSession",{"id":"external:messageStore.clearSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.clearSession"}}],["symbol-name:setActiveServer",{"id":"symbol-name:setActiveServer","kind":"symbol","language":"jsts","symbolName":"setActiveServer","metadata":{"unresolvedName":"setActiveServer"}}],["symbol-name:navigateHome",{"id":"symbol-name:navigateHome","kind":"symbol","language":"jsts","symbolName":"navigateHome","metadata":{"unresolvedName":"navigateHome"}}],["symbol-name:setAddingServer",{"id":"symbol-name:setAddingServer","kind":"symbol","language":"jsts","symbolName":"setAddingServer","metadata":{"unresolvedName":"setAddingServer"}}],["external:orderedServers.map",{"id":"external:orderedServers.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"orderedServers.map"}}],["symbol-name:getHealth",{"id":"symbol-name:getHealth","kind":"symbol","language":"jsts","symbolName":"getHealth","metadata":{"unresolvedName":"getHealth"}}],["symbol-name:handleSelectServer",{"id":"symbol-name:handleSelectServer","kind":"symbol","language":"jsts","symbolName":"handleSelectServer","metadata":{"unresolvedName":"handleSelectServer"}}],["symbol-name:removeServer",{"id":"symbol-name:removeServer","kind":"symbol","language":"jsts","symbolName":"removeServer","metadata":{"unresolvedName":"removeServer"}}],["symbol-name:updateServer",{"id":"symbol-name:updateServer","kind":"symbol","language":"jsts","symbolName":"updateServer","metadata":{"unresolvedName":"updateServer"}}],["symbol-name:checkHealth",{"id":"symbol-name:checkHealth","kind":"symbol","language":"jsts","symbolName":"checkHealth","metadata":{"unresolvedName":"checkHealth"}}],["symbol-name:addServer",{"id":"symbol-name:addServer","kind":"symbol","language":"jsts","symbolName":"addServer","metadata":{"unresolvedName":"addServer"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","metadata":{"lineCount":245,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","metadata":{"lineCount":215,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","symbolName":"ServiceSettings","symbolKind":"function","exported":true,"metadata":{"line":11,"column":1,"cyclomaticComplexity":22,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useServiceStore",{"id":"symbol-name:useServiceStore","kind":"symbol","language":"jsts","symbolName":"useServiceStore","metadata":{"unresolvedName":"useServiceStore"}}],["symbol-name:setLocalBinaryPath",{"id":"symbol-name:setLocalBinaryPath","kind":"symbol","language":"jsts","symbolName":"setLocalBinaryPath","metadata":{"unresolvedName":"setLocalBinaryPath"}}],["symbol-name:handleCheckService",{"id":"symbol-name:handleCheckService","kind":"symbol","language":"jsts","symbolName":"handleCheckService","metadata":{"unresolvedName":"handleCheckService"}}],["external:serviceStore.setAutoStart",{"id":"external:serviceStore.setAutoStart","kind":"external","language":"jsts","metadata":{"unresolvedName":"serviceStore.setAutoStart"}}],["external:serviceStore.setBinaryPath",{"id":"external:serviceStore.setBinaryPath","kind":"external","language":"jsts","metadata":{"unresolvedName":"serviceStore.setBinaryPath"}}],["symbol-name:setServiceError",{"id":"symbol-name:setServiceError","kind":"symbol","language":"jsts","symbolName":"setServiceError","metadata":{"unresolvedName":"setServiceError"}}],["external:serviceStore.setStarting",{"id":"external:serviceStore.setStarting","kind":"external","language":"jsts","metadata":{"unresolvedName":"serviceStore.setStarting"}}],["symbol-name:getServerUrl",{"id":"symbol-name:getServerUrl","kind":"symbol","language":"jsts","symbolName":"getServerUrl","metadata":{"unresolvedName":"getServerUrl"}}],["external:serviceStore.setStartedByUs",{"id":"external:serviceStore.setStartedByUs","kind":"external","language":"jsts","metadata":{"unresolvedName":"serviceStore.setStartedByUs"}}],["external:serviceStore.setRunning",{"id":"external:serviceStore.setRunning","kind":"external","language":"jsts","metadata":{"unresolvedName":"serviceStore.setRunning"}}],["symbol-name:handleBinaryPathChange",{"id":"symbol-name:handleBinaryPathChange","kind":"symbol","language":"jsts","symbolName":"handleBinaryPathChange","metadata":{"unresolvedName":"handleBinaryPathChange"}}],["external:serviceStore.setEnvVars",{"id":"external:serviceStore.setEnvVars","kind":"external","language":"jsts","metadata":{"unresolvedName":"serviceStore.setEnvVars"}}],["external:envVars.map",{"id":"external:envVars.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"envVars.map"}}],["external:envVars.filter",{"id":"external:envVars.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"envVars.filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":222,"column":30,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleAutoStartToggle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleAutoStartToggle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","symbolName":"handleAutoStartToggle","symbolKind":"function","exported":false,"metadata":{"line":43,"column":33,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleBinaryPathChange",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleBinaryPathChange","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","symbolName":"handleBinaryPathChange","symbolKind":"function","exported":false,"metadata":{"line":47,"column":34,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStartService",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStartService","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","symbolName":"handleStartService","symbolKind":"function","exported":false,"metadata":{"line":55,"column":30,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStopService",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStopService","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","symbolName":"handleStopService","symbolKind":"function","exported":false,"metadata":{"line":76,"column":29,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleCheckService",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleCheckService","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","symbolName":"handleCheckService","symbolKind":"function","exported":false,"metadata":{"line":88,"column":30,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:Toggle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:Toggle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","symbolName":"Toggle","symbolKind":"function","exported":true,"metadata":{"line":14,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":69,"column":18,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SegmentedControl",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SegmentedControl","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","symbolName":"SegmentedControl","symbolKind":"function","exported":true,"metadata":{"line":62,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:options.findIndex",{"id":"external:options.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"options.findIndex"}}],["external:options.map",{"id":"external:options.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"options.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SettingsSelect",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SettingsSelect","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","symbolName":"SettingsSelect","symbolKind":"function","exported":true,"metadata":{"line":110,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SettingRow",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SettingRow","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","symbolName":"SettingRow","symbolKind":"function","exported":true,"metadata":{"line":139,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SettingsSection",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SettingsSection","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","symbolName":"SettingsSection","symbolKind":"function","exported":true,"metadata":{"line":163,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SettingsCard",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SettingsCard","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","symbolName":"SettingsCard","symbolKind":"function","exported":true,"metadata":{"line":175,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx","metadata":{"lineCount":87,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","metadata":{"lineCount":177,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":78,"column":61,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:vi.mocked(getSttSettings).mockReset",{"id":"external:vi.mocked(getSttSettings).mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(getSttSettings).mockReset"}}],["external:vi.mocked(updateSttSettings).mockReset",{"id":"external:vi.mocked(updateSttSettings).mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(updateSttSettings).mockReset"}}],["external:vi.mocked(getSttSettings).mockResolvedValue",{"id":"external:vi.mocked(getSttSettings).mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(getSttSettings).mockResolvedValue"}}],["external:vi.mocked(updateSttSettings).mockImplementation",{"id":"external:vi.mocked(updateSttSettings).mockImplementation","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(updateSttSettings).mockImplementation"}}],["external:expect(enableSwitch).toHaveAttribute",{"id":"external:expect(enableSwitch).toHaveAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(enableSwitch).toHaveAttribute"}}],["external:expect(screen.queryByRole('checkbox')).not.toBeInTheDocument",{"id":"external:expect(screen.queryByRole('checkbox')).not.toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.queryByRole('checkbox')).not.toBeInTheDocument"}}],["external:expect(updateSttSettings).toHaveBeenCalledWith",{"id":"external:expect(updateSttSettings).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(updateSttSettings).toHaveBeenCalledWith"}}],["external:expect(requireKeySwitch).toHaveAttribute",{"id":"external:expect(requireKeySwitch).toHaveAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(requireKeySwitch).toHaveAttribute"}}],["external:expect(screen.queryByText('Transcription provider')).not.toBeInTheDocument",{"id":"external:expect(screen.queryByText('Transcription provider')).not.toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.queryByText('Transcription provider')).not.toBeInTheDocument"}}],["external:expect(screen.getByLabelText('Provider')).toHaveValue",{"id":"external:expect(screen.getByLabelText('Provider')).toHaveValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByLabelText('Provider')).toHaveValue"}}],["external:expect(screen.getByLabelText('Base URL')).toHaveValue",{"id":"external:expect(screen.getByLabelText('Base URL')).toHaveValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByLabelText('Base URL')).toHaveValue"}}],["external:expect(screen.getByLabelText('Endpoint')).toHaveValue",{"id":"external:expect(screen.getByLabelText('Endpoint')).toHaveValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByLabelText('Endpoint')).toHaveValue"}}],["external:expect(screen.getByLabelText('Model')).toHaveValue",{"id":"external:expect(screen.getByLabelText('Model')).toHaveValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByLabelText('Model')).toHaveValue"}}],["external:screen.findByLabelText",{"id":"external:screen.findByLabelText","kind":"external","language":"jsts","metadata":{"unresolvedName":"screen.findByLabelText"}}],["external:expect(insertMode).toHaveClass",{"id":"external:expect(insertMode).toHaveClass","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(insertMode).toHaveClass"}}],["external:expect(insertMode.closest('[data-settings-select]')).toBeInTheDocument",{"id":"external:expect(insertMode.closest('[data-settings-select]')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(insertMode.closest('[data-settings-select]')).toBeInTheDocument"}}],["external:insertMode.closest",{"id":"external:insertMode.closest","kind":"external","language":"jsts","metadata":{"unresolvedName":"insertMode.closest"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:SttSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:SttSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","symbolName":"SttSettings","symbolKind":"function","exported":true,"metadata":{"line":10,"column":1,"cyclomaticComplexity":15,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:getSttSettings()\n .then",{"id":"external:getSttSettings()\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSttSettings()\n .then"}}],["symbol-name:setSettings",{"id":"symbol-name:setSettings","kind":"symbol","language":"jsts","symbolName":"setSettings","metadata":{"unresolvedName":"setSettings"}}],["external:apiKey.trim",{"id":"external:apiKey.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"apiKey.trim"}}],["symbol-name:setApiKey",{"id":"symbol-name:setApiKey","kind":"symbol","language":"jsts","symbolName":"setApiKey","metadata":{"unresolvedName":"setApiKey"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":25,"column":12,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:saveSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:saveSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","symbolName":"saveSettings","symbolKind":"function","exported":false,"metadata":{"line":30,"column":3,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx","metadata":{"lineCount":46,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","metadata":{"lineCount":200,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":32,"column":69,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:vi.mocked(getTtsSettings).mockReset",{"id":"external:vi.mocked(getTtsSettings).mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(getTtsSettings).mockReset"}}],["external:vi.mocked(updateTtsSettings).mockReset",{"id":"external:vi.mocked(updateTtsSettings).mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(updateTtsSettings).mockReset"}}],["external:vi.mocked(getTtsSettings).mockResolvedValue",{"id":"external:vi.mocked(getTtsSettings).mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(getTtsSettings).mockResolvedValue"}}],["external:vi.mocked(updateTtsSettings).mockImplementation",{"id":"external:vi.mocked(updateTtsSettings).mockImplementation","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(updateTtsSettings).mockImplementation"}}],["external:expect(voiceSelect).toHaveValue",{"id":"external:expect(voiceSelect).toHaveValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(voiceSelect).toHaveValue"}}],["external:expect(updateTtsSettings).toHaveBeenCalledWith",{"id":"external:expect(updateTtsSettings).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(updateTtsSettings).toHaveBeenCalledWith"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:TtsSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:TtsSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","symbolName":"TtsSettings","symbolKind":"function","exported":true,"metadata":{"line":35,"column":1,"cyclomaticComplexity":12,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:getTtsSettings()\n .then",{"id":"external:getTtsSettings()\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"getTtsSettings()\n .then"}}],["symbol-name:getTtsSettings",{"id":"symbol-name:getTtsSettings","kind":"symbol","language":"jsts","symbolName":"getTtsSettings","metadata":{"unresolvedName":"getTtsSettings"}}],["external:KOKORO_VOICES.map",{"id":"external:KOKORO_VOICES.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"KOKORO_VOICES.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":50,"column":12,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:saveSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:saveSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","symbolName":"saveSettings","symbolKind":"function","exported":false,"metadata":{"line":55,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/VoiceSettings.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/VoiceSettings.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/VoiceSettings.tsx","metadata":{"lineCount":12,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/VoiceSettings.tsx:VoiceSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/VoiceSettings.tsx:VoiceSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/VoiceSettings.tsx","symbolName":"VoiceSettings","symbolKind":"function","exported":true,"metadata":{"line":4,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx","metadata":{"lineCount":154,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:WorkspaceSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:WorkspaceSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx","symbolName":"WorkspaceSettings","symbolKind":"function","exported":true,"metadata":{"line":6,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:layoutStore.setWakeLock",{"id":"external:layoutStore.setWakeLock","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.setWakeLock"}}],["symbol-name:setCodeWordWrap",{"id":"symbol-name:setCodeWordWrap","kind":"symbol","language":"jsts","symbolName":"setCodeWordWrap","metadata":{"unresolvedName":"setCodeWordWrap"}}],["symbol-name:setManualTerminalTitles",{"id":"symbol-name:setManualTerminalTitles","kind":"symbol","language":"jsts","symbolName":"setManualTerminalTitles","metadata":{"unresolvedName":"setManualTerminalTitles"}}],["external:layoutStore.syncTerminalTitleMode",{"id":"external:layoutStore.syncTerminalTitleMode","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.syncTerminalTitleMode"}}],["symbol-name:setDiffStyle",{"id":"symbol-name:setDiffStyle","kind":"symbol","language":"jsts","symbolName":"setDiffStyle","metadata":{"unresolvedName":"setDiffStyle"}}],["external:layoutStore.setTerminalCopyOnSelect",{"id":"external:layoutStore.setTerminalCopyOnSelect","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.setTerminalCopyOnSelect"}}],["external:layoutStore.setTerminalRightClickPaste",{"id":"external:layoutStore.setTerminalRightClickPaste","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.setTerminalRightClickPaste"}}],["external:layoutStore.setSidebarFolderRecents",{"id":"external:layoutStore.setSidebarFolderRecents","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.setSidebarFolderRecents"}}],["external:layoutStore.setSidebarFolderRecentsShowDiff",{"id":"external:layoutStore.setSidebarFolderRecentsShowDiff","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.setSidebarFolderRecentsShowDiff"}}],["external:layoutStore.setSidebarShowChildSessions",{"id":"external:layoutStore.setSidebarShowChildSessions","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.setSidebarShowChildSessions"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":67,"column":23,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","metadata":{"lineCount":333,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:Kbd",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:Kbd","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","symbolName":"Kbd","symbolKind":"function","exported":false,"metadata":{"line":46,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:ShortcutDisplay",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:ShortcutDisplay","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","symbolName":"ShortcutDisplay","symbolKind":"function","exported":false,"metadata":{"line":59,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","symbolName":"KeybindingRow","symbolKind":"function","exported":false,"metadata":{"line":84,"column":1,"cyclomaticComplexity":20,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:captureRef.current?.focus",{"id":"external:captureRef.current?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"captureRef.current?.focus"}}],["external:['Control', 'Alt', 'Shift', 'Meta'].includes",{"id":"external:['Control', 'Alt', 'Shift', 'Meta'].includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"['Control', 'Alt', 'Shift', 'Meta'].includes"}}],["symbol-name:keyEventToString",{"id":"symbol-name:keyEventToString","kind":"symbol","language":"jsts","symbolName":"keyEventToString","metadata":{"unresolvedName":"keyEventToString"}}],["symbol-name:setTempKey",{"id":"symbol-name:setTempKey","kind":"symbol","language":"jsts","symbolName":"setTempKey","metadata":{"unresolvedName":"setTempKey"}}],["symbol-name:isKeyUsed",{"id":"symbol-name:isKeyUsed","kind":"symbol","language":"jsts","symbolName":"isKeyUsed","metadata":{"unresolvedName":"isKeyUsed"}}],["symbol-name:cancel",{"id":"symbol-name:cancel","kind":"symbol","language":"jsts","symbolName":"cancel","metadata":{"unresolvedName":"cancel"}}],["symbol-name:confirm",{"id":"symbol-name:confirm","kind":"symbol","language":"jsts","symbolName":"confirm","metadata":{"unresolvedName":"confirm"}}],["symbol-name:handleKeyDown",{"id":"symbol-name:handleKeyDown","kind":"symbol","language":"jsts","symbolName":"handleKeyDown","metadata":{"unresolvedName":"handleKeyDown"}}],["symbol-name:onReset",{"id":"symbol-name:onReset","kind":"symbol","language":"jsts","symbolName":"onReset","metadata":{"unresolvedName":"onReset"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":267,"column":13,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:handler",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:handler","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","symbolName":"handler","symbolKind":"function","exported":false,"metadata":{"line":123,"column":21,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","symbolName":"KeybindingsSection","symbolKind":"function","exported":true,"metadata":{"line":228,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:useKeybindingStore",{"id":"symbol-name:useKeybindingStore","kind":"symbol","language":"jsts","symbolName":"useKeybindingStore","metadata":{"unresolvedName":"useKeybindingStore"}}],["external:keybindings.map",{"id":"external:keybindings.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"keybindings.map"}}],["external:localizedKeybindings.filter",{"id":"external:localizedKeybindings.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"localizedKeybindings.filter"}}],["external:kb.label.toLowerCase().includes",{"id":"external:kb.label.toLowerCase().includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"kb.label.toLowerCase().includes"}}],["external:kb.label.toLowerCase",{"id":"external:kb.label.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"kb.label.toLowerCase"}}],["external:kb.description.toLowerCase().includes",{"id":"external:kb.description.toLowerCase().includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"kb.description.toLowerCase().includes"}}],["external:kb.description.toLowerCase",{"id":"external:kb.description.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"kb.description.toLowerCase"}}],["external:kb.currentKey.toLowerCase().includes",{"id":"external:kb.currentKey.toLowerCase().includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"kb.currentKey.toLowerCase().includes"}}],["external:kb.currentKey.toLowerCase",{"id":"external:kb.currentKey.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"kb.currentKey.toLowerCase"}}],["external:CATEGORY_ORDER.map",{"id":"external:CATEGORY_ORDER.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"CATEGORY_ORDER.map"}}],["external:filtered.filter",{"id":"external:filtered.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"filtered.filter"}}],["external:localizedKeybindings.some",{"id":"external:localizedKeybindings.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"localizedKeybindings.some"}}],["external:searchRef.current?.focus",{"id":"external:searchRef.current?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"searchRef.current?.focus"}}],["external:grouped.map",{"id":"external:grouped.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"grouped.map"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx","metadata":{"lineCount":44,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":30,"column":60,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(voiceTab).toBeInTheDocument",{"id":"external:expect(voiceTab).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(voiceTab).toBeInTheDocument"}}],["external:expect(voiceTab).toHaveAttribute",{"id":"external:expect(voiceTab).toHaveAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(voiceTab).toHaveAttribute"}}],["external:expect(screen.getByText('voice-panel')).toBeInTheDocument",{"id":"external:expect(screen.getByText('voice-panel')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('voice-panel')).toBeInTheDocument"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:TabContent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:TabContent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","symbolName":"TabContent","symbolKind":"function","exported":false,"metadata":{"line":127,"column":1,"cyclomaticComplexity":12,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","symbolName":"SettingsDialog","symbolKind":"function","exported":true,"metadata":{"line":160,"column":1,"cyclomaticComplexity":22,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:normalizeTab",{"id":"symbol-name:normalizeTab","kind":"symbol","language":"jsts","symbolName":"normalizeTab","metadata":{"unresolvedName":"normalizeTab"}}],["external:TAB_IDS.filter",{"id":"external:TAB_IDS.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"TAB_IDS.filter"}}],["external:visibleTabIds.map",{"id":"external:visibleTabIds.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"visibleTabIds.map"}}],["external:GROUP_DEFS.map",{"id":"external:GROUP_DEFS.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"GROUP_DEFS.map"}}],["external:group.tabs\n .map",{"id":"external:group.tabs\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"group.tabs\n .map"}}],["external:visibleTabs.find",{"id":"external:visibleTabs.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"visibleTabs.find"}}],["symbol-name:setTab",{"id":"symbol-name:setTab","kind":"symbol","language":"jsts","symbolName":"setTab","metadata":{"unresolvedName":"setTab"}}],["external:visibleTabs.some",{"id":"external:visibleTabs.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"visibleTabs.some"}}],["external:document.getElementById(`settings-tab-${tab}`)?.focus",{"id":"external:document.getElementById(`settings-tab-${tab}`)?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.getElementById(`settings-tab-${tab}`)?.focus"}}],["external:scrollRef.current?.scrollTo",{"id":"external:scrollRef.current?.scrollTo","kind":"external","language":"jsts","metadata":{"unresolvedName":"scrollRef.current?.scrollTo"}}],["external:visibleTabs.map",{"id":"external:visibleTabs.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"visibleTabs.map"}}],["external:ids.indexOf",{"id":"external:ids.indexOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"ids.indexOf"}}],["symbol-name:switchTab",{"id":"symbol-name:switchTab","kind":"symbol","language":"jsts","symbolName":"switchTab","metadata":{"unresolvedName":"switchTab"}}],["external:document.getElementById(`settings-tab-${ids[next]}`)?.focus",{"id":"external:document.getElementById(`settings-tab-${ids[next]}`)?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.getElementById(`settings-tab-${ids[next]}`)?.focus"}}],["external:groupedTabs.map",{"id":"external:groupedTabs.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"groupedTabs.map"}}],["external:group.tabs.map",{"id":"external:group.tabs.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"group.tabs.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":245,"column":31,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/index.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/index.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/index.ts","metadata":{"lineCount":3,"featureKind":"service","trustBoundaries":["network","external-api","serialization","user-input","process-exec"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx","metadata":{"lineCount":50,"featureKind":"service","trustBoundaries":["network","external-api","serialization","user-input","process-exec"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","metadata":{"lineCount":243,"featureKind":"service","trustBoundaries":["network","external-api","serialization","user-input","process-exec"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":41,"column":15,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","user-input","process-exec"]}}],["external:expect(screen.getByText('/compact')).toBeInTheDocument",{"id":"external:expect(screen.getByText('/compact')).toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByText('/compact')).toBeInTheDocument"}}],["external:expect(screen.queryByText('/explain')).not.toBeInTheDocument",{"id":"external:expect(screen.queryByText('/explain')).not.toBeInTheDocument","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.queryByText('/explain')).not.toBeInTheDocument"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":172,"column":13,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","user-input","process-exec"]}}],["external:cmd.name.toLowerCase().includes",{"id":"external:cmd.name.toLowerCase().includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"cmd.name.toLowerCase().includes"}}],["external:cmd.name.toLowerCase",{"id":"external:cmd.name.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"cmd.name.toLowerCase"}}],["external:getCommands(rootPath)\r\n .then",{"id":"external:getCommands(rootPath)\r\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"getCommands(rootPath)\r\n .then"}}],["symbol-name:setCommands",{"id":"symbol-name:setCommands","kind":"symbol","language":"jsts","symbolName":"setCommands","metadata":{"unresolvedName":"setCommands"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:calculate",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:calculate","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","symbolName":"calculate","symbolKind":"function","exported":false,"metadata":{"line":66,"column":23,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","user-input","process-exec"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:moveUp",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:moveUp","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","symbolName":"moveUp","symbolKind":"function","exported":false,"metadata":{"line":154,"column":15,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","user-input","process-exec"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:moveDown",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:moveDown","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","symbolName":"moveDown","symbolKind":"function","exported":false,"metadata":{"line":157,"column":17,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","user-input","process-exec"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:selectCurrent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:selectCurrent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","symbolName":"selectCurrent","symbolKind":"function","exported":false,"metadata":{"line":160,"column":22,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","user-input","process-exec"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:handleClickOutside",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:handleClickOutside","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","symbolName":"handleClickOutside","symbolKind":"function","exported":false,"metadata":{"line":173,"column":32,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","user-input","process-exec"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/index.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/index.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/index.ts","metadata":{"lineCount":55,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/sessionStatsUtils.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/sessionStatsUtils.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/sessionStatsUtils.ts","metadata":{"lineCount":6,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:useCancelHint",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:useCancelHint","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts","symbolName":"useCancelHint","symbolKind":"function","exported":true,"metadata":{"line":7,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setShowCancelHint",{"id":"symbol-name:setShowCancelHint","kind":"symbol","language":"jsts","symbolName":"setShowCancelHint","metadata":{"unresolvedName":"setShowCancelHint"}}],["symbol-name:handleAbort",{"id":"symbol-name:handleAbort","kind":"symbol","language":"jsts","symbolName":"handleAbort","metadata":{"unresolvedName":"handleAbort"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":42,"column":44,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","metadata":{"lineCount":370,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","metadata":{"lineCount":1142,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":349,"column":15,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:summarizeSessionMock.mockReset",{"id":"external:summarizeSessionMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"summarizeSessionMock.mockReset"}}],["external:executeCommandMock.mockReset",{"id":"external:executeCommandMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"executeCommandMock.mockReset"}}],["external:getSelectableAgentsMock.mockReset",{"id":"external:getSelectableAgentsMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSelectableAgentsMock.mockReset"}}],["external:registerSessionConsumerMock.mockReset",{"id":"external:registerSessionConsumerMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"registerSessionConsumerMock.mockReset"}}],["external:updateConsumerSessionIdMock.mockReset",{"id":"external:updateConsumerSessionIdMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"updateConsumerSessionIdMock.mockReset"}}],["external:sendNotificationMock.mockReset",{"id":"external:sendNotificationMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"sendNotificationMock.mockReset"}}],["external:isSystemEnabledMock.mockReset",{"id":"external:isSystemEnabledMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"isSystemEnabledMock.mockReset"}}],["external:errorHandlerMock.mockReset",{"id":"external:errorHandlerMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"errorHandlerMock.mockReset"}}],["external:sendMessageAsyncMock.mockReset",{"id":"external:sendMessageAsyncMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"sendMessageAsyncMock.mockReset"}}],["external:abortSessionMock.mockReset",{"id":"external:abortSessionMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"abortSessionMock.mockReset"}}],["external:registerSessionConsumerMock.mockReturnValue",{"id":"external:registerSessionConsumerMock.mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"registerSessionConsumerMock.mockReturnValue"}}],["external:getSelectableAgentsMock.mockResolvedValue",{"id":"external:getSelectableAgentsMock.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSelectableAgentsMock.mockResolvedValue"}}],["external:isSystemEnabledMock.mockImplementation",{"id":"external:isSystemEnabledMock.mockImplementation","kind":"external","language":"jsts","metadata":{"unresolvedName":"isSystemEnabledMock.mockImplementation"}}],["external:summarizeSessionMock.mockReturnValue",{"id":"external:summarizeSessionMock.mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"summarizeSessionMock.mockReturnValue"}}],["symbol-name:renderHook",{"id":"symbol-name:renderHook","kind":"symbol","language":"jsts","symbolName":"renderHook","metadata":{"unresolvedName":"renderHook"}}],["external:result.current.handleCommand",{"id":"external:result.current.handleCommand","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.current.handleCommand"}}],["external:promise.then",{"id":"external:promise.then","kind":"external","language":"jsts","metadata":{"unresolvedName":"promise.then"}}],["external:expect(summarizeSessionMock).toHaveBeenCalledWith",{"id":"external:expect(summarizeSessionMock).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(summarizeSessionMock).toHaveBeenCalledWith"}}],["external:expect(settled).toBe",{"id":"external:expect(settled).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(settled).toBe"}}],["external:expect(commandResult).toBe",{"id":"external:expect(commandResult).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(commandResult).toBe"}}],["external:executeCommandMock.mockReturnValue",{"id":"external:executeCommandMock.mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"executeCommandMock.mockReturnValue"}}],["external:expect(executeCommandMock).toHaveBeenCalledWith",{"id":"external:expect(executeCommandMock).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(executeCommandMock).toHaveBeenCalledWith"}}],["external:it.each",{"id":"external:it.each","kind":"external","language":"jsts","metadata":{"unresolvedName":"it.each"}}],["external:registerSessionConsumerMock.mockImplementation",{"id":"external:registerSessionConsumerMock.mockImplementation","kind":"external","language":"jsts","metadata":{"unresolvedName":"registerSessionConsumerMock.mockImplementation"}}],["external:callbacks?.[trigger]",{"id":"external:callbacks?.[trigger]","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks?.[trigger]"}}],["external:expect(sendNotificationMock).not.toHaveBeenCalled",{"id":"external:expect(sendNotificationMock).not.toHaveBeenCalled","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(sendNotificationMock).not.toHaveBeenCalled"}}],["external:navigateToSessionMock.mockReset",{"id":"external:navigateToSessionMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"navigateToSessionMock.mockReset"}}],["external:navigateHomeMock.mockReset",{"id":"external:navigateHomeMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"navigateHomeMock.mockReset"}}],["external:createSessionMock.mockResolvedValue",{"id":"external:createSessionMock.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"createSessionMock.mockResolvedValue"}}],["external:result.current.handleSend",{"id":"external:result.current.handleSend","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.current.handleSend"}}],["external:expect(success).toBe",{"id":"external:expect(success).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(success).toBe"}}],["external:expect(sendMessageAsyncMock).toHaveBeenCalledWith",{"id":"external:expect(sendMessageAsyncMock).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(sendMessageAsyncMock).toHaveBeenCalledWith"}}],["external:expect(createSessionMock).toHaveBeenCalled",{"id":"external:expect(createSessionMock).toHaveBeenCalled","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(createSessionMock).toHaveBeenCalled"}}],["external:expect(navigateToSessionMock).toHaveBeenCalledWith",{"id":"external:expect(navigateToSessionMock).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(navigateToSessionMock).toHaveBeenCalledWith"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","metadata":{"lineCount":242,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","metadata":{"lineCount":123,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","symbolName":"useChatSession","symbolKind":"function","exported":true,"metadata":{"line":94,"column":1,"cyclomaticComplexity":141,"maxNestingDepth":5,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["symbol-name:useActiveSessionStore",{"id":"symbol-name:useActiveSessionStore","kind":"symbol","language":"jsts","symbolName":"useActiveSessionStore","metadata":{"unresolvedName":"useActiveSessionStore"}}],["external:serverStorage.get",{"id":"external:serverStorage.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStorage.get"}}],["symbol-name:setSelectedAgentRaw",{"id":"symbol-name:setSelectedAgentRaw","kind":"symbol","language":"jsts","symbolName":"setSelectedAgentRaw","metadata":{"unresolvedName":"setSelectedAgentRaw"}}],["external:serverStorage.set",{"id":"external:serverStorage.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStorage.set"}}],["symbol-name:usePermissions",{"id":"symbol-name:usePermissions","kind":"symbol","language":"jsts","symbolName":"usePermissions","metadata":{"unresolvedName":"usePermissions"}}],["symbol-name:useFollowupQueue",{"id":"symbol-name:useFollowupQueue","kind":"symbol","language":"jsts","symbolName":"useFollowupQueue","metadata":{"unresolvedName":"useFollowupQueue"}}],["symbol-name:getSessionTitle",{"id":"symbol-name:getSessionTitle","kind":"symbol","language":"jsts","symbolName":"getSessionTitle","metadata":{"unresolvedName":"getSessionTitle"}}],["symbol-name:useSessionFamily",{"id":"symbol-name:useSessionFamily","kind":"symbol","language":"jsts","symbolName":"useSessionFamily","metadata":{"unresolvedName":"useSessionFamily"}}],["symbol-name:useSessionManager",{"id":"symbol-name:useSessionManager","kind":"symbol","language":"jsts","symbolName":"useSessionManager","metadata":{"unresolvedName":"useSessionManager"}}],["symbol-name:usePermissionHandler",{"id":"symbol-name:usePermissionHandler","kind":"symbol","language":"jsts","symbolName":"usePermissionHandler","metadata":{"unresolvedName":"usePermissionHandler"}}],["symbol-name:useMessageAnimation",{"id":"symbol-name:useMessageAnimation","kind":"symbol","language":"jsts","symbolName":"useMessageAnimation","metadata":{"unresolvedName":"useMessageAnimation"}}],["external:autoApproveStore.shouldAutoApprove",{"id":"external:autoApproveStore.shouldAutoApprove","kind":"external","language":"jsts","metadata":{"unresolvedName":"autoApproveStore.shouldAutoApprove"}}],["symbol-name:setPendingPermissionRequests",{"id":"symbol-name:setPendingPermissionRequests","kind":"symbol","language":"jsts","symbolName":"setPendingPermissionRequests","metadata":{"unresolvedName":"setPendingPermissionRequests"}}],["symbol-name:buildNotificationTitle",{"id":"symbol-name:buildNotificationTitle","kind":"symbol","language":"jsts","symbolName":"buildNotificationTitle","metadata":{"unresolvedName":"buildNotificationTitle"}}],["external:notificationEventSettingsStore.isSystemEnabled",{"id":"external:notificationEventSettingsStore.isSystemEnabled","kind":"external","language":"jsts","metadata":{"unresolvedName":"notificationEventSettingsStore.isSystemEnabled"}}],["symbol-name:setPendingQuestionRequests",{"id":"symbol-name:setPendingQuestionRequests","kind":"symbol","language":"jsts","symbolName":"setPendingQuestionRequests","metadata":{"unresolvedName":"setPendingQuestionRequests"}}],["external:chatAreaRef.current?.scrollToBottomIfAtBottom",{"id":"external:chatAreaRef.current?.scrollToBottomIfAtBottom","kind":"external","language":"jsts","metadata":{"unresolvedName":"chatAreaRef.current?.scrollToBottomIfAtBottom"}}],["external:messageStore.markAllSessionsStale",{"id":"external:messageStore.markAllSessionsStale","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.markAllSessionsStale"}}],["symbol-name:loadSession",{"id":"symbol-name:loadSession","kind":"symbol","language":"jsts","symbolName":"loadSession","metadata":{"unresolvedName":"loadSession"}}],["symbol-name:refreshPendingRequests",{"id":"symbol-name:refreshPendingRequests","kind":"symbol","language":"jsts","symbolName":"refreshPendingRequests","metadata":{"unresolvedName":"refreshPendingRequests"}}],["external:refetchModels().catch",{"id":"external:refetchModels().catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"refetchModels().catch"}}],["symbol-name:refetchModels",{"id":"symbol-name:refetchModels","kind":"symbol","language":"jsts","symbolName":"refetchModels","metadata":{"unresolvedName":"refetchModels"}}],["external:getSelectableAgents(currentDirectory)\n .then",{"id":"external:getSelectableAgents(currentDirectory)\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSelectableAgents(currentDirectory)\n .then"}}],["symbol-name:getSelectableAgents",{"id":"symbol-name:getSelectableAgents","kind":"symbol","language":"jsts","symbolName":"getSelectableAgents","metadata":{"unresolvedName":"getSelectableAgents"}}],["symbol-name:registerSessionConsumer",{"id":"symbol-name:registerSessionConsumer","kind":"symbol","language":"jsts","symbolName":"registerSessionConsumer","metadata":{"unresolvedName":"registerSessionConsumer"}}],["external:sseCallbacksRef.current.onPermissionAsked",{"id":"external:sseCallbacksRef.current.onPermissionAsked","kind":"external","language":"jsts","metadata":{"unresolvedName":"sseCallbacksRef.current.onPermissionAsked"}}],["external:sseCallbacksRef.current.onPermissionReplied",{"id":"external:sseCallbacksRef.current.onPermissionReplied","kind":"external","language":"jsts","metadata":{"unresolvedName":"sseCallbacksRef.current.onPermissionReplied"}}],["external:sseCallbacksRef.current.onQuestionAsked",{"id":"external:sseCallbacksRef.current.onQuestionAsked","kind":"external","language":"jsts","metadata":{"unresolvedName":"sseCallbacksRef.current.onQuestionAsked"}}],["external:sseCallbacksRef.current.onQuestionReplied",{"id":"external:sseCallbacksRef.current.onQuestionReplied","kind":"external","language":"jsts","metadata":{"unresolvedName":"sseCallbacksRef.current.onQuestionReplied"}}],["external:sseCallbacksRef.current.onQuestionRejected",{"id":"external:sseCallbacksRef.current.onQuestionRejected","kind":"external","language":"jsts","metadata":{"unresolvedName":"sseCallbacksRef.current.onQuestionRejected"}}],["external:sseCallbacksRef.current.onScrollRequest",{"id":"external:sseCallbacksRef.current.onScrollRequest","kind":"external","language":"jsts","metadata":{"unresolvedName":"sseCallbacksRef.current.onScrollRequest"}}],["external:sseCallbacksRef.current.onSessionIdle",{"id":"external:sseCallbacksRef.current.onSessionIdle","kind":"external","language":"jsts","metadata":{"unresolvedName":"sseCallbacksRef.current.onSessionIdle"}}],["external:sseCallbacksRef.current.onSessionError",{"id":"external:sseCallbacksRef.current.onSessionError","kind":"external","language":"jsts","metadata":{"unresolvedName":"sseCallbacksRef.current.onSessionError"}}],["external:sseCallbacksRef.current.onReconnected",{"id":"external:sseCallbacksRef.current.onReconnected","kind":"external","language":"jsts","metadata":{"unresolvedName":"sseCallbacksRef.current.onReconnected"}}],["symbol-name:updateConsumerSessionId",{"id":"symbol-name:updateConsumerSessionId","kind":"symbol","language":"jsts","symbolName":"updateConsumerSessionId","metadata":{"unresolvedName":"updateConsumerSessionId"}}],["external:getSelectableAgents(currentDirectory)\n .then(setAgents)\n .catch",{"id":"external:getSelectableAgents(currentDirectory)\n .then(setAgents)\n .catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSelectableAgents(currentDirectory)\n .then(setAgents)\n .catch"}}],["external:getSelectableAgents(currentDirectory)\n .then",{"id":"external:getSelectableAgents(currentDirectory)\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSelectableAgents(currentDirectory)\n .then"}}],["external:prefetchRootDirectory(effectiveDirectory).catch",{"id":"external:prefetchRootDirectory(effectiveDirectory).catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"prefetchRootDirectory(effectiveDirectory).catch"}}],["symbol-name:prefetchRootDirectory",{"id":"symbol-name:prefetchRootDirectory","kind":"symbol","language":"jsts","symbolName":"prefetchRootDirectory","metadata":{"unresolvedName":"prefetchRootDirectory"}}],["external:prefetchCommands(effectiveDirectory).catch",{"id":"external:prefetchCommands(effectiveDirectory).catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"prefetchCommands(effectiveDirectory).catch"}}],["symbol-name:prefetchCommands",{"id":"symbol-name:prefetchCommands","kind":"symbol","language":"jsts","symbolName":"prefetchCommands","metadata":{"unresolvedName":"prefetchCommands"}}],["external:primaryAgents.some",{"id":"external:primaryAgents.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"primaryAgents.some"}}],["symbol-name:resetPendingRequests",{"id":"symbol-name:resetPendingRequests","kind":"symbol","language":"jsts","symbolName":"resetPendingRequests","metadata":{"unresolvedName":"resetPendingRequests"}}],["external:childSessionStore.getChildSessionIds",{"id":"external:childSessionStore.getChildSessionIds","kind":"external","language":"jsts","metadata":{"unresolvedName":"childSessionStore.getChildSessionIds"}}],["external:childSessionStore.registerChildSession",{"id":"external:childSessionStore.registerChildSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"childSessionStore.registerChildSession"}}],["external:childSessionStore.getSessionAndDescendants",{"id":"external:childSessionStore.getSessionAndDescendants","kind":"external","language":"jsts","metadata":{"unresolvedName":"childSessionStore.getSessionAndDescendants"}}],["external:getPendingPermissions(undefined, effectiveDirectory).catch",{"id":"external:getPendingPermissions(undefined, effectiveDirectory).catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"getPendingPermissions(undefined, effectiveDirectory).catch"}}],["symbol-name:getPendingPermissions",{"id":"symbol-name:getPendingPermissions","kind":"symbol","language":"jsts","symbolName":"getPendingPermissions","metadata":{"unresolvedName":"getPendingPermissions"}}],["external:getPendingQuestions(undefined, effectiveDirectory).catch",{"id":"external:getPendingQuestions(undefined, effectiveDirectory).catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"getPendingQuestions(undefined, effectiveDirectory).catch"}}],["symbol-name:getPendingQuestions",{"id":"symbol-name:getPendingQuestions","kind":"symbol","language":"jsts","symbolName":"getPendingQuestions","metadata":{"unresolvedName":"getPendingQuestions"}}],["external:allPerms.filter",{"id":"external:allPerms.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"allPerms.filter"}}],["external:family.has",{"id":"external:family.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"family.has"}}],["external:nextPerms.map",{"id":"external:nextPerms.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"nextPerms.map"}}],["external:merged.has",{"id":"external:merged.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"merged.has"}}],["external:merged.set",{"id":"external:merged.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"merged.set"}}],["external:merged.values",{"id":"external:merged.values","kind":"external","language":"jsts","metadata":{"unresolvedName":"merged.values"}}],["external:allQuestions.filter",{"id":"external:allQuestions.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"allQuestions.filter"}}],["symbol-name:loadChildSessionsAndPermissions",{"id":"symbol-name:loadChildSessionsAndPermissions","kind":"symbol","language":"jsts","symbolName":"loadChildSessionsAndPermissions","metadata":{"unresolvedName":"loadChildSessionsAndPermissions"}}],["external:messageStore.createSendRollbackSnapshot",{"id":"external:messageStore.createSendRollbackSnapshot","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.createSendRollbackSnapshot"}}],["symbol-name:createSession",{"id":"symbol-name:createSession","kind":"symbol","language":"jsts","symbolName":"createSession","metadata":{"unresolvedName":"createSession"}}],["external:messageStore.truncateAfterRevert",{"id":"external:messageStore.truncateAfterRevert","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.truncateAfterRevert"}}],["external:messageStore.setStreaming",{"id":"external:messageStore.setStreaming","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.setStreaming"}}],["symbol-name:sendMessageAsync",{"id":"symbol-name:sendMessageAsync","kind":"symbol","language":"jsts","symbolName":"sendMessageAsync","metadata":{"unresolvedName":"sendMessageAsync"}}],["external:state.messages.some",{"id":"external:state.messages.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"state.messages.some"}}],["external:message.parts.some",{"id":"external:message.parts.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"message.parts.some"}}],["external:getSessionMessages(pullSessionId, 5, pullDir)\n .then",{"id":"external:getSessionMessages(pullSessionId, 5, pullDir)\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSessionMessages(pullSessionId, 5, pullDir)\n .then"}}],["external:messageStore.handleMessageUpdated",{"id":"external:messageStore.handleMessageUpdated","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.handleMessageUpdated"}}],["external:messageStore.handlePartUpdated",{"id":"external:messageStore.handlePartUpdated","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.handlePartUpdated"}}],["external:messageStore.restoreSendRollback",{"id":"external:messageStore.restoreSendRollback","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.restoreSendRollback"}}],["external:followupQueueStore.remove",{"id":"external:followupQueueStore.remove","kind":"external","language":"jsts","metadata":{"unresolvedName":"followupQueueStore.remove"}}],["external:followupQueueStore.enqueue",{"id":"external:followupQueueStore.enqueue","kind":"external","language":"jsts","metadata":{"unresolvedName":"followupQueueStore.enqueue"}}],["external:messageStore.upsertLocalMessage",{"id":"external:messageStore.upsertLocalMessage","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.upsertLocalMessage"}}],["symbol-name:buildLocalQueuedMessage",{"id":"symbol-name:buildLocalQueuedMessage","kind":"symbol","language":"jsts","symbolName":"buildLocalQueuedMessage","metadata":{"unresolvedName":"buildLocalQueuedMessage"}}],["symbol-name:sendMessageNow",{"id":"symbol-name:sendMessageNow","kind":"symbol","language":"jsts","symbolName":"sendMessageNow","metadata":{"unresolvedName":"sendMessageNow"}}],["external:followupQueueStore.getItem",{"id":"external:followupQueueStore.getItem","kind":"external","language":"jsts","metadata":{"unresolvedName":"followupQueueStore.getItem"}}],["external:followupQueueStore.startSending",{"id":"external:followupQueueStore.startSending","kind":"external","language":"jsts","metadata":{"unresolvedName":"followupQueueStore.startSending"}}],["external:messageStore.removeMessage",{"id":"external:messageStore.removeMessage","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.removeMessage"}}],["external:followupQueueStore.finishSending",{"id":"external:followupQueueStore.finishSending","kind":"external","language":"jsts","metadata":{"unresolvedName":"followupQueueStore.finishSending"}}],["external:followupQueueStore.markFailed",{"id":"external:followupQueueStore.markFailed","kind":"external","language":"jsts","metadata":{"unresolvedName":"followupQueueStore.markFailed"}}],["external:followupQueueStore.getItems",{"id":"external:followupQueueStore.getItems","kind":"external","language":"jsts","metadata":{"unresolvedName":"followupQueueStore.getItems"}}],["symbol-name:setRestoredContent",{"id":"symbol-name:setRestoredContent","kind":"symbol","language":"jsts","symbolName":"setRestoredContent","metadata":{"unresolvedName":"setRestoredContent"}}],["symbol-name:sendQueuedFollowup",{"id":"symbol-name:sendQueuedFollowup","kind":"symbol","language":"jsts","symbolName":"sendQueuedFollowup","metadata":{"unresolvedName":"sendQueuedFollowup"}}],["symbol-name:hasOtherConsumerForSession",{"id":"symbol-name:hasOtherConsumerForSession","kind":"symbol","language":"jsts","symbolName":"hasOtherConsumerForSession","metadata":{"unresolvedName":"hasOtherConsumerForSession"}}],["symbol-name:resetPermissions",{"id":"symbol-name:resetPermissions","kind":"symbol","language":"jsts","symbolName":"resetPermissions","metadata":{"unresolvedName":"resetPermissions"}}],["external:messages.findIndex",{"id":"external:messages.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"messages.findIndex"}}],["symbol-name:forkSession",{"id":"symbol-name:forkSession","kind":"symbol","language":"jsts","symbolName":"forkSession","metadata":{"unresolvedName":"forkSession"}}],["symbol-name:extractUserMessageContent",{"id":"symbol-name:extractUserMessageContent","kind":"symbol","language":"jsts","symbolName":"extractUserMessageContent","metadata":{"unresolvedName":"extractUserMessageContent"}}],["external:messageStore.handleSessionIdle",{"id":"external:messageStore.handleSessionIdle","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.handleSessionIdle"}}],["external:commandStr.trim",{"id":"external:commandStr.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"commandStr.trim"}}],["external:withoutSlash.indexOf",{"id":"external:withoutSlash.indexOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"withoutSlash.indexOf"}}],["external:withoutSlash.slice",{"id":"external:withoutSlash.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"withoutSlash.slice"}}],["symbol-name:handleNewChat",{"id":"symbol-name:handleNewChat","kind":"symbol","language":"jsts","symbolName":"handleNewChat","metadata":{"unresolvedName":"handleNewChat"}}],["symbol-name:summarizeSession",{"id":"symbol-name:summarizeSession","kind":"symbol","language":"jsts","symbolName":"summarizeSession","metadata":{"unresolvedName":"summarizeSession"}}],["external:executeCommand(sessionId, command, args, effectiveDirectory).catch",{"id":"external:executeCommand(sessionId, command, args, effectiveDirectory).catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"executeCommand(sessionId, command, args, effectiveDirectory).catch"}}],["external:messages.slice(messageIndex).map",{"id":"external:messages.slice(messageIndex).map","kind":"external","language":"jsts","metadata":{"unresolvedName":"messages.slice(messageIndex).map"}}],["external:messages.slice",{"id":"external:messages.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"messages.slice"}}],["symbol-name:animateUndo",{"id":"symbol-name:animateUndo","kind":"symbol","language":"jsts","symbolName":"animateUndo","metadata":{"unresolvedName":"animateUndo"}}],["symbol-name:handleUndo",{"id":"symbol-name:handleUndo","kind":"symbol","language":"jsts","symbolName":"handleUndo","metadata":{"unresolvedName":"handleUndo"}}],["symbol-name:animateRedo",{"id":"symbol-name:animateRedo","kind":"symbol","language":"jsts","symbolName":"animateRedo","metadata":{"unresolvedName":"animateRedo"}}],["symbol-name:handleRedo",{"id":"symbol-name:handleRedo","kind":"symbol","language":"jsts","symbolName":"handleRedo","metadata":{"unresolvedName":"handleRedo"}}],["external:sessions.findIndex",{"id":"external:sessions.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessions.findIndex"}}],["external:agents.some",{"id":"external:agents.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"agents.some"}}],["symbol-name:clearRevert",{"id":"symbol-name:clearRevert","kind":"symbol","language":"jsts","symbolName":"clearRevert","metadata":{"unresolvedName":"clearRevert"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":1081,"column":41,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onPermissionAsked",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onPermissionAsked","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","symbolName":"onPermissionAsked","symbolKind":"function","exported":false,"metadata":{"line":293,"column":26,"cyclomaticComplexity":8,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onPermissionReplied",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onPermissionReplied","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","symbolName":"onPermissionReplied","symbolKind":"function","exported":false,"metadata":{"line":327,"column":28,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionAsked",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionAsked","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","symbolName":"onQuestionAsked","symbolKind":"function","exported":false,"metadata":{"line":330,"column":24,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionReplied",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionReplied","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","symbolName":"onQuestionReplied","symbolKind":"function","exported":false,"metadata":{"line":347,"column":26,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionRejected",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionRejected","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","symbolName":"onQuestionRejected","symbolKind":"function","exported":false,"metadata":{"line":350,"column":27,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onScrollRequest",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onScrollRequest","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","symbolName":"onScrollRequest","symbolKind":"function","exported":false,"metadata":{"line":353,"column":24,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onSessionIdle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onSessionIdle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","symbolName":"onSessionIdle","symbolKind":"function","exported":false,"metadata":{"line":356,"column":22,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onSessionError",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onSessionError","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","symbolName":"onSessionError","symbolKind":"function","exported":false,"metadata":{"line":367,"column":23,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onReconnected",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onReconnected","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","symbolName":"onReconnected","symbolKind":"function","exported":false,"metadata":{"line":378,"column":22,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","symbolName":"loadChildSessionsAndPermissions","symbolKind":"function","exported":false,"metadata":{"line":488,"column":5,"cyclomaticComplexity":10,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts","metadata":{"lineCount":26,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:useClickOutside",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:useClickOutside","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts","symbolName":"useClickOutside","symbolKind":"function","exported":true,"metadata":{"line":8,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:ref.current.contains",{"id":"external:ref.current.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"ref.current.contains"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":11,"column":13,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:handleClickOutside",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:handleClickOutside","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts","symbolName":"handleClickOutside","symbolKind":"function","exported":false,"metadata":{"line":14,"column":32,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:useCloseServiceDialog",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:useCloseServiceDialog","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","symbolName":"useCloseServiceDialog","symbolKind":"function","exported":true,"metadata":{"line":9,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setShowCloseDialog",{"id":"symbol-name:setShowCloseDialog","kind":"symbol","language":"jsts","symbolName":"setShowCloseDialog","metadata":{"unresolvedName":"setShowCloseDialog"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":41,"column":47,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","metadata":{"lineCount":54,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":45,"column":9,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","symbolName":"useDelayedRender","symbolKind":"function","exported":true,"metadata":{"line":3,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":23,"column":12,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts","metadata":{"lineCount":48,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:useDropdown",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:useDropdown","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts","symbolName":"useDropdown","symbolKind":"function","exported":true,"metadata":{"line":12,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:options.onOpen",{"id":"external:options.onOpen","kind":"external","language":"jsts","metadata":{"unresolvedName":"options.onOpen"}}],["external:options.onClose",{"id":"external:options.onClose","kind":"external","language":"jsts","metadata":{"unresolvedName":"options.onClose"}}],["symbol-name:useClickOutside",{"id":"symbol-name:useClickOutside","kind":"symbol","language":"jsts","symbolName":"useClickOutside","metadata":{"unresolvedName":"useClickOutside"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":34,"column":38,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","symbolName":"useDynamicVirtualScroll","symbolKind":"function","exported":true,"metadata":{"line":46,"column":1,"cyclomaticComplexity":23,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:estimateHeight",{"id":"symbol-name:estimateHeight","kind":"symbol","language":"jsts","symbolName":"estimateHeight","metadata":{"unresolvedName":"estimateHeight"}}],["symbol-name:getEstimatedHeight",{"id":"symbol-name:getEstimatedHeight","kind":"symbol","language":"jsts","symbolName":"getEstimatedHeight","metadata":{"unresolvedName":"getEstimatedHeight"}}],["symbol-name:findIndex",{"id":"symbol-name:findIndex","kind":"symbol","language":"jsts","symbolName":"findIndex","metadata":{"unresolvedName":"findIndex"}}],["symbol-name:setContainerWidth",{"id":"symbol-name:setContainerWidth","kind":"symbol","language":"jsts","symbolName":"setContainerWidth","metadata":{"unresolvedName":"setContainerWidth"}}],["symbol-name:setMeasuredHeights",{"id":"symbol-name:setMeasuredHeights","kind":"symbol","language":"jsts","symbolName":"setMeasuredHeights","metadata":{"unresolvedName":"setMeasuredHeights"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":173,"column":57,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","metadata":{"lineCount":196,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","metadata":{"lineCount":496,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":186,"column":15,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:vi.clearAllMocks",{"id":"external:vi.clearAllMocks","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.clearAllMocks"}}],["external:listDirectory.mockResolvedValue",{"id":"external:listDirectory.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"listDirectory.mockResolvedValue"}}],["external:getFileContent.mockResolvedValue",{"id":"external:getFileContent.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getFileContent.mockResolvedValue"}}],["external:getFileStatus.mockResolvedValue",{"id":"external:getFileStatus.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getFileStatus.mockResolvedValue"}}],["external:getVcsDiff.mockResolvedValue",{"id":"external:getVcsDiff.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getVcsDiff.mockResolvedValue"}}],["external:expect(result.current.fileStatus.get('src/session.ts')?.status).toBe",{"id":"external:expect(result.current.fileStatus.get('src/session.ts')?.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.fileStatus.get('src/session.ts')?.status).toBe"}}],["external:result.current.fileStatus.get",{"id":"external:result.current.fileStatus.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.current.fileStatus.get"}}],["external:expect(result.current.fileStatus.get('src/turn.ts')?.status).toBe",{"id":"external:expect(result.current.fileStatus.get('src/turn.ts')?.status).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.fileStatus.get('src/turn.ts')?.status).toBe"}}],["external:expect(result.current.fileStatus.get('src/session.ts')).toBeUndefined",{"id":"external:expect(result.current.fileStatus.get('src/session.ts')).toBeUndefined","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.fileStatus.get('src/session.ts')).toBeUndefined"}}],["external:listDirectory.mockImplementation",{"id":"external:listDirectory.mockImplementation","kind":"external","language":"jsts","metadata":{"unresolvedName":"listDirectory.mockImplementation"}}],["external:expect(result.current.tree).toHaveLength",{"id":"external:expect(result.current.tree).toHaveLength","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.tree).toHaveLength"}}],["external:result.current.toggleExpand",{"id":"external:result.current.toggleExpand","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.current.toggleExpand"}}],["external:expect(result.current.expandedPaths.has('src')).toBe",{"id":"external:expect(result.current.expandedPaths.has('src')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.expandedPaths.has('src')).toBe"}}],["external:result.current.expandedPaths.has",{"id":"external:result.current.expandedPaths.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.current.expandedPaths.has"}}],["external:expect(result.current.tree[0]?.children?.[0]?.path).toBe",{"id":"external:expect(result.current.tree[0]?.children?.[0]?.path).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.tree[0]?.children?.[0]?.path).toBe"}}],["external:expect(result.current.tree[0]?.absolute).toBe",{"id":"external:expect(result.current.tree[0]?.absolute).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.tree[0]?.absolute).toBe"}}],["external:expect(result.current.tree[0]?.children?.[0]?.path).toBeUndefined",{"id":"external:expect(result.current.tree[0]?.children?.[0]?.path).toBeUndefined","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.tree[0]?.children?.[0]?.path).toBeUndefined"}}],["symbol-name:resolveRepoAChildren!",{"id":"symbol-name:resolveRepoAChildren!","kind":"symbol","language":"jsts","symbolName":"resolveRepoAChildren!","metadata":{"unresolvedName":"resolveRepoAChildren!"}}],["external:expect(result.current.tree[0]?.children?.map(child => child.path)).toEqual",{"id":"external:expect(result.current.tree[0]?.children?.map(child => child.path)).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.tree[0]?.children?.map(child => child.path)).toEqual"}}],["external:result.current.tree[0]?.children?.map",{"id":"external:result.current.tree[0]?.children?.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.current.tree[0]?.children?.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","symbolName":"useFileExplorer","symbolKind":"function","exported":true,"metadata":{"line":51,"column":1,"cyclomaticComplexity":54,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:sortNodes",{"id":"symbol-name:sortNodes","kind":"symbol","language":"jsts","symbolName":"sortNodes","metadata":{"unresolvedName":"sortNodes"}}],["symbol-name:setTree",{"id":"symbol-name:setTree","kind":"symbol","language":"jsts","symbolName":"setTree","metadata":{"unresolvedName":"setTree"}}],["external:sorted.map",{"id":"external:sorted.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"sorted.map"}}],["symbol-name:setFileStatus",{"id":"symbol-name:setFileStatus","kind":"symbol","language":"jsts","symbolName":"setFileStatus","metadata":{"unresolvedName":"setFileStatus"}}],["external:status.forEach",{"id":"external:status.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"status.forEach"}}],["external:statusMap.set",{"id":"external:statusMap.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"statusMap.set"}}],["external:diffs.forEach",{"id":"external:diffs.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"diffs.forEach"}}],["symbol-name:getFileStatusFromDiff",{"id":"symbol-name:getFileStatusFromDiff","kind":"symbol","language":"jsts","symbolName":"getFileStatusFromDiff","metadata":{"unresolvedName":"getFileStatusFromDiff"}}],["symbol-name:computeDirectoryStatus",{"id":"symbol-name:computeDirectoryStatus","kind":"symbol","language":"jsts","symbolName":"computeDirectoryStatus","metadata":{"unresolvedName":"computeDirectoryStatus"}}],["external:childLoadIdsRef.current.get",{"id":"external:childLoadIdsRef.current.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"childLoadIdsRef.current.get"}}],["external:childLoadIdsRef.current.set",{"id":"external:childLoadIdsRef.current.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"childLoadIdsRef.current.set"}}],["symbol-name:updateTreeNode",{"id":"symbol-name:updateTreeNode","kind":"symbol","language":"jsts","symbolName":"updateTreeNode","metadata":{"unresolvedName":"updateTreeNode"}}],["symbol-name:isCurrentLoad",{"id":"symbol-name:isCurrentLoad","kind":"symbol","language":"jsts","symbolName":"isCurrentLoad","metadata":{"unresolvedName":"isCurrentLoad"}}],["symbol-name:setExpandedPaths",{"id":"symbol-name:setExpandedPaths","kind":"symbol","language":"jsts","symbolName":"setExpandedPaths","metadata":{"unresolvedName":"setExpandedPaths"}}],["symbol-name:updater",{"id":"symbol-name:updater","kind":"symbol","language":"jsts","symbolName":"updater","metadata":{"unresolvedName":"updater"}}],["external:expandedPathsByDirectoryRef.current.set",{"id":"external:expandedPathsByDirectoryRef.current.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"expandedPathsByDirectoryRef.current.set"}}],["symbol-name:updateExpandedPaths",{"id":"symbol-name:updateExpandedPaths","kind":"symbol","language":"jsts","symbolName":"updateExpandedPaths","metadata":{"unresolvedName":"updateExpandedPaths"}}],["symbol-name:findTreeNode",{"id":"symbol-name:findTreeNode","kind":"symbol","language":"jsts","symbolName":"findTreeNode","metadata":{"unresolvedName":"findTreeNode"}}],["symbol-name:loadChildren",{"id":"symbol-name:loadChildren","kind":"symbol","language":"jsts","symbolName":"loadChildren","metadata":{"unresolvedName":"loadChildren"}}],["symbol-name:setPreviewLoading",{"id":"symbol-name:setPreviewLoading","kind":"symbol","language":"jsts","symbolName":"setPreviewLoading","metadata":{"unresolvedName":"setPreviewLoading"}}],["symbol-name:setPreviewError",{"id":"symbol-name:setPreviewError","kind":"symbol","language":"jsts","symbolName":"setPreviewError","metadata":{"unresolvedName":"setPreviewError"}}],["external:previewCacheRef.current.get",{"id":"external:previewCacheRef.current.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"previewCacheRef.current.get"}}],["symbol-name:setPreviewContent",{"id":"symbol-name:setPreviewContent","kind":"symbol","language":"jsts","symbolName":"setPreviewContent","metadata":{"unresolvedName":"setPreviewContent"}}],["symbol-name:getFileContent",{"id":"symbol-name:getFileContent","kind":"symbol","language":"jsts","symbolName":"getFileContent","metadata":{"unresolvedName":"getFileContent"}}],["external:previewCacheRef.current.set",{"id":"external:previewCacheRef.current.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"previewCacheRef.current.set"}}],["external:expandedPathsByDirectoryRef.current.delete",{"id":"external:expandedPathsByDirectoryRef.current.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"expandedPathsByDirectoryRef.current.delete"}}],["external:previewCacheRef.current.clear",{"id":"external:previewCacheRef.current.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"previewCacheRef.current.clear"}}],["symbol-name:loadRoot",{"id":"symbol-name:loadRoot","kind":"symbol","language":"jsts","symbolName":"loadRoot","metadata":{"unresolvedName":"loadRoot"}}],["symbol-name:loadStatuses",{"id":"symbol-name:loadStatuses","kind":"symbol","language":"jsts","symbolName":"loadStatuses","metadata":{"unresolvedName":"loadStatuses"}}],["external:expandedPathsByDirectoryRef.current.get",{"id":"external:expandedPathsByDirectoryRef.current.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"expandedPathsByDirectoryRef.current.get"}}],["symbol-name:collectPendingExpandedDirectoryPaths",{"id":"symbol-name:collectPendingExpandedDirectoryPaths","kind":"symbol","language":"jsts","symbolName":"collectPendingExpandedDirectoryPaths","metadata":{"unresolvedName":"collectPendingExpandedDirectoryPaths"}}],["external:pendingPaths.forEach",{"id":"external:pendingPaths.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"pendingPaths.forEach"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":411,"column":19,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:sortNodes",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:sortNodes","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","symbolName":"sortNodes","symbolKind":"function","exported":false,"metadata":{"line":384,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:[...nodes].sort",{"id":"external:[...nodes].sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"[...nodes].sort"}}],["external:a.name.toLowerCase().localeCompare",{"id":"external:a.name.toLowerCase().localeCompare","kind":"external","language":"jsts","metadata":{"unresolvedName":"a.name.toLowerCase().localeCompare"}}],["external:b.name.toLowerCase",{"id":"external:b.name.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"b.name.toLowerCase"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:findTreeNode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:findTreeNode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","symbolName":"findTreeNode","symbolKind":"function","exported":false,"metadata":{"line":395,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:updateTreeNode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:updateTreeNode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","symbolName":"updateTreeNode","symbolKind":"function","exported":false,"metadata":{"line":406,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:collectPendingExpandedDirectoryPaths",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:collectPendingExpandedDirectoryPaths","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","symbolName":"collectPendingExpandedDirectoryPaths","symbolKind":"function","exported":false,"metadata":{"line":425,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:pending.push",{"id":"external:pending.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"pending.push"}}],["symbol-name:visit",{"id":"symbol-name:visit","kind":"symbol","language":"jsts","symbolName":"visit","metadata":{"unresolvedName":"visit"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:visit",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:visit","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","symbolName":"visit","symbolKind":"function","exported":false,"metadata":{"line":428,"column":17,"cyclomaticComplexity":7,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:normalizePath",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:normalizePath","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","symbolName":"normalizePath","symbolKind":"function","exported":false,"metadata":{"line":450,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:result.startsWith",{"id":"external:result.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.startsWith"}}],["external:result.slice",{"id":"external:result.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.slice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:getFileStatusFromDiff",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:getFileStatusFromDiff","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","symbolName":"getFileStatusFromDiff","symbolKind":"function","exported":false,"metadata":{"line":457,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:computeDirectoryStatus",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:computeDirectoryStatus","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","symbolName":"computeDirectoryStatus","symbolKind":"function","exported":false,"metadata":{"line":470,"column":1,"cyclomaticComplexity":9,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:parts.slice(0, i).join",{"id":"external:parts.slice(0, i).join","kind":"external","language":"jsts","metadata":{"unresolvedName":"parts.slice(0, i).join"}}],["external:dirStatuses.get",{"id":"external:dirStatuses.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"dirStatuses.get"}}],["external:dirStatuses.set",{"id":"external:dirStatuses.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"dirStatuses.set"}}],["external:statusMap.has",{"id":"external:statusMap.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"statusMap.has"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","metadata":{"lineCount":178,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:requestGitWorkspaceCatalogRefresh",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:requestGitWorkspaceCatalogRefresh","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","symbolName":"requestGitWorkspaceCatalogRefresh","symbolKind":"function","exported":true,"metadata":{"line":19,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:refreshListeners.forEach",{"id":"external:refreshListeners.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"refreshListeners.forEach"}}],["symbol-name:listener",{"id":"symbol-name:listener","kind":"symbol","language":"jsts","symbolName":"listener","metadata":{"unresolvedName":"listener"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","symbolName":"useGitWorkspaceCatalog","symbolKind":"function","exported":true,"metadata":{"line":23,"column":1,"cyclomaticComplexity":21,"maxNestingDepth":4,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:directories.filter(Boolean).map",{"id":"external:directories.filter(Boolean).map","kind":"external","language":"jsts","metadata":{"unresolvedName":"directories.filter(Boolean).map"}}],["external:directories.filter",{"id":"external:directories.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"directories.filter"}}],["symbol-name:setCatalogState",{"id":"symbol-name:setCatalogState","kind":"symbol","language":"jsts","symbolName":"setCatalogState","metadata":{"unresolvedName":"setCatalogState"}}],["external:normalizedDirectories.map",{"id":"external:normalizedDirectories.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalizedDirectories.map"}}],["external:previousWorkspacesByRoot.set",{"id":"external:previousWorkspacesByRoot.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"previousWorkspacesByRoot.set"}}],["external:normalizedDirectorySet.has",{"id":"external:normalizedDirectorySet.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalizedDirectorySet.has"}}],["external:nextCatalog.set",{"id":"external:nextCatalog.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"nextCatalog.set"}}],["external:previousCatalog.get",{"id":"external:previousCatalog.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"previousCatalog.get"}}],["external:rootDirectories.add",{"id":"external:rootDirectories.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"rootDirectories.add"}}],["external:directoryToRoot.set",{"id":"external:directoryToRoot.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"directoryToRoot.set"}}],["external:rootDirectoryList.map",{"id":"external:rootDirectoryList.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"rootDirectoryList.map"}}],["external:rootToWorkspaces.set",{"id":"external:rootToWorkspaces.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"rootToWorkspaces.set"}}],["external:previousWorkspacesByRoot.get",{"id":"external:previousWorkspacesByRoot.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"previousWorkspacesByRoot.get"}}],["external:normalizedWorktrees.filter",{"id":"external:normalizedWorktrees.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalizedWorktrees.filter"}}],["external:worktree.toLowerCase",{"id":"external:worktree.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"worktree.toLowerCase"}}],["external:rootDirectory.toLowerCase",{"id":"external:rootDirectory.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"rootDirectory.toLowerCase"}}],["external:rootToWorkspaces.get",{"id":"external:rootToWorkspaces.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"rootToWorkspaces.get"}}],["external:refreshListeners.add",{"id":"external:refreshListeners.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"refreshListeners.add"}}],["external:refreshListeners.delete",{"id":"external:refreshListeners.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"refreshListeners.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":167,"column":12,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","metadata":{"lineCount":484,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","metadata":{"lineCount":623,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:createDeferred",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:createDeferred","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","symbolName":"createDeferred","symbolKind":"function","exported":false,"metadata":{"line":5,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":466,"column":48,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:getSessionStatusMock.mockClear",{"id":"external:getSessionStatusMock.mockClear","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSessionStatusMock.mockClear"}}],["external:getPendingPermissionsMock.mockClear",{"id":"external:getPendingPermissionsMock.mockClear","kind":"external","language":"jsts","metadata":{"unresolvedName":"getPendingPermissionsMock.mockClear"}}],["external:getPendingQuestionsMock.mockClear",{"id":"external:getPendingQuestionsMock.mockClear","kind":"external","language":"jsts","metadata":{"unresolvedName":"getPendingQuestionsMock.mockClear"}}],["external:replyPermissionMock.mockClear",{"id":"external:replyPermissionMock.mockClear","kind":"external","language":"jsts","metadata":{"unresolvedName":"replyPermissionMock.mockClear"}}],["external:childBelongsToSessionMock.mockReset",{"id":"external:childBelongsToSessionMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"childBelongsToSessionMock.mockReset"}}],["external:getFocusedSessionIdMock.mockReset",{"id":"external:getFocusedSessionIdMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"getFocusedSessionIdMock.mockReset"}}],["external:notificationPushMock.mockReset",{"id":"external:notificationPushMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"notificationPushMock.mockReset"}}],["external:playNotificationSoundDedupedMock.mockReset",{"id":"external:playNotificationSoundDedupedMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"playNotificationSoundDedupedMock.mockReset"}}],["external:getSoundSnapshotMock.mockReset",{"id":"external:getSoundSnapshotMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSoundSnapshotMock.mockReset"}}],["external:applyServerConnectedTimestampMock.mockReset",{"id":"external:applyServerConnectedTimestampMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"applyServerConnectedTimestampMock.mockReset"}}],["external:getActiveServerIdMock.mockReset",{"id":"external:getActiveServerIdMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"getActiveServerIdMock.mockReset"}}],["external:Object.values(activeSessionStoreMock).forEach",{"id":"external:Object.values(activeSessionStoreMock).forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"Object.values(activeSessionStoreMock).forEach"}}],["external:Object.values",{"id":"external:Object.values","kind":"external","language":"jsts","metadata":{"unresolvedName":"Object.values"}}],["external:value.mockClear",{"id":"external:value.mockClear","kind":"external","language":"jsts","metadata":{"unresolvedName":"value.mockClear"}}],["external:getSoundSnapshotMock.mockReturnValue",{"id":"external:getSoundSnapshotMock.mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSoundSnapshotMock.mockReturnValue"}}],["external:getActiveServerIdMock.mockReturnValue",{"id":"external:getActiveServerIdMock.mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getActiveServerIdMock.mockReturnValue"}}],["external:activeSessionStoreMock.getSessionMeta.mockReturnValue",{"id":"external:activeSessionStoreMock.getSessionMeta.mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeSessionStoreMock.getSessionMeta.mockReturnValue"}}],["external:activeSessionStoreMock.getSnapshot.mockReturnValue",{"id":"external:activeSessionStoreMock.getSnapshot.mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeSessionStoreMock.getSnapshot.mockReturnValue"}}],["external:expect(callbacks).toBeDefined",{"id":"external:expect(callbacks).toBeDefined","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(callbacks).toBeDefined"}}],["external:callbacks!.onServerConnected",{"id":"external:callbacks!.onServerConnected","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks!.onServerConnected"}}],["external:expect(applyServerConnectedTimestampMock).toHaveBeenCalledWith",{"id":"external:expect(applyServerConnectedTimestampMock).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(applyServerConnectedTimestampMock).toHaveBeenCalledWith"}}],["external:getPendingPermissionsMock.mockResolvedValue",{"id":"external:getPendingPermissionsMock.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getPendingPermissionsMock.mockResolvedValue"}}],["external:getPendingQuestionsMock.mockResolvedValue",{"id":"external:getPendingQuestionsMock.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getPendingQuestionsMock.mockResolvedValue"}}],["external:getSessionStatusMock.mockImplementation",{"id":"external:getSessionStatusMock.mockImplementation","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSessionStatusMock.mockImplementation"}}],["external:statusDeferreds.set",{"id":"external:statusDeferreds.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"statusDeferreds.set"}}],["external:expect(getSessionStatusMock).toHaveBeenCalledWith",{"id":"external:expect(getSessionStatusMock).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getSessionStatusMock).toHaveBeenCalledWith"}}],["external:statusDeferreds.get('/two')?.resolve",{"id":"external:statusDeferreds.get('/two')?.resolve","kind":"external","language":"jsts","metadata":{"unresolvedName":"statusDeferreds.get('/two')?.resolve"}}],["external:statusDeferreds.get",{"id":"external:statusDeferreds.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"statusDeferreds.get"}}],["external:expect(activeSessionStoreMock.mergeStatusRefresh).toHaveBeenCalledTimes",{"id":"external:expect(activeSessionStoreMock.mergeStatusRefresh).toHaveBeenCalledTimes","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(activeSessionStoreMock.mergeStatusRefresh).toHaveBeenCalledTimes"}}],["external:expect(activeSessionStoreMock.mergeStatusRefresh).toHaveBeenCalledWith",{"id":"external:expect(activeSessionStoreMock.mergeStatusRefresh).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(activeSessionStoreMock.mergeStatusRefresh).toHaveBeenCalledWith"}}],["external:statusDeferreds.get('/one')?.resolve",{"id":"external:statusDeferreds.get('/one')?.resolve","kind":"external","language":"jsts","metadata":{"unresolvedName":"statusDeferreds.get('/one')?.resolve"}}],["external:expect(activeSessionStoreMock.mergeStatusRefresh).not.toHaveBeenCalledWith",{"id":"external:expect(activeSessionStoreMock.mergeStatusRefresh).not.toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(activeSessionStoreMock.mergeStatusRefresh).not.toHaveBeenCalledWith"}}],["external:callbacks!.onPermissionAsked",{"id":"external:callbacks!.onPermissionAsked","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks!.onPermissionAsked"}}],["external:statusDeferred.resolve",{"id":"external:statusDeferred.resolve","kind":"external","language":"jsts","metadata":{"unresolvedName":"statusDeferred.resolve"}}],["external:expect(activeSessionStoreMock.initializePendingRequests).toHaveBeenCalled",{"id":"external:expect(activeSessionStoreMock.initializePendingRequests).toHaveBeenCalled","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(activeSessionStoreMock.initializePendingRequests).toHaveBeenCalled"}}],["external:expect(activeSessionStoreMock.addPendingRequest).toHaveBeenNthCalledWith",{"id":"external:expect(activeSessionStoreMock.addPendingRequest).toHaveBeenNthCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(activeSessionStoreMock.addPendingRequest).toHaveBeenNthCalledWith"}}],["external:activeSessionStoreMock.getSessionMeta.mockImplementation",{"id":"external:activeSessionStoreMock.getSessionMeta.mockImplementation","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeSessionStoreMock.getSessionMeta.mockImplementation"}}],["external:callbacks!.onQuestionAsked",{"id":"external:callbacks!.onQuestionAsked","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks!.onQuestionAsked"}}],["external:expect(activeSessionStoreMock.mergePendingRequests).toHaveBeenCalledTimes",{"id":"external:expect(activeSessionStoreMock.mergePendingRequests).toHaveBeenCalledTimes","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(activeSessionStoreMock.mergePendingRequests).toHaveBeenCalledTimes"}}],["external:activeSessionStoreMock.addPendingRequest.mock.calls.filter",{"id":"external:activeSessionStoreMock.addPendingRequest.mock.calls.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeSessionStoreMock.addPendingRequest.mock.calls.filter"}}],["external:getFocusedSessionIdMock.mockReturnValue",{"id":"external:getFocusedSessionIdMock.mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getFocusedSessionIdMock.mockReturnValue"}}],["external:childBelongsToSessionMock.mockImplementation",{"id":"external:childBelongsToSessionMock.mockImplementation","kind":"external","language":"jsts","metadata":{"unresolvedName":"childBelongsToSessionMock.mockImplementation"}}],["external:expect(notificationPushMock).not.toHaveBeenCalled",{"id":"external:expect(notificationPushMock).not.toHaveBeenCalled","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(notificationPushMock).not.toHaveBeenCalled"}}],["external:expect(playNotificationSoundDedupedMock).not.toHaveBeenCalled",{"id":"external:expect(playNotificationSoundDedupedMock).not.toHaveBeenCalled","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(playNotificationSoundDedupedMock).not.toHaveBeenCalled"}}],["external:expect(consumerAskedMock).not.toHaveBeenCalled",{"id":"external:expect(consumerAskedMock).not.toHaveBeenCalled","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(consumerAskedMock).not.toHaveBeenCalled"}}],["external:callbacks!.onQuestionReplied",{"id":"external:callbacks!.onQuestionReplied","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks!.onQuestionReplied"}}],["external:callbacks!.onSessionCreated",{"id":"external:callbacks!.onSessionCreated","kind":"external","language":"jsts","metadata":{"unresolvedName":"callbacks!.onSessionCreated"}}],["external:expect(consumerAskedMock).toHaveBeenCalledTimes",{"id":"external:expect(consumerAskedMock).toHaveBeenCalledTimes","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(consumerAskedMock).toHaveBeenCalledTimes"}}],["external:expect(consumerAskedMock).toHaveBeenCalledWith",{"id":"external:expect(consumerAskedMock).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(consumerAskedMock).toHaveBeenCalledWith"}}],["symbol-name:unregister",{"id":"symbol-name:unregister","kind":"symbol","language":"jsts","symbolName":"unregister","metadata":{"unresolvedName":"unregister"}}],["external:expect(playNotificationSoundDedupedMock).toHaveBeenCalledWith",{"id":"external:expect(playNotificationSoundDedupedMock).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(playNotificationSoundDedupedMock).toHaveBeenCalledWith"}}],["symbol-name:beforeTrigger",{"id":"symbol-name:beforeTrigger","kind":"symbol","language":"jsts","symbolName":"beforeTrigger","metadata":{"unresolvedName":"beforeTrigger"}}],["symbol-name:callbacks![trigger as keyof typeof callbacks]",{"id":"symbol-name:callbacks![trigger as keyof typeof callbacks]","kind":"symbol","language":"jsts","symbolName":"callbacks![trigger as keyof typeof callbacks]","metadata":{"unresolvedName":"callbacks![trigger as keyof typeof callbacks]"}}],["external:expect(notificationPushMock).toHaveBeenCalledTimes",{"id":"external:expect(notificationPushMock).toHaveBeenCalledTimes","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(notificationPushMock).toHaveBeenCalledTimes"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:beforeTrigger",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:beforeTrigger","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","symbolName":"beforeTrigger","symbolKind":"function","exported":false,"metadata":{"line":452,"column":22,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:registerSessionConsumer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:registerSessionConsumer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"registerSessionConsumer","symbolKind":"function","exported":true,"metadata":{"line":58,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:sessionConsumers.set",{"id":"external:sessionConsumers.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionConsumers.set"}}],["external:sessionConsumers.delete",{"id":"external:sessionConsumers.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionConsumers.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":614,"column":19,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:updateConsumerSessionId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:updateConsumerSessionId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"updateConsumerSessionId","symbolKind":"function","exported":true,"metadata":{"line":70,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:sessionConsumers.get",{"id":"external:sessionConsumers.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionConsumers.get"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:dispatchToConsumers",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:dispatchToConsumers","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"dispatchToConsumers","symbolKind":"function","exported":false,"metadata":{"line":76,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:sessionConsumers.values",{"id":"external:sessionConsumers.values","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionConsumers.values"}}],["external:childSessionStore.belongsToSession",{"id":"external:childSessionStore.belongsToSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"childSessionStore.belongsToSession"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:hasConsumerForSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:hasConsumerForSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"hasConsumerForSession","symbolKind":"function","exported":false,"metadata":{"line":89,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:hasOtherConsumerForSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:hasOtherConsumerForSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"hasOtherConsumerForSession","symbolKind":"function","exported":true,"metadata":{"line":99,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:sessionConsumers.entries",{"id":"external:sessionConsumers.entries","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionConsumers.entries"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:cleanupExpired",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:cleanupExpired","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"cleanupExpired","symbolKind":"function","exported":false,"metadata":{"line":124,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:arr.filter",{"id":"external:arr.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"arr.filter"}}],["external:map.delete",{"id":"external:map.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"map.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:addPending",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:addPending","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"addPending","symbolKind":"function","exported":false,"metadata":{"line":136,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:drainPending",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:drainPending","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"drainPending","symbolKind":"function","exported":false,"metadata":{"line":142,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:arr.map",{"id":"external:arr.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"arr.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:getScopeKey",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:getScopeKey","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"getScopeKey","symbolKind":"function","exported":false,"metadata":{"line":149,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:directories.join",{"id":"external:directories.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"directories.join"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:removePendingByRequestId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:removePendingByRequestId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"removePendingByRequestId","symbolKind":"function","exported":false,"metadata":{"line":154,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"fetchActiveScopeData","symbolKind":"function","exported":false,"metadata":{"line":170,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:scopes.map",{"id":"external:scopes.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"scopes.map"}}],["external:getSessionStatus(directory).catch",{"id":"external:getSessionStatus(directory).catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSessionStatus(directory).catch"}}],["symbol-name:getSessionStatus",{"id":"symbol-name:getSessionStatus","kind":"symbol","language":"jsts","symbolName":"getSessionStatus","metadata":{"unresolvedName":"getSessionStatus"}}],["external:getPendingPermissions(undefined, directory).catch",{"id":"external:getPendingPermissions(undefined, directory).catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"getPendingPermissions(undefined, directory).catch"}}],["external:getPendingQuestions(undefined, directory).catch",{"id":"external:getPendingQuestions(undefined, directory).catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"getPendingQuestions(undefined, directory).catch"}}],["external:results.forEach",{"id":"external:results.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"results.forEach"}}],["external:Object.keys(statusMap).forEach",{"id":"external:Object.keys(statusMap).forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"Object.keys(statusMap).forEach"}}],["external:sessionMetaEntries.push",{"id":"external:sessionMetaEntries.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionMetaEntries.push"}}],["external:permissions.forEach",{"id":"external:permissions.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"permissions.forEach"}}],["external:permissionMap.set",{"id":"external:permissionMap.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"permissionMap.set"}}],["external:questions.forEach",{"id":"external:questions.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"questions.forEach"}}],["external:questionMap.set",{"id":"external:questionMap.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"questionMap.set"}}],["external:permissionMap.values",{"id":"external:permissionMap.values","kind":"external","language":"jsts","metadata":{"unresolvedName":"permissionMap.values"}}],["external:questionMap.values",{"id":"external:questionMap.values","kind":"external","language":"jsts","metadata":{"unresolvedName":"questionMap.values"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:belongsToCurrentSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:belongsToCurrentSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"belongsToCurrentSession","symbolKind":"function","exported":false,"metadata":{"line":227,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["symbol-name:hasConsumerForSession",{"id":"symbol-name:hasConsumerForSession","kind":"symbol","language":"jsts","symbolName":"hasConsumerForSession","metadata":{"unresolvedName":"hasConsumerForSession"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:isSessionDirectlyOpen",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:isSessionDirectlyOpen","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"isSessionDirectlyOpen","symbolKind":"function","exported":false,"metadata":{"line":252,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"useGlobalEvents","symbolKind":"function","exported":true,"metadata":{"line":263,"column":1,"cyclomaticComplexity":66,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:pendingScrollSessionIds.add",{"id":"external:pendingScrollSessionIds.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"pendingScrollSessionIds.add"}}],["symbol-name:dispatchToConsumers",{"id":"symbol-name:dispatchToConsumers","kind":"symbol","language":"jsts","symbolName":"dispatchToConsumers","metadata":{"unresolvedName":"dispatchToConsumers"}}],["external:cb.onScrollRequest",{"id":"external:cb.onScrollRequest","kind":"external","language":"jsts","metadata":{"unresolvedName":"cb.onScrollRequest"}}],["external:pendingScrollSessionIds.clear",{"id":"external:pendingScrollSessionIds.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"pendingScrollSessionIds.clear"}}],["external:fetchActiveScopeData(directoriesRef.current)\n .then",{"id":"external:fetchActiveScopeData(directoriesRef.current)\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"fetchActiveScopeData(directoriesRef.current)\n .then"}}],["symbol-name:fetchActiveScopeData",{"id":"symbol-name:fetchActiveScopeData","kind":"symbol","language":"jsts","symbolName":"fetchActiveScopeData","metadata":{"unresolvedName":"fetchActiveScopeData"}}],["external:activeSessionStore.mergeStatusRefresh",{"id":"external:activeSessionStore.mergeStatusRefresh","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeSessionStore.mergeStatusRefresh"}}],["external:activeSessionStore.mergePendingRequests",{"id":"external:activeSessionStore.mergePendingRequests","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeSessionStore.mergePendingRequests"}}],["external:activeSessionStore.initialize",{"id":"external:activeSessionStore.initialize","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeSessionStore.initialize"}}],["external:activeSessionStore.initializePendingRequests",{"id":"external:activeSessionStore.initializePendingRequests","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeSessionStore.initializePendingRequests"}}],["symbol-name:getScopeKey",{"id":"symbol-name:getScopeKey","kind":"symbol","language":"jsts","symbolName":"getScopeKey","metadata":{"unresolvedName":"getScopeKey"}}],["external:latePendingRequests.values",{"id":"external:latePendingRequests.values","kind":"external","language":"jsts","metadata":{"unresolvedName":"latePendingRequests.values"}}],["external:currentDirectories.includes",{"id":"external:currentDirectories.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"currentDirectories.includes"}}],["external:activeSessionStore.addPendingRequest",{"id":"external:activeSessionStore.addPendingRequest","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeSessionStore.addPendingRequest"}}],["external:activeSessionStore.setSessionMetaBulk",{"id":"external:activeSessionStore.setSessionMetaBulk","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeSessionStore.setSessionMetaBulk"}}],["symbol-name:scheduleScroll",{"id":"symbol-name:scheduleScroll","kind":"symbol","language":"jsts","symbolName":"scheduleScroll","metadata":{"unresolvedName":"scheduleScroll"}}],["external:messageStore.handlePartDelta",{"id":"external:messageStore.handlePartDelta","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.handlePartDelta"}}],["external:messageStore.handlePartRemoved",{"id":"external:messageStore.handlePartRemoved","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.handlePartRemoved"}}],["symbol-name:belongsToCurrentSession",{"id":"symbol-name:belongsToCurrentSession","kind":"symbol","language":"jsts","symbolName":"belongsToCurrentSession","metadata":{"unresolvedName":"belongsToCurrentSession"}}],["symbol-name:drainPending",{"id":"symbol-name:drainPending","kind":"symbol","language":"jsts","symbolName":"drainPending","metadata":{"unresolvedName":"drainPending"}}],["external:cb.onPermissionAsked",{"id":"external:cb.onPermissionAsked","kind":"external","language":"jsts","metadata":{"unresolvedName":"cb.onPermissionAsked"}}],["external:cb.onQuestionAsked",{"id":"external:cb.onQuestionAsked","kind":"external","language":"jsts","metadata":{"unresolvedName":"cb.onQuestionAsked"}}],["external:activeSessionStore.setSessionMeta",{"id":"external:activeSessionStore.setSessionMeta","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeSessionStore.setSessionMeta"}}],["symbol-name:cleanupExpired",{"id":"symbol-name:cleanupExpired","kind":"symbol","language":"jsts","symbolName":"cleanupExpired","metadata":{"unresolvedName":"cleanupExpired"}}],["external:childSessionStore.markIdle",{"id":"external:childSessionStore.markIdle","kind":"external","language":"jsts","metadata":{"unresolvedName":"childSessionStore.markIdle"}}],["external:cb.onSessionIdle",{"id":"external:cb.onSessionIdle","kind":"external","language":"jsts","metadata":{"unresolvedName":"cb.onSessionIdle"}}],["external:messageStore.handleSessionError",{"id":"external:messageStore.handleSessionError","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.handleSessionError"}}],["external:childSessionStore.markError",{"id":"external:childSessionStore.markError","kind":"external","language":"jsts","metadata":{"unresolvedName":"childSessionStore.markError"}}],["external:activeSessionStore.updateStatus",{"id":"external:activeSessionStore.updateStatus","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeSessionStore.updateStatus"}}],["external:activeSessionStore.getSessionMeta",{"id":"external:activeSessionStore.getSessionMeta","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeSessionStore.getSessionMeta"}}],["external:error.sessionID.slice",{"id":"external:error.sessionID.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"error.sessionID.slice"}}],["external:notificationStore.push",{"id":"external:notificationStore.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"notificationStore.push"}}],["symbol-name:isSessionDirectlyOpen",{"id":"symbol-name:isSessionDirectlyOpen","kind":"symbol","language":"jsts","symbolName":"isSessionDirectlyOpen","metadata":{"unresolvedName":"isSessionDirectlyOpen"}}],["external:soundStore.getSnapshot",{"id":"external:soundStore.getSnapshot","kind":"external","language":"jsts","metadata":{"unresolvedName":"soundStore.getSnapshot"}}],["symbol-name:playNotificationSoundDeduped",{"id":"symbol-name:playNotificationSoundDeduped","kind":"symbol","language":"jsts","symbolName":"playNotificationSoundDeduped","metadata":{"unresolvedName":"playNotificationSoundDeduped"}}],["external:cb.onSessionError",{"id":"external:cb.onSessionError","kind":"external","language":"jsts","metadata":{"unresolvedName":"cb.onSessionError"}}],["external:serverStore.applyServerConnectedTimestamp",{"id":"external:serverStore.applyServerConnectedTimestamp","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStore.applyServerConnectedTimestamp"}}],["external:replyPermission(request.id, 'once', undefined, dir, request.sessionID).catch",{"id":"external:replyPermission(request.id, 'once', undefined, dir, request.sessionID).catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"replyPermission(request.id, 'once', undefined, dir, request.sessionID).catch"}}],["symbol-name:replyPermission",{"id":"symbol-name:replyPermission","kind":"symbol","language":"jsts","symbolName":"replyPermission","metadata":{"unresolvedName":"replyPermission"}}],["external:request.sessionID.slice",{"id":"external:request.sessionID.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"request.sessionID.slice"}}],["external:latePendingRequests.set",{"id":"external:latePendingRequests.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"latePendingRequests.set"}}],["symbol-name:addPending",{"id":"symbol-name:addPending","kind":"symbol","language":"jsts","symbolName":"addPending","metadata":{"unresolvedName":"addPending"}}],["symbol-name:removePendingByRequestId",{"id":"symbol-name:removePendingByRequestId","kind":"symbol","language":"jsts","symbolName":"removePendingByRequestId","metadata":{"unresolvedName":"removePendingByRequestId"}}],["external:latePendingRequests.delete",{"id":"external:latePendingRequests.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"latePendingRequests.delete"}}],["external:activeSessionStore.resolvePendingRequest",{"id":"external:activeSessionStore.resolvePendingRequest","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeSessionStore.resolvePendingRequest"}}],["external:cb.onPermissionReplied",{"id":"external:cb.onPermissionReplied","kind":"external","language":"jsts","metadata":{"unresolvedName":"cb.onPermissionReplied"}}],["external:cb.onQuestionReplied",{"id":"external:cb.onQuestionReplied","kind":"external","language":"jsts","metadata":{"unresolvedName":"cb.onQuestionReplied"}}],["external:cb.onQuestionRejected",{"id":"external:cb.onQuestionRejected","kind":"external","language":"jsts","metadata":{"unresolvedName":"cb.onQuestionRejected"}}],["external:activeSessionStore.getSnapshot",{"id":"external:activeSessionStore.getSnapshot","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeSessionStore.getSnapshot"}}],["external:data.sessionID.slice",{"id":"external:data.sessionID.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"data.sessionID.slice"}}],["symbol-name:fetchAndInitialize",{"id":"symbol-name:fetchAndInitialize","kind":"symbol","language":"jsts","symbolName":"fetchAndInitialize","metadata":{"unresolvedName":"fetchAndInitialize"}}],["external:consumer.callbacks.onReconnected",{"id":"external:consumer.callbacks.onReconnected","kind":"external","language":"jsts","metadata":{"unresolvedName":"consumer.callbacks.onReconnected"}}],["external:refreshRef.current",{"id":"external:refreshRef.current","kind":"external","language":"jsts","metadata":{"unresolvedName":"refreshRef.current"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:scheduleScroll",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:scheduleScroll","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"scheduleScroll","symbolKind":"function","exported":false,"metadata":{"line":287,"column":28,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchAndInitialize",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchAndInitialize","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"fetchAndInitialize","symbolKind":"function","exported":false,"metadata":{"line":306,"column":32,"cyclomaticComplexity":10,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onMessageUpdated",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onMessageUpdated","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"onMessageUpdated","symbolKind":"function","exported":false,"metadata":{"line":352,"column":25,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPartUpdated",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPartUpdated","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"onPartUpdated","symbolKind":"function","exported":false,"metadata":{"line":356,"column":22,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPartDelta",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPartDelta","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"onPartDelta","symbolKind":"function","exported":false,"metadata":{"line":364,"column":20,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPartRemoved",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPartRemoved","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"onPartRemoved","symbolKind":"function","exported":false,"metadata":{"line":369,"column":22,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionCreated",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionCreated","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"onSessionCreated","symbolKind":"function","exported":false,"metadata":{"line":377,"column":25,"cyclomaticComplexity":5,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionIdle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionIdle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"onSessionIdle","symbolKind":"function","exported":false,"metadata":{"line":401,"column":22,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionError",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionError","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"onSessionError","symbolKind":"function","exported":false,"metadata":{"line":407,"column":23,"cyclomaticComplexity":11,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionUpdated",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionUpdated","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"onSessionUpdated","symbolKind":"function","exported":false,"metadata":{"line":432,"column":25,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onServerConnected",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onServerConnected","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"onServerConnected","symbolKind":"function","exported":false,"metadata":{"line":445,"column":26,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionAsked",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionAsked","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"onPermissionAsked","symbolKind":"function","exported":false,"metadata":{"line":455,"column":26,"cyclomaticComplexity":9,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionReplied",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionReplied","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"onPermissionReplied","symbolKind":"function","exported":false,"metadata":{"line":495,"column":28,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionAsked",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionAsked","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"onQuestionAsked","symbolKind":"function","exported":false,"metadata":{"line":509,"column":24,"cyclomaticComplexity":8,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionReplied",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionReplied","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"onQuestionReplied","symbolKind":"function","exported":false,"metadata":{"line":541,"column":26,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionRejected",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionRejected","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"onQuestionRejected","symbolKind":"function","exported":false,"metadata":{"line":551,"column":27,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionStatus",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionStatus","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"onSessionStatus","symbolKind":"function","exported":false,"metadata":{"line":565,"column":24,"cyclomaticComplexity":11,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onReconnected",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onReconnected","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","symbolName":"onReconnected","symbolKind":"function","exported":false,"metadata":{"line":590,"column":22,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:getMatchMediaMatches",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:getMatchMediaMatches","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","symbolName":"getMatchMediaMatches","symbolKind":"function","exported":false,"metadata":{"line":13,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:getInputCapabilities",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:getInputCapabilities","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","symbolName":"getInputCapabilities","symbolKind":"function","exported":true,"metadata":{"line":21,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getMatchMediaMatches",{"id":"symbol-name:getMatchMediaMatches","kind":"symbol","language":"jsts","symbolName":"getMatchMediaMatches","metadata":{"unresolvedName":"getMatchMediaMatches"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","symbolName":"useInputCapabilities","symbolKind":"function","exported":true,"metadata":{"line":35,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setCapabilities",{"id":"symbol-name:setCapabilities","kind":"symbol","language":"jsts","symbolName":"setCapabilities","metadata":{"unresolvedName":"setCapabilities"}}],["symbol-name:getInputCapabilities",{"id":"symbol-name:getInputCapabilities","kind":"symbol","language":"jsts","symbolName":"getInputCapabilities","metadata":{"unresolvedName":"getInputCapabilities"}}],["external:canHoverMediaQuery.addEventListener",{"id":"external:canHoverMediaQuery.addEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"canHoverMediaQuery.addEventListener"}}],["external:coarsePointerMediaQuery.addEventListener",{"id":"external:coarsePointerMediaQuery.addEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"coarsePointerMediaQuery.addEventListener"}}],["external:canHoverMediaQuery.addListener",{"id":"external:canHoverMediaQuery.addListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"canHoverMediaQuery.addListener"}}],["external:coarsePointerMediaQuery.addListener",{"id":"external:coarsePointerMediaQuery.addListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"coarsePointerMediaQuery.addListener"}}],["external:canHoverMediaQuery.removeEventListener",{"id":"external:canHoverMediaQuery.removeEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"canHoverMediaQuery.removeEventListener"}}],["external:coarsePointerMediaQuery.removeEventListener",{"id":"external:coarsePointerMediaQuery.removeEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"coarsePointerMediaQuery.removeEventListener"}}],["external:canHoverMediaQuery.removeListener",{"id":"external:canHoverMediaQuery.removeListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"canHoverMediaQuery.removeListener"}}],["external:coarsePointerMediaQuery.removeListener",{"id":"external:coarsePointerMediaQuery.removeListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"coarsePointerMediaQuery.removeListener"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":59,"column":12,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:handleChange",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:handleChange","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","symbolName":"handleChange","symbolKind":"function","exported":false,"metadata":{"line":43,"column":26,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","metadata":{"lineCount":55,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:observe",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:observe","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","symbolName":"observe","symbolKind":"function","exported":false,"metadata":{"line":14,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:unobserve",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:unobserve","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","symbolName":"unobserve","symbolKind":"function","exported":false,"metadata":{"line":15,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:disconnect",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:disconnect","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","symbolName":"disconnect","symbolKind":"function","exported":false,"metadata":{"line":16,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:InViewHarness",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:InViewHarness","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","symbolName":"InViewHarness","symbolKind":"function","exported":false,"metadata":{"line":19,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":45,"column":9,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:IntersectionObserverMock.instance?.callback",{"id":"external:IntersectionObserverMock.instance?.callback","kind":"external","language":"jsts","metadata":{"unresolvedName":"IntersectionObserverMock.instance?.callback"}}],["external:expect(screen.getByTestId('state')).toHaveTextContent",{"id":"external:expect(screen.getByTestId('state')).toHaveTextContent","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(screen.getByTestId('state')).toHaveTextContent"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:useInView",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:useInView","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts","symbolName":"useInView","symbolKind":"function","exported":true,"metadata":{"line":3,"column":1,"cyclomaticComplexity":9,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setInView",{"id":"symbol-name:setInView","kind":"symbol","language":"jsts","symbolName":"setInView","metadata":{"unresolvedName":"setInView"}}],["symbol-name:setHasTriggered",{"id":"symbol-name:setHasTriggered","kind":"symbol","language":"jsts","symbolName":"setHasTriggered","metadata":{"unresolvedName":"setHasTriggered"}}],["external:observer.unobserve",{"id":"external:observer.unobserve","kind":"external","language":"jsts","metadata":{"unresolvedName":"observer.unobserve"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":35,"column":12,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:useIsMobile",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:useIsMobile","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts","symbolName":"useIsMobile","symbolKind":"function","exported":true,"metadata":{"line":5,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setIsMobile",{"id":"symbol-name:setIsMobile","kind":"symbol","language":"jsts","symbolName":"setIsMobile","metadata":{"unresolvedName":"setIsMobile"}}],["symbol-name:checkMobile",{"id":"symbol-name:checkMobile","kind":"symbol","language":"jsts","symbolName":"checkMobile","metadata":{"unresolvedName":"checkMobile"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":8,"column":13,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:checkMobile",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:checkMobile","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts","symbolName":"checkMobile","symbolKind":"function","exported":false,"metadata":{"line":9,"column":25,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingStore",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingStore","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","symbolName":"useKeybindingStore","symbolKind":"function","exported":true,"metadata":{"line":21,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:keybindingStore.subscribe.bind",{"id":"external:keybindingStore.subscribe.bind","kind":"external","language":"jsts","metadata":{"unresolvedName":"keybindingStore.subscribe.bind"}}],["external:keybindingStore.getAll",{"id":"external:keybindingStore.getAll","kind":"external","language":"jsts","metadata":{"unresolvedName":"keybindingStore.getAll"}}],["external:keybindingStore.setKeybinding",{"id":"external:keybindingStore.setKeybinding","kind":"external","language":"jsts","metadata":{"unresolvedName":"keybindingStore.setKeybinding"}}],["external:keybindingStore.resetKeybinding",{"id":"external:keybindingStore.resetKeybinding","kind":"external","language":"jsts","metadata":{"unresolvedName":"keybindingStore.resetKeybinding"}}],["external:keybindingStore.resetAll",{"id":"external:keybindingStore.resetAll","kind":"external","language":"jsts","metadata":{"unresolvedName":"keybindingStore.resetAll"}}],["external:keybindingStore.isKeyUsed",{"id":"external:keybindingStore.isKeyUsed","kind":"external","language":"jsts","metadata":{"unresolvedName":"keybindingStore.isKeyUsed"}}],["external:keybindingStore.getByCategory",{"id":"external:keybindingStore.getByCategory","kind":"external","language":"jsts","metadata":{"unresolvedName":"keybindingStore.getByCategory"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":130,"column":12,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useGlobalKeybindings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useGlobalKeybindings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","symbolName":"useGlobalKeybindings","symbolKind":"function","exported":true,"metadata":{"line":69,"column":1,"cyclomaticComplexity":20,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:target.closest",{"id":"external:target.closest","kind":"external","language":"jsts","metadata":{"unresolvedName":"target.closest"}}],["external:['cancelMessage', 'sendMessage'].includes",{"id":"external:['cancelMessage', 'sendMessage'].includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"['cancelMessage', 'sendMessage'].includes"}}],["symbol-name:handler",{"id":"symbol-name:handler","kind":"symbol","language":"jsts","symbolName":"handler","metadata":{"unresolvedName":"handler"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:handleKeyDown",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:handleKeyDown","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","symbolName":"handleKeyDown","symbolKind":"function","exported":false,"metadata":{"line":73,"column":27,"cyclomaticComplexity":19,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingLabel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingLabel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","symbolName":"useKeybindingLabel","symbolKind":"function","exported":true,"metadata":{"line":139,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:keybindings.find",{"id":"external:keybindings.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"keybindings.find"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","metadata":{"lineCount":119,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","symbolName":"useMessageAnimation","symbolKind":"function","exported":true,"metadata":{"line":8,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:timeouts.forEach",{"id":"external:timeouts.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"timeouts.forEach"}}],["external:timeouts.clear",{"id":"external:timeouts.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"timeouts.clear"}}],["external:timeoutsRef.current.delete",{"id":"external:timeoutsRef.current.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"timeoutsRef.current.delete"}}],["external:timeoutsRef.current.add",{"id":"external:timeoutsRef.current.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"timeoutsRef.current.add"}}],["external:refs.current.messageRefs.set",{"id":"external:refs.current.messageRefs.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"refs.current.messageRefs.set"}}],["external:refs.current.messageRefs.delete",{"id":"external:refs.current.messageRefs.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"refs.current.messageRefs.delete"}}],["external:messageIds.forEach",{"id":"external:messageIds.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageIds.forEach"}}],["external:refs.current.messageRefs.get",{"id":"external:refs.current.messageRefs.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"refs.current.messageRefs.get"}}],["symbol-name:safeTimeout",{"id":"symbol-name:safeTimeout","kind":"symbol","language":"jsts","symbolName":"safeTimeout","metadata":{"unresolvedName":"safeTimeout"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":102,"column":21,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:useModalAnimation",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:useModalAnimation","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts","symbolName":"useModalAnimation","symbolKind":"function","exported":true,"metadata":{"line":11,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":31,"column":13,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:handleKeyDown",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:handleKeyDown","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts","symbolName":"handleKeyDown","symbolKind":"function","exported":false,"metadata":{"line":32,"column":27,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","metadata":{"lineCount":118,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","metadata":{"lineCount":96,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:onServerChange",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:onServerChange","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","symbolName":"onServerChange","symbolKind":"function","exported":false,"metadata":{"line":12,"column":21,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:onServerChangeCallbacks.push",{"id":"external:onServerChangeCallbacks.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"onServerChangeCallbacks.push"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":108,"column":15,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:getActiveModelsMock.mockReset",{"id":"external:getActiveModelsMock.mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"getActiveModelsMock.mockReset"}}],["external:getActiveModelsMock.mockResolvedValue",{"id":"external:getActiveModelsMock.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getActiveModelsMock.mockResolvedValue"}}],["external:onServerChangeCallbacks.forEach",{"id":"external:onServerChangeCallbacks.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"onServerChangeCallbacks.forEach"}}],["external:getActiveModelsMock.mockReturnValue",{"id":"external:getActiveModelsMock.mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getActiveModelsMock.mockReturnValue"}}],["external:expect(result.current.isLoading).toBe",{"id":"external:expect(result.current.isLoading).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.isLoading).toBe"}}],["external:expect(result.current.models).toEqual",{"id":"external:expect(result.current.models).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.models).toEqual"}}],["symbol-name:resolvePromise",{"id":"symbol-name:resolvePromise","kind":"symbol","language":"jsts","symbolName":"resolvePromise","metadata":{"unresolvedName":"resolvePromise"}}],["external:expect(result.current.models).toHaveLength",{"id":"external:expect(result.current.models).toHaveLength","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.models).toHaveLength"}}],["external:result.current.refetch",{"id":"external:result.current.refetch","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.current.refetch"}}],["external:expect(result.current.models[1].id).toBe",{"id":"external:expect(result.current.models[1].id).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.models[1].id).toBe"}}],["external:expect(result.current.models[0].id).toBe",{"id":"external:expect(result.current.models[0].id).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.models[0].id).toBe"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_notify",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_notify","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","symbolName":"_notify","symbolKind":"function","exported":false,"metadata":{"line":24,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_setState",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_setState","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","symbolName":"_setState","symbolKind":"function","exported":false,"metadata":{"line":28,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:_notify",{"id":"symbol-name:_notify","kind":"symbol","language":"jsts","symbolName":"_notify","metadata":{"unresolvedName":"_notify"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_fetchModels",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_fetchModels","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","symbolName":"_fetchModels","symbolKind":"function","exported":false,"metadata":{"line":33,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:_setState",{"id":"symbol-name:_setState","kind":"symbol","language":"jsts","symbolName":"_setState","metadata":{"unresolvedName":"_setState"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":82,"column":13,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:_fetchModels",{"id":"symbol-name:_fetchModels","kind":"symbol","language":"jsts","symbolName":"_fetchModels","metadata":{"unresolvedName":"_fetchModels"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_subscribe",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_subscribe","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","symbolName":"_subscribe","symbolKind":"function","exported":false,"metadata":{"line":57,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:_listeners.add",{"id":"external:_listeners.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"_listeners.add"}}],["external:_listeners.delete",{"id":"external:_listeners.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"_listeners.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_getSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_getSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","symbolName":"_getSnapshot","symbolKind":"function","exported":false,"metadata":{"line":62,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:useModels",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:useModels","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","symbolName":"useModels","symbolKind":"function","exported":true,"metadata":{"line":77,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","metadata":{"lineCount":197,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","metadata":{"lineCount":176,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:set",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:set","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","symbolName":"set","symbolKind":"function","exported":false,"metadata":{"line":15,"column":10,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:storage.set",{"id":"external:storage.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"storage.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:remove",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:remove","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","symbolName":"remove","symbolKind":"function","exported":false,"metadata":{"line":18,"column":13,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:storage.delete",{"id":"external:storage.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"storage.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:saveModelVariantPref",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:saveModelVariantPref","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","symbolName":"saveModelVariantPref","symbolKind":"function","exported":false,"metadata":{"line":27,"column":25,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:variantPrefs.set",{"id":"external:variantPrefs.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"variantPrefs.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:saveSessionModelSelection",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:saveSessionModelSelection","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","symbolName":"saveSessionModelSelection","symbolKind":"function","exported":false,"metadata":{"line":32,"column":30,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:sessionSelections.set",{"id":"external:sessionSelections.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionSelections.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":183,"column":75,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:storage.clear",{"id":"external:storage.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"storage.clear"}}],["external:variantPrefs.clear",{"id":"external:variantPrefs.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"variantPrefs.clear"}}],["external:sessionSelections.clear",{"id":"external:sessionSelections.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionSelections.clear"}}],["external:expect(result.current.selectedModelKey).toBe",{"id":"external:expect(result.current.selectedModelKey).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.selectedModelKey).toBe"}}],["external:expect(result.current.currentModel?.name).toBe",{"id":"external:expect(result.current.currentModel?.name).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.currentModel?.name).toBe"}}],["external:expect(result.current.selectedVariant).toBe",{"id":"external:expect(result.current.selectedVariant).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.selectedVariant).toBe"}}],["external:result.current.handleVariantChange",{"id":"external:result.current.handleVariantChange","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.current.handleVariantChange"}}],["external:result.current.handleModelChange",{"id":"external:result.current.handleModelChange","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.current.handleModelChange"}}],["external:expect(storage.get(STORAGE_KEY_SELECTED_MODEL)).toBe",{"id":"external:expect(storage.get(STORAGE_KEY_SELECTED_MODEL)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(storage.get(STORAGE_KEY_SELECTED_MODEL)).toBe"}}],["external:storage.get",{"id":"external:storage.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"storage.get"}}],["external:expect(variantPrefs.get('openai:gpt-4.1')).toBe",{"id":"external:expect(variantPrefs.get('openai:gpt-4.1')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(variantPrefs.get('openai:gpt-4.1')).toBe"}}],["external:variantPrefs.get",{"id":"external:variantPrefs.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"variantPrefs.get"}}],["external:expect(variantPrefs.get('openai:gpt-4o-mini')).toBe",{"id":"external:expect(variantPrefs.get('openai:gpt-4o-mini')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(variantPrefs.get('openai:gpt-4o-mini')).toBe"}}],["external:result.current.restoreFromMessage",{"id":"external:result.current.restoreFromMessage","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.current.restoreFromMessage"}}],["external:expect(sessionSelections.get('session-1')).toEqual",{"id":"external:expect(sessionSelections.get('session-1')).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(sessionSelections.get('session-1')).toEqual"}}],["external:sessionSelections.get",{"id":"external:sessionSelections.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionSelections.get"}}],["external:expect(sessionSelections.get('session-2')).toEqual",{"id":"external:expect(sessionSelections.get('session-2')).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(sessionSelections.get('session-2')).toEqual"}}],["external:expect(result.current.selectedModelKey).toBeNull",{"id":"external:expect(result.current.selectedModelKey).toBeNull","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.selectedModelKey).toBeNull"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","symbolName":"useModelSelection","symbolKind":"function","exported":true,"metadata":{"line":35,"column":1,"cyclomaticComplexity":35,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:getSessionModelSelection",{"id":"symbol-name:getSessionModelSelection","kind":"symbol","language":"jsts","symbolName":"getSessionModelSelection","metadata":{"unresolvedName":"getSessionModelSelection"}}],["symbol-name:getModelVariantPref",{"id":"symbol-name:getModelVariantPref","kind":"symbol","language":"jsts","symbolName":"getModelVariantPref","metadata":{"unresolvedName":"getModelVariantPref"}}],["symbol-name:setSelection",{"id":"symbol-name:setSelection","kind":"symbol","language":"jsts","symbolName":"setSelection","metadata":{"unresolvedName":"setSelection"}}],["symbol-name:saveSessionModelSelection",{"id":"symbol-name:saveSessionModelSelection","kind":"symbol","language":"jsts","symbolName":"saveSessionModelSelection","metadata":{"unresolvedName":"saveSessionModelSelection"}}],["external:serverStorage.remove",{"id":"external:serverStorage.remove","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStorage.remove"}}],["symbol-name:saveModelVariantPref",{"id":"symbol-name:saveModelVariantPref","kind":"symbol","language":"jsts","symbolName":"saveModelVariantPref","metadata":{"unresolvedName":"saveModelVariantPref"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":151,"column":5,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:ensureServiceWorker",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:ensureServiceWorker","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","symbolName":"ensureServiceWorker","symbolKind":"function","exported":false,"metadata":{"line":32,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:navigator.serviceWorker.register",{"id":"external:navigator.serviceWorker.register","kind":"external","language":"jsts","metadata":{"unresolvedName":"navigator.serviceWorker.register"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:sendTauriNotification",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:sendTauriNotification","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","symbolName":"sendTauriNotification","symbolKind":"function","exported":false,"metadata":{"line":53,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:isPermissionGranted",{"id":"symbol-name:isPermissionGranted","kind":"symbol","language":"jsts","symbolName":"isPermissionGranted","metadata":{"unresolvedName":"isPermissionGranted"}}],["symbol-name:requestPermission",{"id":"symbol-name:requestPermission","kind":"symbol","language":"jsts","symbolName":"requestPermission","metadata":{"unresolvedName":"requestPermission"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:checkTauriPermission",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:checkTauriPermission","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","symbolName":"checkTauriPermission","symbolKind":"function","exported":false,"metadata":{"line":73,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:requestTauriPermission",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:requestTauriPermission","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","symbolName":"requestTauriPermission","symbolKind":"function","exported":false,"metadata":{"line":83,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","symbolName":"useNotification","symbolKind":"function","exported":true,"metadata":{"line":97,"column":1,"cyclomaticComplexity":33,"maxNestingDepth":4,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:checkTauriPermission().then",{"id":"external:checkTauriPermission().then","kind":"external","language":"jsts","metadata":{"unresolvedName":"checkTauriPermission().then"}}],["symbol-name:checkTauriPermission",{"id":"symbol-name:checkTauriPermission","kind":"symbol","language":"jsts","symbolName":"checkTauriPermission","metadata":{"unresolvedName":"checkTauriPermission"}}],["symbol-name:ensureServiceWorker",{"id":"symbol-name:ensureServiceWorker","kind":"symbol","language":"jsts","symbolName":"ensureServiceWorker","metadata":{"unresolvedName":"ensureServiceWorker"}}],["external:window.focus",{"id":"external:window.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.focus"}}],["external:navigator.serviceWorker.addEventListener",{"id":"external:navigator.serviceWorker.addEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"navigator.serviceWorker.addEventListener"}}],["external:navigator.serviceWorker.removeEventListener",{"id":"external:navigator.serviceWorker.removeEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"navigator.serviceWorker.removeEventListener"}}],["symbol-name:requestTauriPermission",{"id":"symbol-name:requestTauriPermission","kind":"symbol","language":"jsts","symbolName":"requestTauriPermission","metadata":{"unresolvedName":"requestTauriPermission"}}],["symbol-name:setPermission",{"id":"symbol-name:setPermission","kind":"symbol","language":"jsts","symbolName":"setPermission","metadata":{"unresolvedName":"setPermission"}}],["external:Notification.requestPermission",{"id":"external:Notification.requestPermission","kind":"external","language":"jsts","metadata":{"unresolvedName":"Notification.requestPermission"}}],["symbol-name:setEnabledState",{"id":"symbol-name:setEnabledState","kind":"symbol","language":"jsts","symbolName":"setEnabledState","metadata":{"unresolvedName":"setEnabledState"}}],["external:localStorage.removeItem",{"id":"external:localStorage.removeItem","kind":"external","language":"jsts","metadata":{"unresolvedName":"localStorage.removeItem"}}],["symbol-name:sendTauriNotification",{"id":"symbol-name:sendTauriNotification","kind":"symbol","language":"jsts","symbolName":"sendTauriNotification","metadata":{"unresolvedName":"sendTauriNotification"}}],["external:reg.showNotification",{"id":"external:reg.showNotification","kind":"external","language":"jsts","metadata":{"unresolvedName":"reg.showNotification"}}],["external:notification.close",{"id":"external:notification.close","kind":"external","language":"jsts","metadata":{"unresolvedName":"notification.close"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":218,"column":30,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:handler",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:handler","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","symbolName":"handler","symbolKind":"function","exported":false,"metadata":{"line":137,"column":21,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:useNow",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:useNow","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts","symbolName":"useNow","symbolKind":"function","exported":true,"metadata":{"line":3,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setNow",{"id":"symbol-name:setNow","kind":"symbol","language":"jsts","symbolName":"setNow","metadata":{"unresolvedName":"setNow"}}],["external:window.setInterval",{"id":"external:window.setInterval","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.setInterval"}}],["external:window.clearInterval",{"id":"external:window.clearInterval","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.clearInterval"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":11,"column":12,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts","metadata":{"lineCount":22,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:usePanelResizeStatus",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:usePanelResizeStatus","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts","symbolName":"usePanelResizeStatus","symbolKind":"function","exported":true,"metadata":{"line":4,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:flushSync",{"id":"symbol-name:flushSync","kind":"symbol","language":"jsts","symbolName":"flushSync","metadata":{"unresolvedName":"flushSync"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":14,"column":12,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts","metadata":{"lineCount":62,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:usePathMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:usePathMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts","symbolName":"usePathMode","symbolKind":"function","exported":true,"metadata":{"line":32,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:subscribePathMode",{"id":"symbol-name:subscribePathMode","kind":"symbol","language":"jsts","symbolName":"subscribePathMode","metadata":{"unresolvedName":"subscribePathMode"}}],["symbol-name:setPathModeState",{"id":"symbol-name:setPathModeState","kind":"symbol","language":"jsts","symbolName":"setPathModeState","metadata":{"unresolvedName":"setPathModeState"}}],["symbol-name:setEffectiveStyle",{"id":"symbol-name:setEffectiveStyle","kind":"symbol","language":"jsts","symbolName":"setEffectiveStyle","metadata":{"unresolvedName":"setEffectiveStyle"}}],["symbol-name:setDetectedStyle",{"id":"symbol-name:setDetectedStyle","kind":"symbol","language":"jsts","symbolName":"setDetectedStyle","metadata":{"unresolvedName":"setDetectedStyle"}}],["symbol-name:getDetectedPathStyle",{"id":"symbol-name:getDetectedPathStyle","kind":"symbol","language":"jsts","symbolName":"getDetectedPathStyle","metadata":{"unresolvedName":"getDetectedPathStyle"}}],["symbol-name:setPathModeUtil",{"id":"symbol-name:setPathModeUtil","kind":"symbol","language":"jsts","symbolName":"setPathModeUtil","metadata":{"unresolvedName":"setPathModeUtil"}}],["symbol-name:getEffectivePathStyle",{"id":"symbol-name:getEffectivePathStyle","kind":"symbol","language":"jsts","symbolName":"getEffectivePathStyle","metadata":{"unresolvedName":"getEffectivePathStyle"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":47,"column":35,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","metadata":{"lineCount":214,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:withRetry",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:withRetry","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","symbolName":"withRetry","symbolKind":"function","exported":false,"metadata":{"line":47,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","symbolName":"usePermissionHandler","symbolKind":"function","exported":true,"metadata":{"line":66,"column":1,"cyclomaticComplexity":19,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:replyingIdsRef.current.has",{"id":"external:replyingIdsRef.current.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"replyingIdsRef.current.has"}}],["external:replyingIdsRef.current.add",{"id":"external:replyingIdsRef.current.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"replyingIdsRef.current.add"}}],["symbol-name:setIsReplying",{"id":"symbol-name:setIsReplying","kind":"symbol","language":"jsts","symbolName":"setIsReplying","metadata":{"unresolvedName":"setIsReplying"}}],["symbol-name:withRetry",{"id":"symbol-name:withRetry","kind":"symbol","language":"jsts","symbolName":"withRetry","metadata":{"unresolvedName":"withRetry"}}],["symbol-name:permissionErrorHandler",{"id":"symbol-name:permissionErrorHandler","kind":"symbol","language":"jsts","symbolName":"permissionErrorHandler","metadata":{"unresolvedName":"permissionErrorHandler"}}],["external:replyingIdsRef.current.delete",{"id":"external:replyingIdsRef.current.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"replyingIdsRef.current.delete"}}],["symbol-name:replyQuestion",{"id":"symbol-name:replyQuestion","kind":"symbol","language":"jsts","symbolName":"replyQuestion","metadata":{"unresolvedName":"replyQuestion"}}],["symbol-name:rejectQuestion",{"id":"symbol-name:rejectQuestion","kind":"symbol","language":"jsts","symbolName":"rejectQuestion","metadata":{"unresolvedName":"rejectQuestion"}}],["external:allPermissions.filter",{"id":"external:allPermissions.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"allPermissions.filter"}}],["external:familySet.has",{"id":"external:familySet.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"familySet.has"}}],["external:nextPermissions.map",{"id":"external:nextPermissions.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"nextPermissions.map"}}],["external:replyingIdsRef.current.clear",{"id":"external:replyingIdsRef.current.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"replyingIdsRef.current.clear"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":195,"column":44,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts","metadata":{"lineCount":51,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types"}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:usePermissions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:usePermissions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts","symbolName":"usePermissions","symbolKind":"function","exported":true,"metadata":{"line":18,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:sessionApprovedTools.has",{"id":"external:sessionApprovedTools.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionApprovedTools.has"}}],["symbol-name:setSessionApprovedTools",{"id":"symbol-name:setSessionApprovedTools","kind":"symbol","language":"jsts","symbolName":"setSessionApprovedTools","metadata":{"unresolvedName":"setSessionApprovedTools"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":40,"column":40,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts","metadata":{"lineCount":70,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:usePresence",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:usePresence","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts","symbolName":"usePresence","symbolKind":"function","exported":true,"metadata":{"line":32,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:stringifyStyle",{"id":"symbol-name:stringifyStyle","kind":"symbol","language":"jsts","symbolName":"stringifyStyle","metadata":{"unresolvedName":"stringifyStyle"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":42,"column":19,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:stringifyStyle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:stringifyStyle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts","symbolName":"stringifyStyle","symbolKind":"function","exported":false,"metadata":{"line":63,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts","metadata":{"lineCount":93,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts","symbolName":"useProject","symbolKind":"function","exported":true,"metadata":{"line":24,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getProjects",{"id":"symbol-name:getProjects","kind":"symbol","language":"jsts","symbolName":"getProjects","metadata":{"unresolvedName":"getProjects"}}],["symbol-name:setProjects",{"id":"symbol-name:setProjects","kind":"symbol","language":"jsts","symbolName":"setProjects","metadata":{"unresolvedName":"setProjects"}}],["external:all.find",{"id":"external:all.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"all.find"}}],["symbol-name:setCurrentProject",{"id":"symbol-name:setCurrentProject","kind":"symbol","language":"jsts","symbolName":"setCurrentProject","metadata":{"unresolvedName":"setCurrentProject"}}],["symbol-name:loadProjects",{"id":"symbol-name:loadProjects","kind":"symbol","language":"jsts","symbolName":"loadProjects","metadata":{"unresolvedName":"loadProjects"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":74,"column":5,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":14,"column":37,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:listeners.forEach",{"id":"external:listeners.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"listeners.forEach"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:subscribe",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:subscribe","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","symbolName":"subscribe","symbolKind":"function","exported":false,"metadata":{"line":20,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:listeners.add",{"id":"external:listeners.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"listeners.add"}}],["external:listeners.delete",{"id":"external:listeners.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"listeners.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:getSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:getSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","symbolName":"getSnapshot","symbolKind":"function","exported":false,"metadata":{"line":25,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:getServerSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:getServerSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","symbolName":"getServerSnapshot","symbolKind":"function","exported":false,"metadata":{"line":29,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:useResponsiveMaxHeight",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:useResponsiveMaxHeight","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","symbolName":"useResponsiveMaxHeight","symbolKind":"function","exported":true,"metadata":{"line":38,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","metadata":{"lineCount":229,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","metadata":{"lineCount":37,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","symbolName":"useRevertState","symbolKind":"function","exported":true,"metadata":{"line":54,"column":1,"cyclomaticComplexity":19,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:messages.some",{"id":"external:messages.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"messages.some"}}],["symbol-name:revertErrorHandler",{"id":"symbol-name:revertErrorHandler","kind":"symbol","language":"jsts","symbolName":"revertErrorHandler","metadata":{"unresolvedName":"revertErrorHandler"}}],["external:messages.slice(targetUIIndex).map",{"id":"external:messages.slice(targetUIIndex).map","kind":"external","language":"jsts","metadata":{"unresolvedName":"messages.slice(targetUIIndex).map"}}],["external:apiMessages.findIndex",{"id":"external:apiMessages.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"apiMessages.findIndex"}}],["symbol-name:revertMessage",{"id":"symbol-name:revertMessage","kind":"symbol","language":"jsts","symbolName":"revertMessage","metadata":{"unresolvedName":"revertMessage"}}],["symbol-name:setSessionRevertState",{"id":"symbol-name:setSessionRevertState","kind":"symbol","language":"jsts","symbolName":"setSessionRevertState","metadata":{"unresolvedName":"setSessionRevertState"}}],["external:apiMessages.slice(targetIndex).filter",{"id":"external:apiMessages.slice(targetIndex).filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"apiMessages.slice(targetIndex).filter"}}],["external:apiMessages.slice",{"id":"external:apiMessages.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"apiMessages.slice"}}],["external:revertedUserMessages.map",{"id":"external:revertedUserMessages.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"revertedUserMessages.map"}}],["symbol-name:setRevertHistory",{"id":"symbol-name:setRevertHistory","kind":"symbol","language":"jsts","symbolName":"setRevertHistory","metadata":{"unresolvedName":"setRevertHistory"}}],["symbol-name:setRevertedMessage",{"id":"symbol-name:setRevertedMessage","kind":"symbol","language":"jsts","symbolName":"setRevertedMessage","metadata":{"unresolvedName":"setRevertedMessage"}}],["symbol-name:setMessages",{"id":"symbol-name:setMessages","kind":"symbol","language":"jsts","symbolName":"setMessages","metadata":{"unresolvedName":"setMessages"}}],["external:filteredApiMessages.map",{"id":"external:filteredApiMessages.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"filteredApiMessages.map"}}],["symbol-name:scrollToEnd",{"id":"symbol-name:scrollToEnd","kind":"symbol","language":"jsts","symbolName":"scrollToEnd","metadata":{"unresolvedName":"scrollToEnd"}}],["external:revertHistory.slice",{"id":"external:revertHistory.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"revertHistory.slice"}}],["symbol-name:unrevertSession",{"id":"symbol-name:unrevertSession","kind":"symbol","language":"jsts","symbolName":"unrevertSession","metadata":{"unresolvedName":"unrevertSession"}}],["external:apiMessages.map",{"id":"external:apiMessages.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"apiMessages.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":205,"column":35,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:decodeDirectoryParam",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:decodeDirectoryParam","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","symbolName":"decodeDirectoryParam","symbolKind":"function","exported":false,"metadata":{"line":26,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:parseHash",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:parseHash","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","symbolName":"parseHash","symbolKind":"function","exported":false,"metadata":{"line":34,"column":1,"cyclomaticComplexity":8,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:hash.split",{"id":"external:hash.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"hash.split"}}],["external:queryString.match",{"id":"external:queryString.match","kind":"external","language":"jsts","metadata":{"unresolvedName":"queryString.match"}}],["symbol-name:decodeDirectoryParam",{"id":"symbol-name:decodeDirectoryParam","kind":"symbol","language":"jsts","symbolName":"decodeDirectoryParam","metadata":{"unresolvedName":"decodeDirectoryParam"}}],["external:path.match",{"id":"external:path.match","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.match"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:buildHash",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:buildHash","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","symbolName":"buildHash","symbolKind":"function","exported":false,"metadata":{"line":59,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:isSameRoute",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:isSameRoute","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","symbolName":"isSameRoute","symbolKind":"function","exported":false,"metadata":{"line":67,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:ensureSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:ensureSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","symbolName":"ensureSnapshot","symbolKind":"function","exported":false,"metadata":{"line":71,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:parseHash",{"id":"symbol-name:parseHash","kind":"symbol","language":"jsts","symbolName":"parseHash","metadata":{"unresolvedName":"parseHash"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:emitRoute",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:emitRoute","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","symbolName":"emitRoute","symbolKind":"function","exported":false,"metadata":{"line":81,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:ensureSnapshot",{"id":"symbol-name:ensureSnapshot","kind":"symbol","language":"jsts","symbolName":"ensureSnapshot","metadata":{"unresolvedName":"ensureSnapshot"}}],["symbol-name:isSameRoute",{"id":"symbol-name:isSameRoute","kind":"symbol","language":"jsts","symbolName":"isSameRoute","metadata":{"unresolvedName":"isSameRoute"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:syncRouteFromHash",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:syncRouteFromHash","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","symbolName":"syncRouteFromHash","symbolKind":"function","exported":false,"metadata":{"line":88,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:emitRoute",{"id":"symbol-name:emitRoute","kind":"symbol","language":"jsts","symbolName":"emitRoute","metadata":{"unresolvedName":"emitRoute"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:ensureWindowListener",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:ensureWindowListener","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","symbolName":"ensureWindowListener","symbolKind":"function","exported":false,"metadata":{"line":92,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:subscribe",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:subscribe","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","symbolName":"subscribe","symbolKind":"function","exported":false,"metadata":{"line":99,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:ensureWindowListener",{"id":"symbol-name:ensureWindowListener","kind":"symbol","language":"jsts","symbolName":"ensureWindowListener","metadata":{"unresolvedName":"ensureWindowListener"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":170,"column":40,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:getSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:getSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","symbolName":"getSnapshot","symbolKind":"function","exported":false,"metadata":{"line":107,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:useRouter",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:useRouter","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","symbolName":"useRouter","symbolKind":"function","exported":true,"metadata":{"line":112,"column":1,"cyclomaticComplexity":15,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getSnapshot",{"id":"symbol-name:getSnapshot","kind":"symbol","language":"jsts","symbolName":"getSnapshot","metadata":{"unresolvedName":"getSnapshot"}}],["symbol-name:buildHash",{"id":"symbol-name:buildHash","kind":"symbol","language":"jsts","symbolName":"buildHash","metadata":{"unresolvedName":"buildHash"}}],["external:window.history.replaceState",{"id":"external:window.history.replaceState","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.history.replaceState"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","metadata":{"lineCount":75,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:useServerStore",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:useServerStore","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","symbolName":"useServerStore","symbolKind":"function","exported":true,"metadata":{"line":12,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:serverStore.subscribe.bind",{"id":"external:serverStore.subscribe.bind","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStore.subscribe.bind"}}],["external:serverStore.getServers",{"id":"external:serverStore.getServers","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStore.getServers"}}],["external:serverStore.getActiveServer",{"id":"external:serverStore.getActiveServer","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStore.getActiveServer"}}],["external:serverStore.getAllHealth",{"id":"external:serverStore.getAllHealth","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStore.getAllHealth"}}],["external:serverStore.addServer",{"id":"external:serverStore.addServer","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStore.addServer"}}],["external:serverStore.updateServer",{"id":"external:serverStore.updateServer","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStore.updateServer"}}],["external:serverStore.removeServer",{"id":"external:serverStore.removeServer","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStore.removeServer"}}],["external:serverStore.setActiveServer",{"id":"external:serverStore.setActiveServer","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStore.setActiveServer"}}],["external:serverStore.checkHealth",{"id":"external:serverStore.checkHealth","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStore.checkHealth"}}],["external:serverStore.checkAllHealth",{"id":"external:serverStore.checkAllHealth","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStore.checkAllHealth"}}],["external:healthMap.get",{"id":"external:healthMap.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"healthMap.get"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":56,"column":5,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts","metadata":{"lineCount":33,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:useSessionContextUsage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:useSessionContextUsage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts","symbolName":"useSessionContextUsage","symbolKind":"function","exported":true,"metadata":{"line":4,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["symbol-name:setUsage",{"id":"symbol-name:setUsage","kind":"symbol","language":"jsts","symbolName":"setUsage","metadata":{"unresolvedName":"setUsage"}}],["external:getSessionContextUsage(sessionId)\n .then",{"id":"external:getSessionContextUsage(sessionId)\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSessionContextUsage(sessionId)\n .then"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":26,"column":12,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","metadata":{"lineCount":386,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:mergeWithLocalStreamingMessages",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:mergeWithLocalStreamingMessages","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","symbolName":"mergeWithLocalStreamingMessages","symbolKind":"function","exported":false,"metadata":{"line":32,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:localState.messages.filter(m => !apiIds.has(m.info.id)).map",{"id":"external:localState.messages.filter(m => !apiIds.has(m.info.id)).map","kind":"external","language":"jsts","metadata":{"unresolvedName":"localState.messages.filter(m => !apiIds.has(m.info.id)).map"}}],["external:localState.messages.filter",{"id":"external:localState.messages.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"localState.messages.filter"}}],["external:apiIds.has",{"id":"external:apiIds.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"apiIds.has"}}],["external:[...apiMessages, ...localOnly].sort",{"id":"external:[...apiMessages, ...localOnly].sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"[...apiMessages, ...localOnly].sort"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":345,"column":13,"cyclomaticComplexity":9,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","symbolName":"useSessionManager","symbolKind":"function","exported":true,"metadata":{"line":50,"column":1,"cyclomaticComplexity":58,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:loadSequenceRef.current.get",{"id":"external:loadSequenceRef.current.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"loadSequenceRef.current.get"}}],["external:loadSequenceRef.current.set",{"id":"external:loadSequenceRef.current.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"loadSequenceRef.current.set"}}],["external:getSession(sid, dir).catch",{"id":"external:getSession(sid, dir).catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSession(sid, dir).catch"}}],["external:getSessionMessages(sid, INITIAL_MESSAGE_LIMIT, dir)\r\n .then",{"id":"external:getSessionMessages(sid, INITIAL_MESSAGE_LIMIT, dir)\r\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSessionMessages(sid, INITIAL_MESSAGE_LIMIT, dir)\r\n .then"}}],["symbol-name:isStale",{"id":"symbol-name:isStale","kind":"symbol","language":"jsts","symbolName":"isStale","metadata":{"unresolvedName":"isStale"}}],["external:cursorRef.current.set",{"id":"external:cursorRef.current.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"cursorRef.current.set"}}],["symbol-name:onLoadComplete",{"id":"symbol-name:onLoadComplete","kind":"symbol","language":"jsts","symbolName":"onLoadComplete","metadata":{"unresolvedName":"onLoadComplete"}}],["symbol-name:mergeWithLocalStreamingMessages",{"id":"symbol-name:mergeWithLocalStreamingMessages","kind":"symbol","language":"jsts","symbolName":"mergeWithLocalStreamingMessages","metadata":{"unresolvedName":"mergeWithLocalStreamingMessages"}}],["external:cursorRef.current.get",{"id":"external:cursorRef.current.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"cursorRef.current.get"}}],["external:latestState.messages.map",{"id":"external:latestState.messages.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"latestState.messages.map"}}],["external:apiMessages\r\n .filter(m => !existingIds.has(m.info.id))\r\n .sort",{"id":"external:apiMessages\r\n .filter(m => !existingIds.has(m.info.id))\r\n .sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"apiMessages\r\n .filter(m => !existingIds.has(m.info.id))\r\n .sort"}}],["external:apiMessages\r\n .filter",{"id":"external:apiMessages\r\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"apiMessages\r\n .filter"}}],["external:messageStore.prependMessages",{"id":"external:messageStore.prependMessages","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.prependMessages"}}],["external:state.messages.findIndex",{"id":"external:state.messages.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"state.messages.findIndex"}}],["external:state.messages.slice(revertIndex).filter",{"id":"external:state.messages.slice(revertIndex).filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"state.messages.slice(revertIndex).filter"}}],["external:state.messages.slice",{"id":"external:state.messages.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"state.messages.slice"}}],["external:messageStore.setRevertState",{"id":"external:messageStore.setRevertState","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.setRevertState"}}],["external:history.slice",{"id":"external:history.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"history.slice"}}],["external:loadSessionRef.current",{"id":"external:loadSessionRef.current","kind":"external","language":"jsts","metadata":{"unresolvedName":"loadSessionRef.current"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","metadata":{"lineCount":164,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","metadata":{"lineCount":296,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:createDeferred",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:createDeferred","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","symbolName":"createDeferred","symbolKind":"function","exported":false,"metadata":{"line":6,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":157,"column":15,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:makeSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:makeSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","symbolName":"makeSession","symbolKind":"function","exported":false,"metadata":{"line":27,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:getSessionsMock.mockResolvedValue",{"id":"external:getSessionsMock.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSessionsMock.mockResolvedValue"}}],["symbol-name:makeSession",{"id":"symbol-name:makeSession","kind":"symbol","language":"jsts","symbolName":"makeSession","metadata":{"unresolvedName":"makeSession"}}],["external:deleteSessionMock.mockResolvedValue",{"id":"external:deleteSessionMock.mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"deleteSessionMock.mockResolvedValue"}}],["external:expect(getSessionsMock).not.toHaveBeenCalled",{"id":"external:expect(getSessionsMock).not.toHaveBeenCalled","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getSessionsMock).not.toHaveBeenCalled"}}],["external:expect(getSessionsMock).toHaveBeenCalledWith",{"id":"external:expect(getSessionsMock).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getSessionsMock).toHaveBeenCalledWith"}}],["external:expect(result.current.sessions).toHaveLength",{"id":"external:expect(result.current.sessions).toHaveLength","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.sessions).toHaveLength"}}],["external:result.current.remove",{"id":"external:result.current.remove","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.current.remove"}}],["external:expect(deleteSessionMock).toHaveBeenCalledWith",{"id":"external:expect(deleteSessionMock).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(deleteSessionMock).toHaveBeenCalledWith"}}],["external:latestEventCallbacks.onSessionCreated",{"id":"external:latestEventCallbacks.onSessionCreated","kind":"external","language":"jsts","metadata":{"unresolvedName":"latestEventCallbacks.onSessionCreated"}}],["external:expect(result.current.sessions.map(session => session.id)).toEqual",{"id":"external:expect(result.current.sessions.map(session => session.id)).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.sessions.map(session => session.id)).toEqual"}}],["external:result.current.sessions.map",{"id":"external:result.current.sessions.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.current.sessions.map"}}],["external:getSessionsMock\r\n .mockImplementationOnce",{"id":"external:getSessionsMock\r\n .mockImplementationOnce","kind":"external","language":"jsts","metadata":{"unresolvedName":"getSessionsMock\r\n .mockImplementationOnce"}}],["external:result.current.setSearch",{"id":"external:result.current.setSearch","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.current.setSearch"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","symbolName":"useSessions","symbolKind":"function","exported":true,"metadata":{"line":48,"column":1,"cyclomaticComplexity":43,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:directory.replace(/\\\\/g, '/').replace",{"id":"external:directory.replace(/\\\\/g, '/').replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"directory.replace(/\\\\/g, '/').replace"}}],["symbol-name:matchesDirectory",{"id":"symbol-name:matchesDirectory","kind":"symbol","language":"jsts","symbolName":"matchesDirectory","metadata":{"unresolvedName":"matchesDirectory"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":276,"column":42,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionCreated",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionCreated","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","symbolName":"onSessionCreated","symbolKind":"function","exported":false,"metadata":{"line":168,"column":25,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionUpdated",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionUpdated","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","symbolName":"onSessionUpdated","symbolKind":"function","exported":false,"metadata":{"line":182,"column":25,"cyclomaticComplexity":8,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionDeleted",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionDeleted","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","symbolName":"onSessionDeleted","symbolKind":"function","exported":false,"metadata":{"line":209,"column":25,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onReconnected",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onReconnected","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","symbolName":"onReconnected","symbolKind":"function","exported":false,"metadata":{"line":212,"column":22,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","metadata":{"lineCount":34,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":28,"column":44,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:expect(formatTokens(999)).toBe",{"id":"external:expect(formatTokens(999)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatTokens(999)).toBe"}}],["external:expect(formatTokens(1200)).toBe",{"id":"external:expect(formatTokens(1200)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatTokens(1200)).toBe"}}],["external:expect(formatTokens(15000)).toBe",{"id":"external:expect(formatTokens(15000)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatTokens(15000)).toBe"}}],["external:expect(formatTokens(1500000)).toBe",{"id":"external:expect(formatTokens(1500000)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatTokens(1500000)).toBe"}}],["external:expect(formatCost(0)).toBe",{"id":"external:expect(formatCost(0)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatCost(0)).toBe"}}],["external:expect(formatCost(0.0004)).toBe",{"id":"external:expect(formatCost(0.0004)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatCost(0.0004)).toBe"}}],["external:expect(formatCost(0.009)).toBe",{"id":"external:expect(formatCost(0.009)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatCost(0.009)).toBe"}}],["external:expect(formatCost(0.5)).toBe",{"id":"external:expect(formatCost(0.5)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatCost(0.5)).toBe"}}],["external:expect(formatCost(2.345)).toBe",{"id":"external:expect(formatCost(2.345)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatCost(2.345)).toBe"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx","metadata":{"lineCount":149,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","metadata":{"lineCount":271,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":123,"column":72,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:useMessageStoreMock.mockReturnValue",{"id":"external:useMessageStoreMock.mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"useMessageStoreMock.mockReturnValue"}}],["external:expect(result.current.contextEstimated).toBe",{"id":"external:expect(result.current.contextEstimated).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.contextEstimated).toBe"}}],["external:expect(result.current.contextUsed).toBeLessThan",{"id":"external:expect(result.current.contextUsed).toBeLessThan","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.contextUsed).toBeLessThan"}}],["external:expect(result.current.contextUsed).toBeGreaterThan",{"id":"external:expect(result.current.contextUsed).toBeGreaterThan","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.contextUsed).toBeGreaterThan"}}],["external:expect(result.current.contextUsed).toBe",{"id":"external:expect(result.current.contextUsed).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.contextUsed).toBe"}}],["external:expect(result.current.contextLimit).toBe",{"id":"external:expect(result.current.contextLimit).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.contextLimit).toBe"}}],["external:expect(result.current.contextPercent).toBe",{"id":"external:expect(result.current.contextPercent).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.contextPercent).toBe"}}],["external:expect(result.current.contextKnown).toBe",{"id":"external:expect(result.current.contextKnown).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.contextKnown).toBe"}}],["external:expect(result.current.contextSource).toBe",{"id":"external:expect(result.current.contextSource).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.contextSource).toBe"}}],["external:expect(result.current.providerID).toBe",{"id":"external:expect(result.current.providerID).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.providerID).toBe"}}],["external:expect(result.current.modelID).toBe",{"id":"external:expect(result.current.modelID).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.modelID).toBe"}}],["external:expect(result.current.modelName).toBe",{"id":"external:expect(result.current.modelName).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.modelName).toBe"}}],["external:expect(result.current.outputLimit).toBe",{"id":"external:expect(result.current.outputLimit).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.outputLimit).toBe"}}],["external:expect(result.current.contextStatus).toBe",{"id":"external:expect(result.current.contextStatus).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.contextStatus).toBe"}}],["external:expect(result.current.contextNotice).toBe",{"id":"external:expect(result.current.contextNotice).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.contextNotice).toBe"}}],["external:expect(warning.result.current.contextStatus).toBe",{"id":"external:expect(warning.result.current.contextStatus).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(warning.result.current.contextStatus).toBe"}}],["external:expect(warning.result.current.contextNotice).toBe",{"id":"external:expect(warning.result.current.contextNotice).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(warning.result.current.contextNotice).toBe"}}],["external:expect(danger.result.current.contextStatus).toBe",{"id":"external:expect(danger.result.current.contextStatus).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(danger.result.current.contextStatus).toBe"}}],["external:expect(danger.result.current.contextNotice).toBe",{"id":"external:expect(danger.result.current.contextNotice).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(danger.result.current.contextNotice).toBe"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:estimateTokens",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:estimateTokens","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","symbolName":"estimateTokens","symbolKind":"function","exported":false,"metadata":{"line":46,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:charsFromUserPart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:charsFromUserPart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","symbolName":"charsFromUserPart","symbolKind":"function","exported":false,"metadata":{"line":50,"column":1,"cyclomaticComplexity":8,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:charsFromAssistantPart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:charsFromAssistantPart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","symbolName":"charsFromAssistantPart","symbolKind":"function","exported":false,"metadata":{"line":59,"column":1,"cyclomaticComplexity":13,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:estimateCurrentContext",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:estimateCurrentContext","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","symbolName":"estimateCurrentContext","symbolKind":"function","exported":false,"metadata":{"line":77,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:((system.info as { system?: string }).system ?? '').trim",{"id":"external:((system.info as { system?: string }).system ?? '').trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"((system.info as { system?: string }).system ?? '').trim"}}],["symbol-name:charsFromUserPart",{"id":"symbol-name:charsFromUserPart","kind":"symbol","language":"jsts","symbolName":"charsFromUserPart","metadata":{"unresolvedName":"charsFromUserPart"}}],["symbol-name:charsFromAssistantPart",{"id":"symbol-name:charsFromAssistantPart","kind":"symbol","language":"jsts","symbolName":"charsFromAssistantPart","metadata":{"unresolvedName":"charsFromAssistantPart"}}],["symbol-name:estimateTokens",{"id":"symbol-name:estimateTokens","kind":"symbol","language":"jsts","symbolName":"estimateTokens","metadata":{"unresolvedName":"estimateTokens"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":144,"column":18,"cyclomaticComplexity":38,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:shouldUseEstimatedContext",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:shouldUseEstimatedContext","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","symbolName":"shouldUseEstimatedContext","symbolKind":"function","exported":false,"metadata":{"line":106,"column":1,"cyclomaticComplexity":8,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:getContextStatus",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:getContextStatus","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","symbolName":"getContextStatus","symbolKind":"function","exported":false,"metadata":{"line":124,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:useSessionStats",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:useSessionStats","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","symbolName":"useSessionStats","symbolKind":"function","exported":true,"metadata":{"line":138,"column":1,"cyclomaticComplexity":38,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["symbol-name:getContextStatus",{"id":"symbol-name:getContextStatus","kind":"symbol","language":"jsts","symbolName":"getContextStatus","metadata":{"unresolvedName":"getContextStatus"}}],["symbol-name:estimateCurrentContext",{"id":"symbol-name:estimateCurrentContext","kind":"symbol","language":"jsts","symbolName":"estimateCurrentContext","metadata":{"unresolvedName":"estimateCurrentContext"}}],["symbol-name:shouldUseEstimatedContext",{"id":"symbol-name:shouldUseEstimatedContext","kind":"symbol","language":"jsts","symbolName":"shouldUseEstimatedContext","metadata":{"unresolvedName":"shouldUseEstimatedContext"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:tokenTotal",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:tokenTotal","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","symbolName":"tokenTotal","symbolKind":"function","exported":false,"metadata":{"line":145,"column":24,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts","metadata":{"lineCount":15,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":10,"column":65,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(getShikiTheme(true).theme).toBe",{"id":"external:expect(getShikiTheme(true).theme).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getShikiTheme(true).theme).toBe"}}],["symbol-name:getShikiTheme",{"id":"symbol-name:getShikiTheme","kind":"symbol","language":"jsts","symbolName":"getShikiTheme","metadata":{"unresolvedName":"getShikiTheme"}}],["external:expect(getShikiTheme(false).theme).toBe",{"id":"external:expect(getShikiTheme(false).theme).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getShikiTheme(false).theme).toBe"}}],["external:expect(getShikiTheme(true).key).toBe",{"id":"external:expect(getShikiTheme(true).key).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getShikiTheme(true).key).toBe"}}],["external:expect(getShikiTheme(false).key).toBe",{"id":"external:expect(getShikiTheme(false).key).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getShikiTheme(false).key).toBe"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","metadata":{"lineCount":122,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:get",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:get","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"get","symbolKind":"function","exported":false,"metadata":{"line":32,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:this.cache.get",{"id":"external:this.cache.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.cache.get"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:set",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:set","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"set","symbolKind":"function","exported":false,"metadata":{"line":42,"column":3,"cyclomaticComplexity":6,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:this.cache.has",{"id":"external:this.cache.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.cache.has"}}],["external:this.cache.delete",{"id":"external:this.cache.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.cache.delete"}}],["external:this.cache.set",{"id":"external:this.cache.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.cache.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:clear",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:clear","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"clear","symbolKind":"function","exported":false,"metadata":{"line":66,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:this.cache.clear",{"id":"external:this.cache.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.cache.clear"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:scheduleQueuedHighlight",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:scheduleQueuedHighlight","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"scheduleQueuedHighlight","symbolKind":"function","exported":false,"metadata":{"line":83,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:highlightQueue.push",{"id":"external:highlightQueue.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"highlightQueue.push"}}],["symbol-name:task",{"id":"symbol-name:task","kind":"symbol","language":"jsts","symbolName":"task","metadata":{"unresolvedName":"task"}}],["symbol-name:runHighlightQueue",{"id":"symbol-name:runHighlightQueue","kind":"symbol","language":"jsts","symbolName":"runHighlightQueue","metadata":{"unresolvedName":"runHighlightQueue"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":502,"column":12,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:runHighlightQueue",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:runHighlightQueue","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"runHighlightQueue","symbolKind":"function","exported":false,"metadata":{"line":95,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:highlightQueue.shift",{"id":"external:highlightQueue.shift","kind":"external","language":"jsts","metadata":{"unresolvedName":"highlightQueue.shift"}}],["symbol-name:yieldToMainThread",{"id":"symbol-name:yieldToMainThread","kind":"symbol","language":"jsts","symbolName":"yieldToMainThread","metadata":{"unresolvedName":"yieldToMainThread"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:yieldToMainThread",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:yieldToMainThread","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"yieldToMainThread","symbolKind":"function","exported":false,"metadata":{"line":110,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getCacheKey",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getCacheKey","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"getCacheKey","symbolKind":"function","exported":false,"metadata":{"line":117,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:simpleHash",{"id":"symbol-name:simpleHash","kind":"symbol","language":"jsts","symbolName":"simpleHash","metadata":{"unresolvedName":"simpleHash"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:simpleHash",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:simpleHash","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"simpleHash","symbolKind":"function","exported":false,"metadata":{"line":124,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:str.charCodeAt",{"id":"external:str.charCodeAt","kind":"external","language":"jsts","metadata":{"unresolvedName":"str.charCodeAt"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlightWithCache",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlightWithCache","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"highlightWithCache","symbolKind":"function","exported":false,"metadata":{"line":135,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getCacheKey",{"id":"symbol-name:getCacheKey","kind":"symbol","language":"jsts","symbolName":"getCacheKey","metadata":{"unresolvedName":"getCacheKey"}}],["external:htmlCache.get",{"id":"external:htmlCache.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"htmlCache.get"}}],["symbol-name:codeToHtml",{"id":"symbol-name:codeToHtml","kind":"symbol","language":"jsts","symbolName":"codeToHtml","metadata":{"unresolvedName":"codeToHtml"}}],["external:htmlCache.set",{"id":"external:htmlCache.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"htmlCache.set"}}],["external:tokensCache.get",{"id":"external:tokensCache.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"tokensCache.get"}}],["symbol-name:codeToTokens",{"id":"symbol-name:codeToTokens","kind":"symbol","language":"jsts","symbolName":"codeToTokens","metadata":{"unresolvedName":"codeToTokens"}}],["external:tokensCache.set",{"id":"external:tokensCache.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"tokensCache.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getHighlightCacheStats",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getHighlightCacheStats","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"getHighlightCacheStats","symbolKind":"function","exported":true,"metadata":{"line":175,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:clearHighlightCache",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:clearHighlightCache","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"clearHighlightCache","symbolKind":"function","exported":true,"metadata":{"line":183,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:htmlCache.clear",{"id":"external:htmlCache.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"htmlCache.clear"}}],["external:tokensCache.clear",{"id":"external:tokensCache.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"tokensCache.clear"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getShikiTheme",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getShikiTheme","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"getShikiTheme","symbolKind":"function","exported":true,"metadata":{"line":191,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:detectTheme",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:detectTheme","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"detectTheme","symbolKind":"function","exported":false,"metadata":{"line":214,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:setupListeners",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:setupListeners","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"setupListeners","symbolKind":"function","exported":false,"metadata":{"line":222,"column":3,"cyclomaticComplexity":6,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:this.detectTheme",{"id":"external:this.detectTheme","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.detectTheme"}}],["external:this.notify",{"id":"external:this.notify","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.notify"}}],["external:this.observer.observe",{"id":"external:this.observer.observe","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.observer.observe"}}],["external:this.mediaQuery.addEventListener",{"id":"external:this.mediaQuery.addEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.mediaQuery.addEventListener"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:handleChange",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:handleChange","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"handleChange","symbolKind":"function","exported":false,"metadata":{"line":241,"column":26,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:notify",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:notify","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"notify","symbolKind":"function","exported":false,"metadata":{"line":254,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:this.subscribers.forEach",{"id":"external:this.subscribers.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.subscribers.forEach"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getIsDark",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getIsDark","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"getIsDark","symbolKind":"function","exported":false,"metadata":{"line":258,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:subscribe",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:subscribe","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"subscribe","symbolKind":"function","exported":false,"metadata":{"line":262,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:this.subscribers.add",{"id":"external:this.subscribers.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.subscribers.add"}}],["external:this.subscribers.delete",{"id":"external:this.subscribers.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.subscribers.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getThemeStateManager",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getThemeStateManager","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"getThemeStateManager","symbolKind":"function","exported":false,"metadata":{"line":271,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useIsDarkMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useIsDarkMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"useIsDarkMode","symbolKind":"function","exported":false,"metadata":{"line":279,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getThemeStateManager",{"id":"symbol-name:getThemeStateManager","kind":"symbol","language":"jsts","symbolName":"getThemeStateManager","metadata":{"unresolvedName":"getThemeStateManager"}}],["external:manager.getIsDark",{"id":"external:manager.getIsDark","kind":"external","language":"jsts","metadata":{"unresolvedName":"manager.getIsDark"}}],["external:manager.subscribe",{"id":"external:manager.subscribe","kind":"external","language":"jsts","metadata":{"unresolvedName":"manager.subscribe"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"useSyntaxHighlight","symbolKind":"function","exported":true,"metadata":{"line":307,"column":1,"cyclomaticComplexity":17,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:normalizeLanguage",{"id":"symbol-name:normalizeLanguage","kind":"symbol","language":"jsts","symbolName":"normalizeLanguage","metadata":{"unresolvedName":"normalizeLanguage"}}],["symbol-name:useIsDarkMode",{"id":"symbol-name:useIsDarkMode","kind":"symbol","language":"jsts","symbolName":"useIsDarkMode","metadata":{"unresolvedName":"useIsDarkMode"}}],["symbol-name:setOutput",{"id":"symbol-name:setOutput","kind":"symbol","language":"jsts","symbolName":"setOutput","metadata":{"unresolvedName":"setOutput"}}],["symbol-name:highlightWithCache",{"id":"symbol-name:highlightWithCache","kind":"symbol","language":"jsts","symbolName":"highlightWithCache","metadata":{"unresolvedName":"highlightWithCache"}}],["external:idleWindow.requestIdleCallback",{"id":"external:idleWindow.requestIdleCallback","kind":"external","language":"jsts","metadata":{"unresolvedName":"idleWindow.requestIdleCallback"}}],["symbol-name:highlight",{"id":"symbol-name:highlight","kind":"symbol","language":"jsts","symbolName":"highlight","metadata":{"unresolvedName":"highlight"}}],["external:idleWindow.cancelIdleCallback",{"id":"external:idleWindow.cancelIdleCallback","kind":"external","language":"jsts","metadata":{"unresolvedName":"idleWindow.cancelIdleCallback"}}],["symbol-name:scheduleQueuedHighlight",{"id":"symbol-name:scheduleQueuedHighlight","kind":"symbol","language":"jsts","symbolName":"scheduleQueuedHighlight","metadata":{"unresolvedName":"scheduleQueuedHighlight"}}],["symbol-name:schedule",{"id":"symbol-name:schedule","kind":"symbol","language":"jsts","symbolName":"schedule","metadata":{"unresolvedName":"schedule"}}],["symbol-name:cancelSchedule",{"id":"symbol-name:cancelSchedule","kind":"symbol","language":"jsts","symbolName":"cancelSchedule","metadata":{"unresolvedName":"cancelSchedule"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"highlight","symbolKind":"function","exported":false,"metadata":{"line":464,"column":5,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"schedule","symbolKind":"function","exported":false,"metadata":{"line":482,"column":22,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","symbolName":"useSyntaxHighlightRef","symbolKind":"function","exported":true,"metadata":{"line":417,"column":1,"cyclomaticComplexity":14,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:setVersion",{"id":"symbol-name:setVersion","kind":"symbol","language":"jsts","symbolName":"setVersion","metadata":{"unresolvedName":"setVersion"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","symbolName":"useTheme","symbolKind":"function","exported":true,"metadata":{"line":11,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:themeStore.getResolvedMode",{"id":"external:themeStore.getResolvedMode","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.getResolvedMode"}}],["external:themeStore.setColorMode",{"id":"external:themeStore.setColorMode","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.setColorMode"}}],["external:Math.hypot",{"id":"external:Math.hypot","kind":"external","language":"jsts","metadata":{"unresolvedName":"Math.hypot"}}],["external:root.setAttribute",{"id":"external:root.setAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"root.setAttribute"}}],["external:document.startViewTransition",{"id":"external:document.startViewTransition","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.startViewTransition"}}],["external:transition.ready\r\n .then",{"id":"external:transition.ready\r\n .then","kind":"external","language":"jsts","metadata":{"unresolvedName":"transition.ready\r\n .then"}}],["external:document.documentElement.animate",{"id":"external:document.documentElement.animate","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.documentElement.animate"}}],["external:root.removeAttribute",{"id":"external:root.removeAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"root.removeAttribute"}}],["external:themeStore.setPreset",{"id":"external:themeStore.setPreset","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.setPreset"}}],["external:themeStore.setCustomCSS",{"id":"external:themeStore.setCustomCSS","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.setCustomCSS"}}],["external:themeStore.saveCustomCSSSnippet",{"id":"external:themeStore.saveCustomCSSSnippet","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.saveCustomCSSSnippet"}}],["external:themeStore.updateCustomCSSSnippet",{"id":"external:themeStore.updateCustomCSSSnippet","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.updateCustomCSSSnippet"}}],["external:themeStore.deleteCustomCSSSnippet",{"id":"external:themeStore.deleteCustomCSSSnippet","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.deleteCustomCSSSnippet"}}],["external:themeStore.applyCustomCSSSnippet",{"id":"external:themeStore.applyCustomCSSSnippet","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.applyCustomCSSSnippet"}}],["external:themeStore.clearActiveCustomCSSSnippet",{"id":"external:themeStore.clearActiveCustomCSSSnippet","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.clearActiveCustomCSSSnippet"}}],["external:themeStore.setDiffStyle",{"id":"external:themeStore.setDiffStyle","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.setDiffStyle"}}],["external:themeStore.setCodeWordWrap",{"id":"external:themeStore.setCodeWordWrap","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.setCodeWordWrap"}}],["external:themeStore.setUIFontScale",{"id":"external:themeStore.setUIFontScale","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.setUIFontScale"}}],["external:themeStore.setCodeFontScale",{"id":"external:themeStore.setCodeFontScale","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.setCodeFontScale"}}],["external:themeStore.setManualTerminalTitles",{"id":"external:themeStore.setManualTerminalTitles","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.setManualTerminalTitles"}}],["external:themeStore.getAvailablePresets",{"id":"external:themeStore.getAvailablePresets","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.getAvailablePresets"}}],["external:themeStore.toggleWideMode.bind",{"id":"external:themeStore.toggleWideMode.bind","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.toggleWideMode.bind"}}],["external:themeStore.setGlassEffect",{"id":"external:themeStore.setGlassEffect","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.setGlassEffect"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":302,"column":33,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts","metadata":{"lineCount":79,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:useVcsInfo",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:useVcsInfo","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts","symbolName":"useVcsInfo","symbolKind":"function","exported":true,"metadata":{"line":19,"column":1,"cyclomaticComplexity":13,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:fetchVcs",{"id":"symbol-name:fetchVcs","kind":"symbol","language":"jsts","symbolName":"fetchVcs","metadata":{"unresolvedName":"fetchVcs"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":70,"column":13,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","symbolName":"useVerticalSplitResize","symbolKind":"function","exported":true,"metadata":{"line":29,"column":1,"cyclomaticComplexity":16,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:primaryRef.current.style.setProperty",{"id":"external:primaryRef.current.style.setProperty","kind":"external","language":"jsts","metadata":{"unresolvedName":"primaryRef.current.style.setProperty"}}],["symbol-name:setSplitHeight",{"id":"symbol-name:setSplitHeight","kind":"symbol","language":"jsts","symbolName":"setSplitHeight","metadata":{"unresolvedName":"setSplitHeight"}}],["external:primaryEl.style.setProperty",{"id":"external:primaryEl.style.setProperty","kind":"external","language":"jsts","metadata":{"unresolvedName":"primaryEl.style.setProperty"}}],["symbol-name:applyHeight",{"id":"symbol-name:applyHeight","kind":"symbol","language":"jsts","symbolName":"applyHeight","metadata":{"unresolvedName":"applyHeight"}}],["symbol-name:finishResize",{"id":"symbol-name:finishResize","kind":"symbol","language":"jsts","symbolName":"finishResize","metadata":{"unresolvedName":"finishResize"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":146,"column":48,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleMouseMove",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleMouseMove","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","symbolName":"handleMouseMove","symbolKind":"function","exported":false,"metadata":{"line":105,"column":31,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleMouseUp",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleMouseUp","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","symbolName":"handleMouseUp","symbolKind":"function","exported":false,"metadata":{"line":115,"column":29,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleTouchMove",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleTouchMove","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","symbolName":"handleTouchMove","symbolKind":"function","exported":false,"metadata":{"line":140,"column":31,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleTouchEnd",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleTouchEnd","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","symbolName":"handleTouchEnd","symbolKind":"function","exported":false,"metadata":{"line":151,"column":30,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","symbolName":"useViewportHeight","symbolKind":"function","exported":true,"metadata":{"line":9,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:root.classList.contains",{"id":"external:root.classList.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"root.classList.contains"}}],["external:root.style.setProperty",{"id":"external:root.style.setProperty","kind":"external","language":"jsts","metadata":{"unresolvedName":"root.style.setProperty"}}],["symbol-name:updateAppHeight",{"id":"symbol-name:updateAppHeight","kind":"symbol","language":"jsts","symbolName":"updateAppHeight","metadata":{"unresolvedName":"updateAppHeight"}}],["external:document.body.appendChild",{"id":"external:document.body.appendChild","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.body.appendChild"}}],["external:document.body.removeChild",{"id":"external:document.body.removeChild","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.body.removeChild"}}],["symbol-name:measureSafeAreaBottom",{"id":"symbol-name:measureSafeAreaBottom","kind":"symbol","language":"jsts","symbolName":"measureSafeAreaBottom","metadata":{"unresolvedName":"measureSafeAreaBottom"}}],["symbol-name:updateViewport",{"id":"symbol-name:updateViewport","kind":"symbol","language":"jsts","symbolName":"updateViewport","metadata":{"unresolvedName":"updateViewport"}}],["external:window.visualViewport.addEventListener",{"id":"external:window.visualViewport.addEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.visualViewport.addEventListener"}}],["external:window.visualViewport.removeEventListener",{"id":"external:window.visualViewport.removeEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"window.visualViewport.removeEventListener"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":69,"column":12,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:updateAppHeight",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:updateAppHeight","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","symbolName":"updateAppHeight","symbolKind":"function","exported":false,"metadata":{"line":16,"column":31,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:measureSafeAreaBottom",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:measureSafeAreaBottom","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","symbolName":"measureSafeAreaBottom","symbolKind":"function","exported":false,"metadata":{"line":34,"column":35,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:updateViewport",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:updateViewport","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","symbolName":"updateViewport","symbolKind":"function","exported":false,"metadata":{"line":46,"column":28,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:handleWindowResize",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:handleWindowResize","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","symbolName":"handleWindowResize","symbolKind":"function","exported":false,"metadata":{"line":58,"column":32,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","metadata":{"lineCount":163,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:start",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:start","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","symbolName":"start","symbolKind":"function","exported":false,"metadata":{"line":17,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:stop",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:stop","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","symbolName":"stop","symbolKind":"function","exported":false,"metadata":{"line":21,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:this.ondataavailable",{"id":"external:this.ondataavailable","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.ondataavailable"}}],["external:Promise.resolve().then",{"id":"external:Promise.resolve().then","kind":"external","language":"jsts","metadata":{"unresolvedName":"Promise.resolve().then"}}],["external:this.onstop",{"id":"external:this.onstop","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.onstop"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":155,"column":15,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:vi.mocked(transcribeAudio).mockReset",{"id":"external:vi.mocked(transcribeAudio).mockReset","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(transcribeAudio).mockReset"}}],["external:vi.mocked(transcribeAudio).mockResolvedValue",{"id":"external:vi.mocked(transcribeAudio).mockResolvedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(transcribeAudio).mockResolvedValue"}}],["external:expect(result.current.settings?.enabled).toBe",{"id":"external:expect(result.current.settings?.enabled).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.settings?.enabled).toBe"}}],["external:result.current.startRecording",{"id":"external:result.current.startRecording","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.current.startRecording"}}],["external:expect(result.current.state).toBe",{"id":"external:expect(result.current.state).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.state).toBe"}}],["external:result.current.stopRecording",{"id":"external:result.current.stopRecording","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.current.stopRecording"}}],["external:expect(onTranscription).toHaveBeenCalledWith",{"id":"external:expect(onTranscription).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(onTranscription).toHaveBeenCalledWith"}}],["external:expect(result.current.isAvailable).toBe",{"id":"external:expect(result.current.isAvailable).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.isAvailable).toBe"}}],["external:expect(result.current.error).toBe",{"id":"external:expect(result.current.error).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.error).toBe"}}],["external:vi.mocked(getSttSettings).mockResolvedValueOnce",{"id":"external:vi.mocked(getSttSettings).mockResolvedValueOnce","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(getSttSettings).mockResolvedValueOnce"}}],["external:expect(result.current.settings?.apiKeyRequired).toBe",{"id":"external:expect(result.current.settings?.apiKeyRequired).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.settings?.apiKeyRequired).toBe"}}],["external:expect(navigator.mediaDevices.getUserMedia).toHaveBeenCalledWith",{"id":"external:expect(navigator.mediaDevices.getUserMedia).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(navigator.mediaDevices.getUserMedia).toHaveBeenCalledWith"}}],["external:vi.mocked(getSttSettings).mockRejectedValueOnce",{"id":"external:vi.mocked(getSttSettings).mockRejectedValueOnce","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(getSttSettings).mockRejectedValueOnce"}}],["external:expect(result.current.error).toBeNull",{"id":"external:expect(result.current.error).toBeNull","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current.error).toBeNull"}}],["external:expect(getSttSettings).toHaveBeenCalledTimes",{"id":"external:expect(getSttSettings).toHaveBeenCalledTimes","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(getSttSettings).toHaveBeenCalledTimes"}}],["external:vi.mocked(navigator.mediaDevices.getUserMedia).mockRejectedValueOnce",{"id":"external:vi.mocked(navigator.mediaDevices.getUserMedia).mockRejectedValueOnce","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.mocked(navigator.mediaDevices.getUserMedia).mockRejectedValueOnce"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:isRecordingSupported",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:isRecordingSupported","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","symbolName":"isRecordingSupported","symbolKind":"function","exported":false,"metadata":{"line":11,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","symbolName":"useVoiceTranscription","symbolKind":"function","exported":true,"metadata":{"line":19,"column":1,"cyclomaticComplexity":20,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:streamRef.current?.getTracks().forEach",{"id":"external:streamRef.current?.getTracks().forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"streamRef.current?.getTracks().forEach"}}],["external:streamRef.current?.getTracks",{"id":"external:streamRef.current?.getTracks","kind":"external","language":"jsts","metadata":{"unresolvedName":"streamRef.current?.getTracks"}}],["external:track.stop",{"id":"external:track.stop","kind":"external","language":"jsts","metadata":{"unresolvedName":"track.stop"}}],["symbol-name:setState",{"id":"symbol-name:setState","kind":"symbol","language":"jsts","symbolName":"setState","metadata":{"unresolvedName":"setState"}}],["symbol-name:loadSettings",{"id":"symbol-name:loadSettings","kind":"symbol","language":"jsts","symbolName":"loadSettings","metadata":{"unresolvedName":"loadSettings"}}],["symbol-name:isRecordingSupported",{"id":"symbol-name:isRecordingSupported","kind":"symbol","language":"jsts","symbolName":"isRecordingSupported","metadata":{"unresolvedName":"isRecordingSupported"}}],["external:navigator.mediaDevices.getUserMedia",{"id":"external:navigator.mediaDevices.getUserMedia","kind":"external","language":"jsts","metadata":{"unresolvedName":"navigator.mediaDevices.getUserMedia"}}],["external:MediaRecorder.isTypeSupported",{"id":"external:MediaRecorder.isTypeSupported","kind":"external","language":"jsts","metadata":{"unresolvedName":"MediaRecorder.isTypeSupported"}}],["external:chunksRef.current.push",{"id":"external:chunksRef.current.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"chunksRef.current.push"}}],["symbol-name:cleanupStream",{"id":"symbol-name:cleanupStream","kind":"symbol","language":"jsts","symbolName":"cleanupStream","metadata":{"unresolvedName":"cleanupStream"}}],["external:result.text.trim",{"id":"external:result.text.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.text.trim"}}],["symbol-name:onTranscription",{"id":"symbol-name:onTranscription","kind":"symbol","language":"jsts","symbolName":"onTranscription","metadata":{"unresolvedName":"onTranscription"}}],["external:recorder.start",{"id":"external:recorder.start","kind":"external","language":"jsts","metadata":{"unresolvedName":"recorder.start"}}],["external:recorder.stop",{"id":"external:recorder.stop","kind":"external","language":"jsts","metadata":{"unresolvedName":"recorder.stop"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":123,"column":34,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:useWakeLock",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:useWakeLock","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","symbolName":"useWakeLock","symbolKind":"function","exported":true,"metadata":{"line":9,"column":1,"cyclomaticComplexity":9,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:navigator.wakeLock.request",{"id":"external:navigator.wakeLock.request","kind":"external","language":"jsts","metadata":{"unresolvedName":"navigator.wakeLock.request"}}],["symbol-name:request",{"id":"symbol-name:request","kind":"symbol","language":"jsts","symbolName":"request","metadata":{"unresolvedName":"request"}}],["external:wakeLockRef.current?.release().catch",{"id":"external:wakeLockRef.current?.release().catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"wakeLockRef.current?.release().catch"}}],["external:wakeLockRef.current?.release",{"id":"external:wakeLockRef.current?.release","kind":"external","language":"jsts","metadata":{"unresolvedName":"wakeLockRef.current?.release"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":42,"column":44,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:request",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:request","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","symbolName":"request","symbolKind":"function","exported":false,"metadata":{"line":17,"column":21,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:onVisibilityChange",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:onVisibilityChange","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","symbolName":"onVisibilityChange","symbolKind":"function","exported":false,"metadata":{"line":30,"column":32,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:i18next",{"id":"external:i18next","kind":"external","language":"jsts","metadata":{"source":"i18next"}}],["external:i18next-browser-languagedetector",{"id":"external:i18next-browser-languagedetector","kind":"external","language":"jsts","metadata":{"source":"i18next-browser-languagedetector"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","metadata":{"lineCount":409,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:wantsNoScrollbar",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:wantsNoScrollbar","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"wantsNoScrollbar","symbolKind":"function","exported":false,"metadata":{"line":32,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollableY",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollableY","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"isScrollableY","symbolKind":"function","exported":false,"metadata":{"line":36,"column":1,"cyclomaticComplexity":9,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:wantsNoScrollbar",{"id":"symbol-name:wantsNoScrollbar","kind":"symbol","language":"jsts","symbolName":"wantsNoScrollbar","metadata":{"unresolvedName":"wantsNoScrollbar"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollableX",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollableX","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"isScrollableX","symbolKind":"function","exported":false,"metadata":{"line":47,"column":1,"cyclomaticComplexity":9,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollable",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollable","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"isScrollable","symbolKind":"function","exported":false,"metadata":{"line":57,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:isScrollableY",{"id":"symbol-name:isScrollableY","kind":"symbol","language":"jsts","symbolName":"isScrollableY","metadata":{"unresolvedName":"isScrollableY"}}],["symbol-name:isScrollableX",{"id":"symbol-name:isScrollableX","kind":"symbol","language":"jsts","symbolName":"isScrollableX","metadata":{"unresolvedName":"isScrollableX"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"createAxisThumb","symbolKind":"function","exported":false,"metadata":{"line":76,"column":1,"cyclomaticComplexity":22,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:parent.appendChild",{"id":"external:parent.appendChild","kind":"external","language":"jsts","metadata":{"unresolvedName":"parent.appendChild"}}],["external:thumb.classList.remove",{"id":"external:thumb.classList.remove","kind":"external","language":"jsts","metadata":{"unresolvedName":"thumb.classList.remove"}}],["external:thumb.classList.add",{"id":"external:thumb.classList.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"thumb.classList.add"}}],["symbol-name:scheduleFade",{"id":"symbol-name:scheduleFade","kind":"symbol","language":"jsts","symbolName":"scheduleFade","metadata":{"unresolvedName":"scheduleFade"}}],["external:vp.getBoundingClientRect",{"id":"external:vp.getBoundingClientRect","kind":"external","language":"jsts","metadata":{"unresolvedName":"vp.getBoundingClientRect"}}],["external:thumb.setPointerCapture",{"id":"external:thumb.setPointerCapture","kind":"external","language":"jsts","metadata":{"unresolvedName":"thumb.setPointerCapture"}}],["external:thumb.releasePointerCapture",{"id":"external:thumb.releasePointerCapture","kind":"external","language":"jsts","metadata":{"unresolvedName":"thumb.releasePointerCapture"}}],["external:thumb.removeEventListener",{"id":"external:thumb.removeEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"thumb.removeEventListener"}}],["external:thumb.addEventListener",{"id":"external:thumb.addEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"thumb.addEventListener"}}],["external:thumb.remove",{"id":"external:thumb.remove","kind":"external","language":"jsts","metadata":{"unresolvedName":"thumb.remove"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scheduleFade",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scheduleFade","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"scheduleFade","symbolKind":"function","exported":false,"metadata":{"line":84,"column":24,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":400,"column":5,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:reveal",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:reveal","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"reveal","symbolKind":"function","exported":false,"metadata":{"line":91,"column":18,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:update",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:update","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"update","symbolKind":"function","exported":false,"metadata":{"line":238,"column":18,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbDown",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbDown","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"onThumbDown","symbolKind":"function","exported":false,"metadata":{"line":147,"column":23,"cyclomaticComplexity":6,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onMove",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onMove","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"onMove","symbolKind":"function","exported":false,"metadata":{"line":157,"column":20,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onUp",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onUp","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"onUp","symbolKind":"function","exported":false,"metadata":{"line":169,"column":18,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbEnter",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbEnter","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"onThumbEnter","symbolKind":"function","exported":false,"metadata":{"line":183,"column":24,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbLeave",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbLeave","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"onThumbLeave","symbolKind":"function","exported":false,"metadata":{"line":186,"column":24,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:destroy",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:destroy","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"destroy","symbolKind":"function","exported":false,"metadata":{"line":194,"column":19,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:ensurePositioned",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:ensurePositioned","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"ensurePositioned","symbolKind":"function","exported":false,"metadata":{"line":219,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"attach","symbolKind":"function","exported":false,"metadata":{"line":224,"column":1,"cyclomaticComplexity":23,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:entries.has",{"id":"external:entries.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"entries.has"}}],["symbol-name:ensurePositioned",{"id":"symbol-name:ensurePositioned","kind":"symbol","language":"jsts","symbolName":"ensurePositioned","metadata":{"unresolvedName":"ensurePositioned"}}],["symbol-name:createAxisThumb",{"id":"symbol-name:createAxisThumb","kind":"symbol","language":"jsts","symbolName":"createAxisThumb","metadata":{"unresolvedName":"createAxisThumb"}}],["external:vp.setAttribute",{"id":"external:vp.setAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"vp.setAttribute"}}],["external:v?.update",{"id":"external:v?.update","kind":"external","language":"jsts","metadata":{"unresolvedName":"v?.update"}}],["external:h?.update",{"id":"external:h?.update","kind":"external","language":"jsts","metadata":{"unresolvedName":"h?.update"}}],["external:v?.reveal",{"id":"external:v?.reveal","kind":"external","language":"jsts","metadata":{"unresolvedName":"v?.reveal"}}],["external:h?.reveal",{"id":"external:h?.reveal","kind":"external","language":"jsts","metadata":{"unresolvedName":"h?.reveal"}}],["external:e.v.update",{"id":"external:e.v.update","kind":"external","language":"jsts","metadata":{"unresolvedName":"e.v.update"}}],["external:e.v.thumb.classList.add",{"id":"external:e.v.thumb.classList.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"e.v.thumb.classList.add"}}],["external:e.h.update",{"id":"external:e.h.update","kind":"external","language":"jsts","metadata":{"unresolvedName":"e.h.update"}}],["external:e.h.thumb.classList.add",{"id":"external:e.h.thumb.classList.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"e.h.thumb.classList.add"}}],["external:e.v!.thumb.classList.remove",{"id":"external:e.v!.thumb.classList.remove","kind":"external","language":"jsts","metadata":{"unresolvedName":"e.v!.thumb.classList.remove"}}],["external:e.h!.thumb.classList.remove",{"id":"external:e.h!.thumb.classList.remove","kind":"external","language":"jsts","metadata":{"unresolvedName":"e.h!.thumb.classList.remove"}}],["external:entries.values",{"id":"external:entries.values","kind":"external","language":"jsts","metadata":{"unresolvedName":"entries.values"}}],["external:vp.contains",{"id":"external:vp.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"vp.contains"}}],["symbol-name:revealEntry",{"id":"symbol-name:revealEntry","kind":"symbol","language":"jsts","symbolName":"revealEntry","metadata":{"unresolvedName":"revealEntry"}}],["symbol-name:fadeEntry",{"id":"symbol-name:fadeEntry","kind":"symbol","language":"jsts","symbolName":"fadeEntry","metadata":{"unresolvedName":"fadeEntry"}}],["external:vp.addEventListener",{"id":"external:vp.addEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"vp.addEventListener"}}],["external:entries.set",{"id":"external:entries.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"entries.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onScroll",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onScroll","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"onScroll","symbolKind":"function","exported":false,"metadata":{"line":243,"column":20,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:revealEntry",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:revealEntry","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"revealEntry","symbolKind":"function","exported":false,"metadata":{"line":250,"column":23,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:fadeEntry",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:fadeEntry","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"fadeEntry","symbolKind":"function","exported":false,"metadata":{"line":263,"column":21,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onEnter",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onEnter","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"onEnter","symbolKind":"function","exported":false,"metadata":{"line":274,"column":19,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onLeave",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onLeave","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"onLeave","symbolKind":"function","exported":false,"metadata":{"line":281,"column":19,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:detach",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:detach","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"detach","symbolKind":"function","exported":false,"metadata":{"line":301,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:entries.get",{"id":"external:entries.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"entries.get"}}],["external:vp.removeEventListener",{"id":"external:vp.removeEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"vp.removeEventListener"}}],["external:e.v?.destroy",{"id":"external:e.v?.destroy","kind":"external","language":"jsts","metadata":{"unresolvedName":"e.v?.destroy"}}],["external:e.h?.destroy",{"id":"external:e.h?.destroy","kind":"external","language":"jsts","metadata":{"unresolvedName":"e.h?.destroy"}}],["external:e.ro.disconnect",{"id":"external:e.ro.disconnect","kind":"external","language":"jsts","metadata":{"unresolvedName":"e.ro.disconnect"}}],["external:vp.removeAttribute",{"id":"external:vp.removeAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"vp.removeAttribute"}}],["external:entries.delete",{"id":"external:entries.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"entries.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:reconcile",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:reconcile","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"reconcile","symbolKind":"function","exported":false,"metadata":{"line":317,"column":1,"cyclomaticComplexity":9,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:entry.v!.destroy",{"id":"external:entry.v!.destroy","kind":"external","language":"jsts","metadata":{"unresolvedName":"entry.v!.destroy"}}],["external:entry.h!.destroy",{"id":"external:entry.h!.destroy","kind":"external","language":"jsts","metadata":{"unresolvedName":"entry.h!.destroy"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scan",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scan","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"scan","symbolKind":"function","exported":false,"metadata":{"line":342,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:isScrollable",{"id":"symbol-name:isScrollable","kind":"symbol","language":"jsts","symbolName":"isScrollable","metadata":{"unresolvedName":"isScrollable"}}],["symbol-name:detach",{"id":"symbol-name:detach","kind":"symbol","language":"jsts","symbolName":"detach","metadata":{"unresolvedName":"detach"}}],["symbol-name:reconcile",{"id":"symbol-name:reconcile","kind":"symbol","language":"jsts","symbolName":"reconcile","metadata":{"unresolvedName":"reconcile"}}],["external:document.createTreeWalker",{"id":"external:document.createTreeWalker","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.createTreeWalker"}}],["external:el.hasAttribute",{"id":"external:el.hasAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"el.hasAttribute"}}],["symbol-name:attach",{"id":"symbol-name:attach","kind":"symbol","language":"jsts","symbolName":"attach","metadata":{"unresolvedName":"attach"}}],["external:walker.nextNode",{"id":"external:walker.nextNode","kind":"external","language":"jsts","metadata":{"unresolvedName":"walker.nextNode"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:initOverlayScrollbars",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:initOverlayScrollbars","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"initOverlayScrollbars","symbolKind":"function","exported":true,"metadata":{"line":374,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:scan",{"id":"symbol-name:scan","kind":"symbol","language":"jsts","symbolName":"scan","metadata":{"unresolvedName":"scan"}}],["external:new MutationObserver(debounceScan).observe",{"id":"external:new MutationObserver(debounceScan).observe","kind":"external","language":"jsts","metadata":{"unresolvedName":"new MutationObserver(debounceScan).observe"}}],["external:e.v?.update",{"id":"external:e.v?.update","kind":"external","language":"jsts","metadata":{"unresolvedName":"e.v?.update"}}],["external:e.h?.update",{"id":"external:e.h?.update","kind":"external","language":"jsts","metadata":{"unresolvedName":"e.h?.update"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:debounceScan",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:debounceScan","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","symbolName":"debounceScan","symbolKind":"function","exported":false,"metadata":{"line":381,"column":24,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:shiki/core",{"id":"external:shiki/core","kind":"external","language":"jsts","metadata":{"source":"shiki/core"}}],["external:shiki/engine/oniguruma",{"id":"external:shiki/engine/oniguruma","kind":"external","language":"jsts","metadata":{"source":"shiki/engine/oniguruma"}}],["external:shiki/onig.wasm?url",{"id":"external:shiki/onig.wasm?url","kind":"external","language":"jsts","metadata":{"source":"shiki/onig.wasm?url"}}],["external:shiki/langs",{"id":"external:shiki/langs","kind":"external","language":"jsts","metadata":{"source":"shiki/langs"}}],["external:shiki/themes",{"id":"external:shiki/themes","kind":"external","language":"jsts","metadata":{"source":"shiki/themes"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:loadOnigWasm",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:loadOnigWasm","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","symbolName":"loadOnigWasm","symbolKind":"function","exported":false,"metadata":{"line":22,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:fetch(onigWasmUrl).then",{"id":"external:fetch(onigWasmUrl).then","kind":"external","language":"jsts","metadata":{"unresolvedName":"fetch(onigWasmUrl).then"}}],["external:response.arrayBuffer",{"id":"external:response.arrayBuffer","kind":"external","language":"jsts","metadata":{"unresolvedName":"response.arrayBuffer"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":84,"column":5,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:getHighlighter",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:getHighlighter","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","symbolName":"getHighlighter","symbolKind":"function","exported":true,"metadata":{"line":34,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:createHighlighterCore",{"id":"symbol-name:createHighlighterCore","kind":"symbol","language":"jsts","symbolName":"createHighlighterCore","metadata":{"unresolvedName":"createHighlighterCore"}}],["symbol-name:createOnigurumaEngine",{"id":"symbol-name:createOnigurumaEngine","kind":"symbol","language":"jsts","symbolName":"createOnigurumaEngine","metadata":{"unresolvedName":"createOnigurumaEngine"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:ensureLang",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:ensureLang","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","symbolName":"ensureLang","symbolKind":"function","exported":true,"metadata":{"line":59,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getHighlighter",{"id":"symbol-name:getHighlighter","kind":"symbol","language":"jsts","symbolName":"getHighlighter","metadata":{"unresolvedName":"getHighlighter"}}],["external:h.getLoadedLanguages",{"id":"external:h.getLoadedLanguages","kind":"external","language":"jsts","metadata":{"unresolvedName":"h.getLoadedLanguages"}}],["external:loaded.includes",{"id":"external:loaded.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"loaded.includes"}}],["external:loadingLangs.get",{"id":"external:loadingLangs.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"loadingLangs.get"}}],["external:h.loadLanguage(loader as Parameters[0]).then",{"id":"external:h.loadLanguage(loader as Parameters[0]).then","kind":"external","language":"jsts","metadata":{"unresolvedName":"h.loadLanguage(loader as Parameters[0]).then"}}],["external:h.loadLanguage",{"id":"external:h.loadLanguage","kind":"external","language":"jsts","metadata":{"unresolvedName":"h.loadLanguage"}}],["external:loadingLangs.delete",{"id":"external:loadingLangs.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"loadingLangs.delete"}}],["external:loadingLangs.set",{"id":"external:loadingLangs.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"loadingLangs.set"}}],["external:h.getLoadedLanguages().includes",{"id":"external:h.getLoadedLanguages().includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"h.getLoadedLanguages().includes"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:codeToHtml",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:codeToHtml","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","symbolName":"codeToHtml","symbolKind":"function","exported":true,"metadata":{"line":99,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:ensureLang",{"id":"symbol-name:ensureLang","kind":"symbol","language":"jsts","symbolName":"ensureLang","metadata":{"unresolvedName":"ensureLang"}}],["external:h.codeToHtml",{"id":"external:h.codeToHtml","kind":"external","language":"jsts","metadata":{"unresolvedName":"h.codeToHtml"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:codeToTokens",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:codeToTokens","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","symbolName":"codeToTokens","symbolKind":"function","exported":true,"metadata":{"line":107,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization","auth","user-input"]}}],["external:h.codeToTokens",{"id":"external:h.codeToTokens","kind":"external","language":"jsts","metadata":{"unresolvedName":"h.codeToTokens"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:isSupportedLanguage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:isSupportedLanguage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","symbolName":"isSupportedLanguage","symbolKind":"function","exported":true,"metadata":{"line":119,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":true,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:supportedLangs.has",{"id":"external:supportedLangs.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"supportedLangs.has"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts","metadata":{"lineCount":49,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:node:url",{"id":"external:node:url","kind":"external","language":"jsts","metadata":{"source":"node:url"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:readLocaleFile",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:readLocaleFile","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts","symbolName":"readLocaleFile","symbolKind":"function","exported":false,"metadata":{"line":10,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:readFileSync",{"id":"symbol-name:readFileSync","kind":"symbol","language":"jsts","symbolName":"readFileSync","metadata":{"unresolvedName":"readFileSync"}}],["symbol-name:join",{"id":"symbol-name:join","kind":"symbol","language":"jsts","symbolName":"join","metadata":{"unresolvedName":"join"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:flattenKeys",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:flattenKeys","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts","symbolName":"flattenKeys","symbolKind":"function","exported":false,"metadata":{"line":14,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:Object.entries(value).flatMap",{"id":"external:Object.entries(value).flatMap","kind":"external","language":"jsts","metadata":{"unresolvedName":"Object.entries(value).flatMap"}}],["symbol-name:flattenKeys",{"id":"symbol-name:flattenKeys","kind":"symbol","language":"jsts","symbolName":"flattenKeys","metadata":{"unresolvedName":"flattenKeys"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":33,"column":61,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:readdirSync(join(LOCALES_DIR, BASE_LOCALE))\n .filter",{"id":"external:readdirSync(join(LOCALES_DIR, BASE_LOCALE))\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"readdirSync(join(LOCALES_DIR, BASE_LOCALE))\n .filter"}}],["symbol-name:readdirSync",{"id":"symbol-name:readdirSync","kind":"symbol","language":"jsts","symbolName":"readdirSync","metadata":{"unresolvedName":"readdirSync"}}],["external:readdirSync(LOCALES_DIR)\n .filter",{"id":"external:readdirSync(LOCALES_DIR)\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"readdirSync(LOCALES_DIR)\n .filter"}}],["external:entry.endsWith",{"id":"external:entry.endsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"entry.endsWith"}}],["external:expect(locales).toEqual",{"id":"external:expect(locales).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(locales).toEqual"}}],["external:[...EXPECTED_LOCALES].sort",{"id":"external:[...EXPECTED_LOCALES].sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"[...EXPECTED_LOCALES].sort"}}],["external:readdirSync(join(LOCALES_DIR, locale))\n .filter",{"id":"external:readdirSync(join(LOCALES_DIR, locale))\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"readdirSync(join(LOCALES_DIR, locale))\n .filter"}}],["external:expect(localeNamespaces).toEqual",{"id":"external:expect(localeNamespaces).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(localeNamespaces).toEqual"}}],["external:expect(flattenKeys(readLocaleFile(locale, namespace)).sort()).toEqual",{"id":"external:expect(flattenKeys(readLocaleFile(locale, namespace)).sort()).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(flattenKeys(readLocaleFile(locale, namespace)).sort()).toEqual"}}],["external:flattenKeys(readLocaleFile(locale, namespace)).sort",{"id":"external:flattenKeys(readLocaleFile(locale, namespace)).sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"flattenKeys(readLocaleFile(locale, namespace)).sort"}}],["symbol-name:readLocaleFile",{"id":"symbol-name:readLocaleFile","kind":"symbol","language":"jsts","symbolName":"readLocaleFile","metadata":{"unresolvedName":"readLocaleFile"}}],["external:flattenKeys(readLocaleFile(BASE_LOCALE, namespace)).sort",{"id":"external:flattenKeys(readLocaleFile(BASE_LOCALE, namespace)).sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"flattenKeys(readLocaleFile(BASE_LOCALE, namespace)).sort"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","metadata":{"lineCount":165,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:react-dom/client",{"id":"external:react-dom/client","kind":"external","language":"jsts","metadata":{"source":"react-dom/client"}}],["external:katex/dist/katex.min.css",{"id":"external:katex/dist/katex.min.css","kind":"external","language":"jsts","metadata":{"source":"katex/dist/katex.min.css"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/index.css",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/index.css","kind":"file","language":"css","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/index.css"}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts"}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","metadata":{"lineCount":856,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","metadata":{"lineCount":91,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:ensureRandomUUID",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:ensureRandomUUID","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","symbolName":"ensureRandomUUID","symbolKind":"function","exported":false,"metadata":{"line":24,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:cryptoObj.getRandomValues",{"id":"external:cryptoObj.getRandomValues","kind":"external","language":"jsts","metadata":{"unresolvedName":"cryptoObj.getRandomValues"}}],["external:b.toString(16).padStart",{"id":"external:b.toString(16).padStart","kind":"external","language":"jsts","metadata":{"unresolvedName":"b.toString(16).padStart"}}],["external:b.toString",{"id":"external:b.toString","kind":"external","language":"jsts","metadata":{"unresolvedName":"b.toString"}}],["external:hex.slice(0, 4).join",{"id":"external:hex.slice(0, 4).join","kind":"external","language":"jsts","metadata":{"unresolvedName":"hex.slice(0, 4).join"}}],["external:hex.slice",{"id":"external:hex.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"hex.slice"}}],["external:hex.slice(4, 6).join",{"id":"external:hex.slice(4, 6).join","kind":"external","language":"jsts","metadata":{"unresolvedName":"hex.slice(4, 6).join"}}],["external:hex.slice(6, 8).join",{"id":"external:hex.slice(6, 8).join","kind":"external","language":"jsts","metadata":{"unresolvedName":"hex.slice(6, 8).join"}}],["external:hex.slice(8, 10).join",{"id":"external:hex.slice(8, 10).join","kind":"external","language":"jsts","metadata":{"unresolvedName":"hex.slice(8, 10).join"}}],["external:hex.slice(10).join",{"id":"external:hex.slice(10).join","kind":"external","language":"jsts","metadata":{"unresolvedName":"hex.slice(10).join"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":125,"column":47,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:messageStore.clearAll",{"id":"external:messageStore.clearAll","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.clearAll"}}],["external:childSessionStore.clearAll",{"id":"external:childSessionStore.clearAll","kind":"external","language":"jsts","metadata":{"unresolvedName":"childSessionStore.clearAll"}}],["external:todoStore.clearAll",{"id":"external:todoStore.clearAll","kind":"external","language":"jsts","metadata":{"unresolvedName":"todoStore.clearAll"}}],["symbol-name:resetPathModeCache",{"id":"symbol-name:resetPathModeCache","kind":"symbol","language":"jsts","symbolName":"resetPathModeCache","metadata":{"unresolvedName":"resetPathModeCache"}}],["external:autoApproveStore.reloadFromStorage",{"id":"external:autoApproveStore.reloadFromStorage","kind":"external","language":"jsts","metadata":{"unresolvedName":"autoApproveStore.reloadFromStorage"}}],["external:console.info",{"id":"external:console.info","kind":"external","language":"jsts","metadata":{"unresolvedName":"console.info"}}],["symbol-name:globalErrorHandler",{"id":"symbol-name:globalErrorHandler","kind":"symbol","language":"jsts","symbolName":"globalErrorHandler","metadata":{"unresolvedName":"globalErrorHandler"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:bootstrap",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:bootstrap","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","symbolName":"bootstrap","symbolKind":"function","exported":false,"metadata":{"line":130,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:createRoot(document.getElementById('root')!).render",{"id":"external:createRoot(document.getElementById('root')!).render","kind":"external","language":"jsts","metadata":{"unresolvedName":"createRoot(document.getElementById('root')!).render"}}],["symbol-name:createRoot",{"id":"symbol-name:createRoot","kind":"symbol","language":"jsts","symbolName":"createRoot","metadata":{"unresolvedName":"createRoot"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts","metadata":{"lineCount":48,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":36,"column":84,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:activeSessionStore.getBusySessions().map",{"id":"external:activeSessionStore.getBusySessions().map","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeSessionStore.getBusySessions().map"}}],["external:activeSessionStore.getBusySessions",{"id":"external:activeSessionStore.getBusySessions","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeSessionStore.getBusySessions"}}],["external:expect(activeSessionStore.getBusySessions()[0]?.pendingAction).toEqual",{"id":"external:expect(activeSessionStore.getBusySessions()[0]?.pendingAction).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(activeSessionStore.getBusySessions()[0]?.pendingAction).toEqual"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":92,"column":12,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:notify",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:notify","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"notify","symbolKind":"function","exported":false,"metadata":{"line":82,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.recomputeDerived",{"id":"external:this.recomputeDerived","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.recomputeDerived"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:recomputeDerived",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:recomputeDerived","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"recomputeDerived","symbolKind":"function","exported":false,"metadata":{"line":89,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:Object.entries(this.state.statusMap)\r\n .filter",{"id":"external:Object.entries(this.state.statusMap)\r\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"Object.entries(this.state.statusMap)\r\n .filter"}}],["external:this.sessionMeta.get",{"id":"external:this.sessionMeta.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.sessionMeta.get"}}],["external:this.findPendingForSession",{"id":"external:this.findPendingForSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.findPendingForSession"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:findPendingForSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:findPendingForSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"findPendingForSession","symbolKind":"function","exported":false,"metadata":{"line":108,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.pendingRequests.values",{"id":"external:this.pendingRequests.values","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.pendingRequests.values"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:hasPendingForSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:hasPendingForSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"hasPendingForSession","symbolKind":"function","exported":false,"metadata":{"line":115,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:applyStatusSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:applyStatusSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"applyStatusSnapshot","symbolKind":"function","exported":false,"metadata":{"line":126,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:initialize",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:initialize","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"initialize","symbolKind":"function","exported":false,"metadata":{"line":145,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.applyStatusSnapshot",{"id":"external:this.applyStatusSnapshot","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.applyStatusSnapshot"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:mergeStatusRefresh",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:mergeStatusRefresh","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"mergeStatusRefresh","symbolKind":"function","exported":false,"metadata":{"line":157,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:initializePendingRequests",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:initializePendingRequests","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"initializePendingRequests","symbolKind":"function","exported":false,"metadata":{"line":169,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.applyPendingSnapshot",{"id":"external:this.applyPendingSnapshot","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.applyPendingSnapshot"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:mergePendingRequests",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:mergePendingRequests","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"mergePendingRequests","symbolKind":"function","exported":false,"metadata":{"line":180,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:applyPendingSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:applyPendingSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"applyPendingSnapshot","symbolKind":"function","exported":false,"metadata":{"line":187,"column":3,"cyclomaticComplexity":10,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:pendingRequests.set",{"id":"external:pendingRequests.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"pendingRequests.set"}}],["external:deferredIdleSessions.add",{"id":"external:deferredIdleSessions.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"deferredIdleSessions.add"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:addPendingRequest",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:addPendingRequest","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"addPendingRequest","symbolKind":"function","exported":false,"metadata":{"line":239,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.pendingRequests.set",{"id":"external:this.pendingRequests.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.pendingRequests.set"}}],["external:this.deferredIdleSessions.add",{"id":"external:this.deferredIdleSessions.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.deferredIdleSessions.add"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:resolvePendingRequest",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:resolvePendingRequest","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"resolvePendingRequest","symbolKind":"function","exported":false,"metadata":{"line":254,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.pendingRequests.get",{"id":"external:this.pendingRequests.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.pendingRequests.get"}}],["external:this.pendingRequests.delete",{"id":"external:this.pendingRequests.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.pendingRequests.delete"}}],["external:this.deferredIdleSessions.has",{"id":"external:this.deferredIdleSessions.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.deferredIdleSessions.has"}}],["external:this.hasPendingForSession",{"id":"external:this.hasPendingForSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.hasPendingForSession"}}],["external:this.deferredIdleSessions.delete",{"id":"external:this.deferredIdleSessions.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.deferredIdleSessions.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:updateStatus",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:updateStatus","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"updateStatus","symbolKind":"function","exported":false,"metadata":{"line":273,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:setSessionMeta",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:setSessionMeta","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"setSessionMeta","symbolKind":"function","exported":false,"metadata":{"line":299,"column":3,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.sessionMeta.set",{"id":"external:this.sessionMeta.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.sessionMeta.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:setSessionMetaBulk",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:setSessionMetaBulk","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"setSessionMetaBulk","symbolKind":"function","exported":false,"metadata":{"line":309,"column":3,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:getSessionMeta",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:getSessionMeta","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"getSessionMeta","symbolKind":"function","exported":false,"metadata":{"line":328,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":true,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:getBusySessions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:getBusySessions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"getBusySessions","symbolKind":"function","exported":false,"metadata":{"line":332,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useActiveSessionStore",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useActiveSessionStore","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"useActiveSessionStore","symbolKind":"function","exported":true,"metadata":{"line":347,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useBusySessions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useBusySessions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"useBusySessions","symbolKind":"function","exported":true,"metadata":{"line":351,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useBusyCount",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useBusyCount","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"useBusyCount","symbolKind":"function","exported":true,"metadata":{"line":355,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useSessionActiveEntry",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useSessionActiveEntry","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","symbolName":"useSessionActiveEntry","symbolKind":"function","exported":true,"metadata":{"line":360,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:activeSessionStore.getBusySessions().find",{"id":"external:activeSessionStore.getBusySessions().find","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeSessionStore.getBusySessions().find"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:wildcardMatch",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:wildcardMatch","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","symbolName":"wildcardMatch","symbolKind":"function","exported":false,"metadata":{"line":28,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:pattern\r\n .replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&') // 转义特殊字符\r\n .replace",{"id":"external:pattern\r\n .replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&') // 转义特殊字符\r\n .replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"pattern\r\n .replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&') // 转义特殊字符\r\n .replace"}}],["external:pattern\r\n .replace",{"id":"external:pattern\r\n .replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"pattern\r\n .replace"}}],["external:regex.test",{"id":"external:regex.test","kind":"external","language":"jsts","metadata":{"unresolvedName":"regex.test"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:reloadFromStorage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:reloadFromStorage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","symbolName":"reloadFromStorage","symbolKind":"function","exported":false,"metadata":{"line":73,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.rulesMap.clear",{"id":"external:this.rulesMap.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.rulesMap.clear"}}],["external:this._paneFullAutoModes.clear",{"id":"external:this._paneFullAutoModes.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"this._paneFullAutoModes.clear"}}],["external:this._fullAutoListeners.forEach",{"id":"external:this._fullAutoListeners.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"this._fullAutoListeners.forEach"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setEnabled",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setEnabled","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","symbolName":"setEnabled","symbolKind":"function","exported":false,"metadata":{"line":99,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setFullAutoMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setFullAutoMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","symbolName":"setFullAutoMode","symbolKind":"function","exported":false,"metadata":{"line":127,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:getPaneFullAutoMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:getPaneFullAutoMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","symbolName":"getPaneFullAutoMode","symbolKind":"function","exported":false,"metadata":{"line":135,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this._paneFullAutoModes.get",{"id":"external:this._paneFullAutoModes.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"this._paneFullAutoModes.get"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setPaneFullAutoMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setPaneFullAutoMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","symbolName":"setPaneFullAutoMode","symbolKind":"function","exported":false,"metadata":{"line":141,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this._paneFullAutoModes.delete",{"id":"external:this._paneFullAutoModes.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this._paneFullAutoModes.delete"}}],["external:this.setFullAutoMode",{"id":"external:this.setFullAutoMode","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.setFullAutoMode"}}],["external:this._paneFullAutoModes.set",{"id":"external:this._paneFullAutoModes.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"this._paneFullAutoModes.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:clearPaneFullAutoMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:clearPaneFullAutoMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","symbolName":"clearPaneFullAutoMode","symbolKind":"function","exported":false,"metadata":{"line":152,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:cyclePaneFullAutoMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:cyclePaneFullAutoMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","symbolName":"cyclePaneFullAutoMode","symbolKind":"function","exported":false,"metadata":{"line":157,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.getPaneFullAutoMode",{"id":"external:this.getPaneFullAutoMode","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getPaneFullAutoMode"}}],["external:this.setPaneFullAutoMode",{"id":"external:this.setPaneFullAutoMode","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.setPaneFullAutoMode"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setFullAuto",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setFullAuto","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","symbolName":"setFullAuto","symbolKind":"function","exported":false,"metadata":{"line":179,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:onFullAutoChange",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:onFullAutoChange","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","symbolName":"onFullAutoChange","symbolKind":"function","exported":false,"metadata":{"line":186,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this._fullAutoListeners.add",{"id":"external:this._fullAutoListeners.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"this._fullAutoListeners.add"}}],["external:this._fullAutoListeners.delete",{"id":"external:this._fullAutoListeners.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this._fullAutoListeners.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":257,"column":25,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:addRules",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:addRules","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","symbolName":"addRules","symbolKind":"function","exported":false,"metadata":{"line":199,"column":3,"cyclomaticComplexity":6,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.rulesMap.get",{"id":"external:this.rulesMap.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.rulesMap.get"}}],["external:uniqueRules.some",{"id":"external:uniqueRules.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"uniqueRules.some"}}],["external:uniqueRules.push",{"id":"external:uniqueRules.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"uniqueRules.push"}}],["external:this.rulesMap.set",{"id":"external:this.rulesMap.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.rulesMap.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:getRules",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:getRules","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","symbolName":"getRules","symbolKind":"function","exported":false,"metadata":{"line":223,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:clearRules",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:clearRules","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","symbolName":"clearRules","symbolKind":"function","exported":false,"metadata":{"line":230,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.rulesMap.delete",{"id":"external:this.rulesMap.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.rulesMap.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:clearAllRules",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:clearAllRules","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","symbolName":"clearAllRules","symbolKind":"function","exported":false,"metadata":{"line":237,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:shouldAutoApprove",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:shouldAutoApprove","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","symbolName":"shouldAutoApprove","symbolKind":"function","exported":false,"metadata":{"line":248,"column":3,"cyclomaticComplexity":8,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.getRules",{"id":"external:this.getRules","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getRules"}}],["external:requestPatterns.every",{"id":"external:requestPatterns.every","kind":"external","language":"jsts","metadata":{"unresolvedName":"requestPatterns.every"}}],["external:rules.some",{"id":"external:rules.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"rules.some"}}],["symbol-name:wildcardMatch",{"id":"symbol-name:wildcardMatch","kind":"symbol","language":"jsts","symbolName":"wildcardMatch","metadata":{"unresolvedName":"wildcardMatch"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:getDebugInfo",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:getDebugInfo","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","symbolName":"getDebugInfo","symbolKind":"function","exported":false,"metadata":{"line":272,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:Array.from(this.rulesMap.entries()).map",{"id":"external:Array.from(this.rulesMap.entries()).map","kind":"external","language":"jsts","metadata":{"unresolvedName":"Array.from(this.rulesMap.entries()).map"}}],["external:this.rulesMap.entries",{"id":"external:this.rulesMap.entries","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.rulesMap.entries"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":11,"column":15,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:getMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:getMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","symbolName":"getMode","symbolKind":"function","exported":false,"metadata":{"line":16,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.modes.get",{"id":"external:this.modes.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.modes.get"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:setMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:setMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","symbolName":"setMode","symbolKind":"function","exported":false,"metadata":{"line":21,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.modes.set",{"id":"external:this.modes.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.modes.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:clearSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:clearSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","symbolName":"clearSession","symbolKind":"function","exported":false,"metadata":{"line":28,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.modes.delete",{"id":"external:this.modes.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.modes.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:clearAll",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:clearAll","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","symbolName":"clearAll","symbolKind":"function","exported":false,"metadata":{"line":34,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.modes.clear",{"id":"external:this.modes.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.modes.clear"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:useSessionChangeScope",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:useSessionChangeScope","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","symbolName":"useSessionChangeScope","symbolKind":"function","exported":true,"metadata":{"line":43,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:subscribe",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:subscribe","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","symbolName":"subscribe","symbolKind":"function","exported":false,"metadata":{"line":44,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:notify",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:notify","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","symbolName":"notify","symbolKind":"function","exported":false,"metadata":{"line":49,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:registerChildSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:registerChildSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","symbolName":"registerChildSession","symbolKind":"function","exported":false,"metadata":{"line":61,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.childrenByParent.get",{"id":"external:this.childrenByParent.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.childrenByParent.get"}}],["external:this.childrenByParent.set",{"id":"external:this.childrenByParent.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.childrenByParent.set"}}],["external:children.add",{"id":"external:children.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"children.add"}}],["external:this.sessionInfo.set",{"id":"external:this.sessionInfo.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.sessionInfo.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:updateChildSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:updateChildSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","symbolName":"updateChildSession","symbolKind":"function","exported":false,"metadata":{"line":87,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.sessionInfo.get",{"id":"external:this.sessionInfo.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.sessionInfo.get"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:markIdle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:markIdle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","symbolName":"markIdle","symbolKind":"function","exported":false,"metadata":{"line":98,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.updateChildSession",{"id":"external:this.updateChildSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.updateChildSession"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:markError",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:markError","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","symbolName":"markError","symbolKind":"function","exported":false,"metadata":{"line":105,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessionIds",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessionIds","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","symbolName":"getChildSessionIds","symbolKind":"function","exported":false,"metadata":{"line":116,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","symbolName":"getChildSessions","symbolKind":"function","exported":false,"metadata":{"line":124,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.getChildSessionIds",{"id":"external:this.getChildSessionIds","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getChildSessionIds"}}],["external:childIds.map(id => this.sessionInfo.get(id)).filter",{"id":"external:childIds.map(id => this.sessionInfo.get(id)).filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"childIds.map(id => this.sessionInfo.get(id)).filter"}}],["external:childIds.map",{"id":"external:childIds.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"childIds.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionInfo",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionInfo","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","symbolName":"getSessionInfo","symbolKind":"function","exported":false,"metadata":{"line":132,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":true,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:isChildOf",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:isChildOf","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","symbolName":"isChildOf","symbolKind":"function","exported":false,"metadata":{"line":141,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.isChildOf",{"id":"external:this.isChildOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.isChildOf"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionAndDescendants",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionAndDescendants","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","symbolName":"getSessionAndDescendants","symbolKind":"function","exported":false,"metadata":{"line":158,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.getSessionAndDescendants",{"id":"external:this.getSessionAndDescendants","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getSessionAndDescendants"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:belongsToSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:belongsToSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","symbolName":"belongsToSession","symbolKind":"function","exported":false,"metadata":{"line":172,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:clearAll",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:clearAll","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","symbolName":"clearAll","symbolKind":"function","exported":false,"metadata":{"line":184,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.childrenByParent.clear",{"id":"external:this.childrenByParent.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.childrenByParent.clear"}}],["external:this.sessionInfo.clear",{"id":"external:this.sessionInfo.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.sessionInfo.clear"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:clearChildren",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:clearChildren","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","symbolName":"clearChildren","symbolKind":"function","exported":false,"metadata":{"line":193,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.sessionInfo.delete",{"id":"external:this.sessionInfo.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.sessionInfo.delete"}}],["external:this.clearChildren",{"id":"external:this.clearChildren","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.clearChildren"}}],["external:this.childrenByParent.delete",{"id":"external:this.childrenByParent.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.childrenByParent.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":223,"column":29,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:childSessionsCache.clear",{"id":"external:childSessionsCache.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"childSessionsCache.clear"}}],["external:sessionFamilyCache.clear",{"id":"external:sessionFamilyCache.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionFamilyCache.clear"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessionsSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessionsSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","symbolName":"getChildSessionsSnapshot","symbolKind":"function","exported":false,"metadata":{"line":228,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:childSessionsCache.has",{"id":"external:childSessionsCache.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"childSessionsCache.has"}}],["external:childSessionsCache.set",{"id":"external:childSessionsCache.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"childSessionsCache.set"}}],["external:childSessionsCache.get",{"id":"external:childSessionsCache.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"childSessionsCache.get"}}],["external:childSessionStore.getChildSessions",{"id":"external:childSessionStore.getChildSessions","kind":"external","language":"jsts","metadata":{"unresolvedName":"childSessionStore.getChildSessions"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionFamilySnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionFamilySnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","symbolName":"getSessionFamilySnapshot","symbolKind":"function","exported":false,"metadata":{"line":243,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:sessionFamilyCache.has",{"id":"external:sessionFamilyCache.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionFamilyCache.has"}}],["external:sessionFamilyCache.set",{"id":"external:sessionFamilyCache.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionFamilyCache.set"}}],["external:sessionFamilyCache.get",{"id":"external:sessionFamilyCache.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionFamilyCache.get"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:useChildSessions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:useChildSessions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","symbolName":"useChildSessions","symbolKind":"function","exported":true,"metadata":{"line":266,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:childSessionStore.subscribe",{"id":"external:childSessionStore.subscribe","kind":"external","language":"jsts","metadata":{"unresolvedName":"childSessionStore.subscribe"}}],["symbol-name:getChildSessionsSnapshot",{"id":"symbol-name:getChildSessionsSnapshot","kind":"symbol","language":"jsts","symbolName":"getChildSessionsSnapshot","metadata":{"unresolvedName":"getChildSessionsSnapshot"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:useSessionFamily",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:useSessionFamily","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","symbolName":"useSessionFamily","symbolKind":"function","exported":true,"metadata":{"line":277,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["symbol-name:getSessionFamilySnapshot",{"id":"symbol-name:getSessionFamilySnapshot","kind":"symbol","language":"jsts","symbolName":"getSessionFamilySnapshot","metadata":{"unresolvedName":"getSessionFamilySnapshot"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:cloneAttachments",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:cloneAttachments","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","symbolName":"cloneAttachments","symbolKind":"function","exported":false,"metadata":{"line":28,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":56,"column":15,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.listeners.add",{"id":"external:this.listeners.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.listeners.add"}}],["external:this.listeners.delete",{"id":"external:this.listeners.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.listeners.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:emit",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:emit","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","symbolName":"emit","symbolKind":"function","exported":false,"metadata":{"line":63,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.listeners.forEach",{"id":"external:this.listeners.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.listeners.forEach"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:setState",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:setState","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","symbolName":"setState","symbolKind":"function","exported":false,"metadata":{"line":67,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.emit",{"id":"external:this.emit","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.emit"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:enqueue",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:enqueue","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","symbolName":"enqueue","symbolKind":"function","exported":false,"metadata":{"line":72,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:crypto.randomUUID().replace",{"id":"external:crypto.randomUUID().replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"crypto.randomUUID().replace"}}],["symbol-name:cloneAttachments",{"id":"symbol-name:cloneAttachments","kind":"symbol","language":"jsts","symbolName":"cloneAttachments","metadata":{"unresolvedName":"cloneAttachments"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:remove",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:remove","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","symbolName":"remove","symbolKind":"function","exported":false,"metadata":{"line":95,"column":3,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:current.filter",{"id":"external:current.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"current.filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:markFailed",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:markFailed","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","symbolName":"markFailed","symbolKind":"function","exported":false,"metadata":{"line":117,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:clearFailed",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:clearFailed","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","symbolName":"clearFailed","symbolKind":"function","exported":false,"metadata":{"line":128,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:startSending",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:startSending","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","symbolName":"startSending","symbolKind":"function","exported":false,"metadata":{"line":139,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:finishSending",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:finishSending","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","symbolName":"finishSending","symbolKind":"function","exported":false,"metadata":{"line":153,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:getItems",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:getItems","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","symbolName":"getItems","symbolKind":"function","exported":false,"metadata":{"line":165,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:getItem",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:getItem","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","symbolName":"getItem","symbolKind":"function","exported":false,"metadata":{"line":170,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.getItems(sessionId).find",{"id":"external:this.getItems(sessionId).find","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getItems(sessionId).find"}}],["external:this.getItems",{"id":"external:this.getItems","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getItems"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:clearSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:clearSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","symbolName":"clearSession","symbolKind":"function","exported":false,"metadata":{"line":174,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:getSessionIds",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:getSessionIds","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","symbolName":"getSessionIds","symbolKind":"function","exported":false,"metadata":{"line":194,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:reset",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:reset","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","symbolName":"reset","symbolKind":"function","exported":false,"metadata":{"line":198,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:useFollowupQueue",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:useFollowupQueue","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","symbolName":"useFollowupQueue","symbolKind":"function","exported":true,"metadata":{"line":209,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/index.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/index.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/index.ts","metadata":{"lineCount":102,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts","metadata":{"lineCount":22,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:keyboardEvent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:keyboardEvent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts","symbolName":"keyboardEvent","symbolKind":"function","exported":false,"metadata":{"line":4,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":17,"column":58,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:keyboardEvent",{"id":"symbol-name:keyboardEvent","kind":"symbol","language":"jsts","symbolName":"keyboardEvent","metadata":{"unresolvedName":"keyboardEvent"}}],["external:expect(keybindingStore.isKeyUsed('Ctrl+C', undefined, 'terminal')).toBe",{"id":"external:expect(keybindingStore.isKeyUsed('Ctrl+C', undefined, 'terminal')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(keybindingStore.isKeyUsed('Ctrl+C', undefined, 'terminal')).toBe"}}],["external:expect(keybindingStore.isKeyUsed('Ctrl+C', undefined, 'global')).toBe",{"id":"external:expect(keybindingStore.isKeyUsed('Ctrl+C', undefined, 'global')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(keybindingStore.isKeyUsed('Ctrl+C', undefined, 'global')).toBe"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:normalizeKeyName",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:normalizeKeyName","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"normalizeKeyName","symbolKind":"function","exported":false,"metadata":{"line":333,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:key.toLowerCase",{"id":"external:key.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"key.toLowerCase"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:parseKeybinding",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:parseKeybinding","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"parseKeybinding","symbolKind":"function","exported":true,"metadata":{"line":379,"column":1,"cyclomaticComplexity":17,"maxNestingDepth":5,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:remaining.includes",{"id":"external:remaining.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"remaining.includes"}}],["external:remaining.indexOf",{"id":"external:remaining.indexOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"remaining.indexOf"}}],["external:remaining.substring",{"id":"external:remaining.substring","kind":"external","language":"jsts","metadata":{"unresolvedName":"remaining.substring"}}],["external:modifiers.includes",{"id":"external:modifiers.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"modifiers.includes"}}],["external:remaining.substring(1).split('+')[0].toLowerCase",{"id":"external:remaining.substring(1).split('+')[0].toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"remaining.substring(1).split('+')[0].toLowerCase"}}],["external:remaining.substring(1).split",{"id":"external:remaining.substring(1).split","kind":"external","language":"jsts","metadata":{"unresolvedName":"remaining.substring(1).split"}}],["external:part.toLowerCase",{"id":"external:part.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"part.toLowerCase"}}],["symbol-name:normalizeKeyName",{"id":"symbol-name:normalizeKeyName","kind":"symbol","language":"jsts","symbolName":"normalizeKeyName","metadata":{"unresolvedName":"normalizeKeyName"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:normalizeKeybindingString",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:normalizeKeybindingString","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"normalizeKeybindingString","symbolKind":"function","exported":true,"metadata":{"line":441,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:keybindingToNormalizedString",{"id":"symbol-name:keybindingToNormalizedString","kind":"symbol","language":"jsts","symbolName":"keybindingToNormalizedString","metadata":{"unresolvedName":"keybindingToNormalizedString"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:keybindingToNormalizedString",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:keybindingToNormalizedString","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"keybindingToNormalizedString","symbolKind":"function","exported":false,"metadata":{"line":449,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybinding",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybinding","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"formatKeybinding","symbolKind":"function","exported":true,"metadata":{"line":462,"column":1,"cyclomaticComplexity":9,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:keyDisplay.toUpperCase",{"id":"external:keyDisplay.toUpperCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"keyDisplay.toUpperCase"}}],["external:keyDisplay.startsWith",{"id":"external:keyDisplay.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"keyDisplay.startsWith"}}],["external:/^f\\d{1,2}$/.test",{"id":"external:/^f\\d{1,2}$/.test","kind":"external","language":"jsts","metadata":{"unresolvedName":"/^f\\d{1,2}$/.test"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybindingCompact",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybindingCompact","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"formatKeybindingCompact","symbolKind":"function","exported":true,"metadata":{"line":517,"column":1,"cyclomaticComplexity":18,"maxNestingDepth":12,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:keyStr.toUpperCase",{"id":"external:keyStr.toUpperCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"keyStr.toUpperCase"}}],["external:keyStr.startsWith",{"id":"external:keyStr.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"keyStr.startsWith"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:keyEventToString",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:keyEventToString","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"keyEventToString","symbolKind":"function","exported":true,"metadata":{"line":548,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:formatKeybindingCompact",{"id":"symbol-name:formatKeybindingCompact","kind":"symbol","language":"jsts","symbolName":"formatKeybindingCompact","metadata":{"unresolvedName":"formatKeybindingCompact"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:matchesKeybinding",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:matchesKeybinding","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"matchesKeybinding","symbolKind":"function","exported":true,"metadata":{"line":565,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:keybindingsEqual",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:keybindingsEqual","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"keybindingsEqual","symbolKind":"function","exported":true,"metadata":{"line":581,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:normalizeKeybindingString",{"id":"symbol-name:normalizeKeybindingString","kind":"symbol","language":"jsts","symbolName":"normalizeKeybindingString","metadata":{"unresolvedName":"normalizeKeybindingString"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:loadFromStorage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:loadFromStorage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"loadFromStorage","symbolKind":"function","exported":false,"metadata":{"line":608,"column":3,"cyclomaticComplexity":5,"maxNestingDepth":4,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:DEFAULT_KEYBINDINGS.map",{"id":"external:DEFAULT_KEYBINDINGS.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"DEFAULT_KEYBINDINGS.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:saveToStorage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:saveToStorage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"saveToStorage","symbolKind":"function","exported":false,"metadata":{"line":628,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:subscribe",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:subscribe","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"subscribe","symbolKind":"function","exported":false,"metadata":{"line":647,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:notify",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:notify","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"notify","symbolKind":"function","exported":false,"metadata":{"line":652,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.updateSnapshot",{"id":"external:this.updateSnapshot","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.updateSnapshot"}}],["symbol-name:l",{"id":"symbol-name:l","kind":"symbol","language":"jsts","symbolName":"l","metadata":{"unresolvedName":"l"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:updateSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:updateSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"updateSnapshot","symbolKind":"function","exported":false,"metadata":{"line":657,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.keybindings.map",{"id":"external:this.keybindings.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.keybindings.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:getAll",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:getAll","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"getAll","symbolKind":"function","exported":false,"metadata":{"line":668,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:getByCategory",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:getByCategory","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"getByCategory","symbolKind":"function","exported":false,"metadata":{"line":675,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.keybindings.filter",{"id":"external:this.keybindings.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.keybindings.filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:getKeybinding",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:getKeybinding","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"getKeybinding","symbolKind":"function","exported":false,"metadata":{"line":682,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.keybindings.find",{"id":"external:this.keybindings.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.keybindings.find"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:getKey",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:getKey","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"getKey","symbolKind":"function","exported":false,"metadata":{"line":689,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.getKeybinding",{"id":"external:this.getKeybinding","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getKeybinding"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:isKeyUsed",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:isKeyUsed","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"isKeyUsed","symbolKind":"function","exported":false,"metadata":{"line":696,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.keybindings.some",{"id":"external:this.keybindings.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.keybindings.some"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:findActionByKey",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:findActionByKey","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"findActionByKey","symbolKind":"function","exported":false,"metadata":{"line":709,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:findMatchingAction",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:findMatchingAction","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"findMatchingAction","symbolKind":"function","exported":false,"metadata":{"line":717,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:setKeybinding",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:setKeybinding","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"setKeybinding","symbolKind":"function","exported":false,"metadata":{"line":729,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.saveToStorage",{"id":"external:this.saveToStorage","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.saveToStorage"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:resetKeybinding",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:resetKeybinding","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"resetKeybinding","symbolKind":"function","exported":false,"metadata":{"line":742,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:resetAll",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:resetAll","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"resetAll","symbolKind":"function","exported":false,"metadata":{"line":755,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:exportKeybindingBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:exportKeybindingBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"exportKeybindingBackup","symbolKind":"function","exported":true,"metadata":{"line":767,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:importKeybindingBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:importKeybindingBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","symbolName":"importKeybindingBackup","symbolKind":"function","exported":true,"metadata":{"line":777,"column":1,"cyclomaticComplexity":8,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:customKey.trim",{"id":"external:customKey.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"customKey.trim"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","metadata":{"lineCount":163,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":149,"column":61,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:store.addMcpTab",{"id":"external:store.addMcpTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.addMcpTab"}}],["external:store.addTerminalTab",{"id":"external:store.addTerminalTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.addTerminalTab"}}],["external:store.openRightPanel",{"id":"external:store.openRightPanel","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.openRightPanel"}}],["external:expect(persisted).toMatchObject",{"id":"external:expect(persisted).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(persisted).toMatchObject"}}],["external:expect(persisted.panelTabs).toEqual",{"id":"external:expect(persisted.panelTabs).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(persisted.panelTabs).toEqual"}}],["external:persisted.panelTabs.some",{"id":"external:persisted.panelTabs.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"persisted.panelTabs.some"}}],["external:new LayoutStore().getState",{"id":"external:new LayoutStore().getState","kind":"external","language":"jsts","metadata":{"unresolvedName":"new LayoutStore().getState"}}],["external:expect(restored.rightPanelOpen).toBe",{"id":"external:expect(restored.rightPanelOpen).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(restored.rightPanelOpen).toBe"}}],["external:expect(restored.bottomPanelOpen).toBe",{"id":"external:expect(restored.bottomPanelOpen).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(restored.bottomPanelOpen).toBe"}}],["external:restored.panelTabs.some",{"id":"external:restored.panelTabs.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"restored.panelTabs.some"}}],["external:expect(restored.panelTabs.some(tab => tab.id === 'term-1')).toBe",{"id":"external:expect(restored.panelTabs.some(tab => tab.id === 'term-1')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(restored.panelTabs.some(tab => tab.id === 'term-1')).toBe"}}],["external:store.openBottomPanel",{"id":"external:store.openBottomPanel","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.openBottomPanel"}}],["external:store.syncTerminalSessions",{"id":"external:store.syncTerminalSessions","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.syncTerminalSessions"}}],["external:expect(store.getState().bottomPanelOpen).toBe",{"id":"external:expect(store.getState().bottomPanelOpen).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(store.getState().bottomPanelOpen).toBe"}}],["external:store.getState",{"id":"external:store.getState","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.getState"}}],["external:expect(store.getState().rightPanelOpen).toBe",{"id":"external:expect(store.getState().rightPanelOpen).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(store.getState().rightPanelOpen).toBe"}}],["external:expect(store.getTerminalTabs('bottom')).toEqual",{"id":"external:expect(store.getTerminalTabs('bottom')).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(store.getTerminalTabs('bottom')).toEqual"}}],["external:store.getTerminalTabs",{"id":"external:store.getTerminalTabs","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.getTerminalTabs"}}],["external:expect(store.getTerminalTabs('right')).toEqual",{"id":"external:expect(store.getTerminalTabs('right')).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(store.getTerminalTabs('right')).toEqual"}}],["external:store.moveTab",{"id":"external:store.moveTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.moveTab"}}],["external:expect(store.getTerminalTabs('bottom').map(tab => tab.id)).toEqual",{"id":"external:expect(store.getTerminalTabs('bottom').map(tab => tab.id)).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(store.getTerminalTabs('bottom').map(tab => tab.id)).toEqual"}}],["external:store.getTerminalTabs('bottom').map",{"id":"external:store.getTerminalTabs('bottom').map","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.getTerminalTabs('bottom').map"}}],["external:expect(store.getTerminalTabs('right').map(tab => tab.id)).toEqual",{"id":"external:expect(store.getTerminalTabs('right').map(tab => tab.id)).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(store.getTerminalTabs('right').map(tab => tab.id)).toEqual"}}],["external:store.getTerminalTabs('right').map",{"id":"external:store.getTerminalTabs('right').map","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.getTerminalTabs('right').map"}}],["external:expect(store.getState().panelTabs.some(tab => tab.id === 'term-a1')).toBe",{"id":"external:expect(store.getState().panelTabs.some(tab => tab.id === 'term-a1')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(store.getState().panelTabs.some(tab => tab.id === 'term-a1')).toBe"}}],["external:store.getState().panelTabs.some",{"id":"external:store.getState().panelTabs.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.getState().panelTabs.some"}}],["external:store.updateTerminalSnapshot",{"id":"external:store.updateTerminalSnapshot","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.updateTerminalSnapshot"}}],["external:store.subscribe",{"id":"external:store.subscribe","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.subscribe"}}],["external:expect(notifications).toBe",{"id":"external:expect(notifications).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(notifications).toBe"}}],["external:store.setActiveTab",{"id":"external:store.setActiveTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.setActiveTab"}}],["external:expect(store.getState().activeTabId.right).toBe",{"id":"external:expect(store.getState().activeTabId.right).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(store.getState().activeTabId.right).toBe"}}],["external:expect(persisted.directories['dir-a'].sessions['term-a1']).toMatchObject",{"id":"external:expect(persisted.directories['dir-a'].sessions['term-a1']).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(persisted.directories['dir-a'].sessions['term-a1']).toMatchObject"}}],["external:restored.syncTerminalSessions",{"id":"external:restored.syncTerminalSessions","kind":"external","language":"jsts","metadata":{"unresolvedName":"restored.syncTerminalSessions"}}],["external:restored.getState().panelTabs.find",{"id":"external:restored.getState().panelTabs.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"restored.getState().panelTabs.find"}}],["external:restored.getState",{"id":"external:restored.getState","kind":"external","language":"jsts","metadata":{"unresolvedName":"restored.getState"}}],["external:store.setTerminalCopyOnSelect",{"id":"external:store.setTerminalCopyOnSelect","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.setTerminalCopyOnSelect"}}],["external:store.setTerminalRightClickPaste",{"id":"external:store.setTerminalRightClickPaste","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.setTerminalRightClickPaste"}}],["external:expect(localStorage.getItem('opencode-terminal-copy-on-select')).toBe",{"id":"external:expect(localStorage.getItem('opencode-terminal-copy-on-select')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(localStorage.getItem('opencode-terminal-copy-on-select')).toBe"}}],["external:expect(localStorage.getItem('opencode-terminal-right-click-paste')).toBe",{"id":"external:expect(localStorage.getItem('opencode-terminal-right-click-paste')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(localStorage.getItem('opencode-terminal-right-click-paste')).toBe"}}],["external:expect(restored.terminalCopyOnSelect).toBe",{"id":"external:expect(restored.terminalCopyOnSelect).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(restored.terminalCopyOnSelect).toBe"}}],["external:expect(restored.terminalRightClickPaste).toBe",{"id":"external:expect(restored.terminalRightClickPaste).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(restored.terminalRightClickPaste).toBe"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getResolvedTerminalTitle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getResolvedTerminalTitle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"getResolvedTerminalTitle","symbolKind":"function","exported":false,"metadata":{"line":54,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:buildTerminalPanelTab",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:buildTerminalPanelTab","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"buildTerminalPanelTab","symbolKind":"function","exported":false,"metadata":{"line":58,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:isPanelPosition",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:isPanelPosition","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"isPanelPosition","symbolKind":"function","exported":false,"metadata":{"line":168,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:PANEL_POSITIONS.includes",{"id":"external:PANEL_POSITIONS.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"PANEL_POSITIONS.includes"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:isPersistedPanelTabType",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:isPersistedPanelTabType","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"isPersistedPanelTabType","symbolKind":"function","exported":false,"metadata":{"line":172,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:PERSISTED_PANEL_TAB_TYPES.includes",{"id":"external:PERSISTED_PANEL_TAB_TYPES.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"PERSISTED_PANEL_TAB_TYPES.includes"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:normalizePersistedPanelTab",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:normalizePersistedPanelTab","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"normalizePersistedPanelTab","symbolKind":"function","exported":false,"metadata":{"line":176,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedPanelLayout",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedPanelLayout","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"sanitizePersistedPanelLayout","symbolKind":"function","exported":false,"metadata":{"line":196,"column":1,"cyclomaticComplexity":19,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:isPersistedPanelTabType",{"id":"symbol-name:isPersistedPanelTabType","kind":"symbol","language":"jsts","symbolName":"isPersistedPanelTabType","metadata":{"unresolvedName":"isPersistedPanelTabType"}}],["symbol-name:isPanelPosition",{"id":"symbol-name:isPanelPosition","kind":"symbol","language":"jsts","symbolName":"isPanelPosition","metadata":{"unresolvedName":"isPanelPosition"}}],["external:panelTabs.push",{"id":"external:panelTabs.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"panelTabs.push"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedTerminalLayoutMap",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedTerminalLayoutMap","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"sanitizePersistedTerminalLayoutMap","symbolKind":"function","exported":false,"metadata":{"line":233,"column":1,"cyclomaticComplexity":34,"maxNestingDepth":4,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:rawOrder.bottom.filter",{"id":"external:rawOrder.bottom.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"rawOrder.bottom.filter"}}],["external:rawOrder.right.filter",{"id":"external:rawOrder.right.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"rawOrder.right.filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:persistPanelLayout",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:persistPanelLayout","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"persistPanelLayout","symbolKind":"function","exported":false,"metadata":{"line":319,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.state.panelTabs\n .filter",{"id":"external:this.state.panelTabs\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.state.panelTabs\n .filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:readTerminalLayoutMap",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:readTerminalLayoutMap","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"readTerminalLayoutMap","symbolKind":"function","exported":false,"metadata":{"line":341,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:sanitizePersistedTerminalLayoutMap",{"id":"symbol-name:sanitizePersistedTerminalLayoutMap","kind":"symbol","language":"jsts","symbolName":"sanitizePersistedTerminalLayoutMap","metadata":{"unresolvedName":"sanitizePersistedTerminalLayoutMap"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:persistTerminalLayout",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:persistTerminalLayout","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"persistTerminalLayout","symbolKind":"function","exported":false,"metadata":{"line":349,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.readTerminalLayoutMap",{"id":"external:this.readTerminalLayoutMap","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.readTerminalLayoutMap"}}],["external:this.getTabsForPosition('bottom').map",{"id":"external:this.getTabsForPosition('bottom').map","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getTabsForPosition('bottom').map"}}],["external:this.getTabsForPosition",{"id":"external:this.getTabsForPosition","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getTabsForPosition"}}],["external:this.getTabsForPosition('right').map",{"id":"external:this.getTabsForPosition('right').map","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getTabsForPosition('right').map"}}],["external:Object.fromEntries",{"id":"external:Object.fromEntries","kind":"external","language":"jsts","metadata":{"unresolvedName":"Object.fromEntries"}}],["external:this.state.panelTabs\n .filter",{"id":"external:this.state.panelTabs\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.state.panelTabs\n .filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:subscribe",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:subscribe","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"subscribe","symbolKind":"function","exported":false,"metadata":{"line":460,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:notify",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:notify","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"notify","symbolKind":"function","exported":false,"metadata":{"line":465,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.persistPanelLayout",{"id":"external:this.persistPanelLayout","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.persistPanelLayout"}}],["external:this.persistTerminalLayout",{"id":"external:this.persistTerminalLayout","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.persistTerminalLayout"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getSidebarExpanded",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getSidebarExpanded","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"getSidebarExpanded","symbolKind":"function","exported":false,"metadata":{"line":475,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarExpanded",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarExpanded","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"setSidebarExpanded","symbolKind":"function","exported":false,"metadata":{"line":479,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarFolderRecents",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarFolderRecents","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"setSidebarFolderRecents","symbolKind":"function","exported":false,"metadata":{"line":490,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarFolderRecentsShowDiff",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarFolderRecentsShowDiff","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"setSidebarFolderRecentsShowDiff","symbolKind":"function","exported":false,"metadata":{"line":501,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarShowChildSessions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarShowChildSessions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"setSidebarShowChildSessions","symbolKind":"function","exported":false,"metadata":{"line":512,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setWakeLock",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setWakeLock","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"setWakeLock","symbolKind":"function","exported":false,"metadata":{"line":523,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setTerminalCopyOnSelect",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setTerminalCopyOnSelect","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"setTerminalCopyOnSelect","symbolKind":"function","exported":false,"metadata":{"line":534,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setTerminalRightClickPaste",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setTerminalRightClickPaste","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"setTerminalRightClickPaste","symbolKind":"function","exported":false,"metadata":{"line":545,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:toggleSidebar",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:toggleSidebar","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"toggleSidebar","symbolKind":"function","exported":false,"metadata":{"line":556,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.setSidebarExpanded",{"id":"external:this.setSidebarExpanded","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.setSidebarExpanded"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setPanelOpen",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setPanelOpen","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"setPanelOpen","symbolKind":"function","exported":false,"metadata":{"line":565,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getTabsForPosition",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getTabsForPosition","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"getTabsForPosition","symbolKind":"function","exported":false,"metadata":{"line":578,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.state.panelTabs.filter",{"id":"external:this.state.panelTabs.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.state.panelTabs.filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getActiveTab",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getActiveTab","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"getActiveTab","symbolKind":"function","exported":false,"metadata":{"line":583,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.state.panelTabs.find",{"id":"external:this.state.panelTabs.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.state.panelTabs.find"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setActiveTab",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setActiveTab","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"setActiveTab","symbolKind":"function","exported":false,"metadata":{"line":590,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addTab",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addTab","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"addTab","symbolKind":"function","exported":false,"metadata":{"line":599,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.state.panelTabs.push",{"id":"external:this.state.panelTabs.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.state.panelTabs.push"}}],["external:this.setPanelOpen",{"id":"external:this.setPanelOpen","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.setPanelOpen"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addSingletonTab",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addSingletonTab","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"addSingletonTab","symbolKind":"function","exported":false,"metadata":{"line":616,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.setActiveTab",{"id":"external:this.setActiveTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.setActiveTab"}}],["external:this.addTab",{"id":"external:this.addTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.addTab"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addFilesTab",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addFilesTab","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"addFilesTab","symbolKind":"function","exported":false,"metadata":{"line":628,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addChangesTab",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addChangesTab","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"addChangesTab","symbolKind":"function","exported":false,"metadata":{"line":633,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addMcpTab",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addMcpTab","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"addMcpTab","symbolKind":"function","exported":false,"metadata":{"line":638,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.addSingletonTab",{"id":"external:this.addSingletonTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.addSingletonTab"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addSkillTab",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addSkillTab","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"addSkillTab","symbolKind":"function","exported":false,"metadata":{"line":643,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addWorktreeTab",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addWorktreeTab","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"addWorktreeTab","symbolKind":"function","exported":false,"metadata":{"line":648,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addExtensionTab",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addExtensionTab","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"addExtensionTab","symbolKind":"function","exported":false,"metadata":{"line":653,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:removeTab",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:removeTab","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"removeTab","symbolKind":"function","exported":false,"metadata":{"line":658,"column":3,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.state.panelTabs.findIndex",{"id":"external:this.state.panelTabs.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.state.panelTabs.findIndex"}}],["external:this.state.panelTabs.splice",{"id":"external:this.state.panelTabs.splice","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.state.panelTabs.splice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTab",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTab","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"updateTab","symbolKind":"function","exported":false,"metadata":{"line":682,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:moveTab",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:moveTab","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"moveTab","symbolKind":"function","exported":false,"metadata":{"line":691,"column":3,"cyclomaticComplexity":8,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:reorderTabs",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:reorderTabs","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"reorderTabs","symbolKind":"function","exported":false,"metadata":{"line":730,"column":3,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:tabs.findIndex",{"id":"external:tabs.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"tabs.findIndex"}}],["external:tabs.splice",{"id":"external:tabs.splice","kind":"external","language":"jsts","metadata":{"unresolvedName":"tabs.splice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:toggleRightPanel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:toggleRightPanel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"toggleRightPanel","symbolKind":"function","exported":false,"metadata":{"line":758,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.setRightPanelView",{"id":"external:this.setRightPanelView","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.setRightPanelView"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:openRightPanel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:openRightPanel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"openRightPanel","symbolKind":"function","exported":false,"metadata":{"line":775,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeRightPanel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeRightPanel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"closeRightPanel","symbolKind":"function","exported":false,"metadata":{"line":780,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setRightPanelView",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setRightPanelView","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"setRightPanelView","symbolKind":"function","exported":false,"metadata":{"line":785,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setRightPanelWidth",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setRightPanelWidth","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"setRightPanelWidth","symbolKind":"function","exported":false,"metadata":{"line":794,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.state.rightPanelWidth.toString",{"id":"external:this.state.rightPanelWidth.toString","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.state.rightPanelWidth.toString"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:openFilePreview",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:openFilePreview","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"openFilePreview","symbolKind":"function","exported":false,"metadata":{"line":808,"column":3,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.getTargetFilesTab",{"id":"external:this.getTargetFilesTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getTargetFilesTab"}}],["external:previewFiles.findIndex",{"id":"external:previewFiles.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"previewFiles.findIndex"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:activateFilePreview",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:activateFilePreview","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"activateFilePreview","symbolKind":"function","exported":false,"metadata":{"line":824,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:tab?.previewFiles?.find",{"id":"external:tab?.previewFiles?.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"tab?.previewFiles?.find"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeFilePreview",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeFilePreview","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"closeFilePreview","symbolKind":"function","exported":false,"metadata":{"line":832,"column":3,"cyclomaticComplexity":10,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:previewFiles.filter",{"id":"external:previewFiles.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"previewFiles.filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeAllFilePreviews",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeAllFilePreviews","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"closeAllFilePreviews","symbolKind":"function","exported":false,"metadata":{"line":856,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:reorderFilePreviews",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:reorderFilePreviews","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"reorderFilePreviews","symbolKind":"function","exported":false,"metadata":{"line":864,"column":3,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:nextPreviewFiles.splice",{"id":"external:nextPreviewFiles.splice","kind":"external","language":"jsts","metadata":{"unresolvedName":"nextPreviewFiles.splice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getTargetFilesTab",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getTargetFilesTab","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"getTargetFilesTab","symbolKind":"function","exported":false,"metadata":{"line":881,"column":3,"cyclomaticComplexity":12,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.addFilesTab",{"id":"external:this.addFilesTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.addFilesTab"}}],["external:(['right', 'bottom'] as const)\n .map",{"id":"external:(['right', 'bottom'] as const)\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"(['right', 'bottom'] as const)\n .map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:toggleBottomPanel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:toggleBottomPanel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"toggleBottomPanel","symbolKind":"function","exported":false,"metadata":{"line":912,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:openBottomPanel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:openBottomPanel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"openBottomPanel","symbolKind":"function","exported":false,"metadata":{"line":917,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeBottomPanel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeBottomPanel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"closeBottomPanel","symbolKind":"function","exported":false,"metadata":{"line":922,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setBottomPanelHeight",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setBottomPanelHeight","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"setBottomPanelHeight","symbolKind":"function","exported":false,"metadata":{"line":927,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:height.toString",{"id":"external:height.toString","kind":"external","language":"jsts","metadata":{"unresolvedName":"height.toString"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setCurrentTerminalDirectory",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setCurrentTerminalDirectory","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"setCurrentTerminalDirectory","symbolKind":"function","exported":false,"metadata":{"line":941,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"syncTerminalSessions","symbolKind":"function","exported":false,"metadata":{"line":945,"column":3,"cyclomaticComplexity":25,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.state.panelTabs.filter(tab => tab.type === 'terminal').map",{"id":"external:this.state.panelTabs.filter(tab => tab.type === 'terminal').map","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.state.panelTabs.filter(tab => tab.type === 'terminal').map"}}],["symbol-name:buildTerminalPanelTab",{"id":"symbol-name:buildTerminalPanelTab","kind":"symbol","language":"jsts","symbolName":"buildTerminalPanelTab","metadata":{"unresolvedName":"buildTerminalPanelTab"}}],["external:existingTerminalById.get",{"id":"external:existingTerminalById.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"existingTerminalById.get"}}],["external:nonTerminalTabs.map",{"id":"external:nonTerminalTabs.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"nonTerminalTabs.map"}}],["external:nonTerminalTabs.filter(tab => tab.position === position).map",{"id":"external:nonTerminalTabs.filter(tab => tab.position === position).map","kind":"external","language":"jsts","metadata":{"unresolvedName":"nonTerminalTabs.filter(tab => tab.position === position).map"}}],["external:nonTerminalTabs.filter",{"id":"external:nonTerminalTabs.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"nonTerminalTabs.filter"}}],["external:orderByPosition[position].includes",{"id":"external:orderByPosition[position].includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"orderByPosition[position].includes"}}],["external:orderByPosition[position].push",{"id":"external:orderByPosition[position].push","kind":"external","language":"jsts","metadata":{"unresolvedName":"orderByPosition[position].push"}}],["external:nonTerminalById.get",{"id":"external:nonTerminalById.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"nonTerminalById.get"}}],["external:tabsByPosition[position].push",{"id":"external:tabsByPosition[position].push","kind":"external","language":"jsts","metadata":{"unresolvedName":"tabsByPosition[position].push"}}],["external:sessionById.get",{"id":"external:sessionById.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionById.get"}}],["external:assignedTerminalIds.has",{"id":"external:assignedTerminalIds.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"assignedTerminalIds.has"}}],["external:assignedTerminalIds.add",{"id":"external:assignedTerminalIds.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"assignedTerminalIds.add"}}],["external:tabsByPosition.bottom.push",{"id":"external:tabsByPosition.bottom.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"tabsByPosition.bottom.push"}}],["external:this.state.panelTabs.some",{"id":"external:this.state.panelTabs.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.state.panelTabs.some"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addTerminalTab",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addTerminalTab","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"addTerminalTab","symbolKind":"function","exported":false,"metadata":{"line":1045,"column":3,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:removeTerminalTab",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:removeTerminalTab","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"removeTerminalTab","symbolKind":"function","exported":false,"metadata":{"line":1065,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.removeTab",{"id":"external:this.removeTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.removeTab"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setActiveTerminal",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setActiveTerminal","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"setActiveTerminal","symbolKind":"function","exported":false,"metadata":{"line":1069,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalTab",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalTab","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"updateTerminalTab","symbolKind":"function","exported":false,"metadata":{"line":1073,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.updateTab",{"id":"external:this.updateTab","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.updateTab"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalShellTitle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalShellTitle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"updateTerminalShellTitle","symbolKind":"function","exported":false,"metadata":{"line":1077,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalCustomTitle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalCustomTitle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"updateTerminalCustomTitle","symbolKind":"function","exported":false,"metadata":{"line":1087,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"updateTerminalSnapshot","symbolKind":"function","exported":false,"metadata":{"line":1095,"column":3,"cyclomaticComplexity":8,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalTitleMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalTitleMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"syncTerminalTitleMode","symbolKind":"function","exported":false,"metadata":{"line":1115,"column":3,"cyclomaticComplexity":8,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:getResolvedTerminalTitle",{"id":"symbol-name:getResolvedTerminalTitle","kind":"symbol","language":"jsts","symbolName":"getResolvedTerminalTitle","metadata":{"unresolvedName":"getResolvedTerminalTitle"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:reorderTerminalTabs",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:reorderTerminalTabs","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"reorderTerminalTabs","symbolKind":"function","exported":false,"metadata":{"line":1130,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.reorderTabs",{"id":"external:this.reorderTabs","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.reorderTabs"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getTerminalTabs",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getTerminalTabs","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"getTerminalTabs","symbolKind":"function","exported":false,"metadata":{"line":1134,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.getTabsForPosition(position)\n .filter",{"id":"external:this.getTabsForPosition(position)\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getTabsForPosition(position)\n .filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getState",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getState","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"getState","symbolKind":"function","exported":false,"metadata":{"line":1153,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:buildPersistedPanelLayout",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:buildPersistedPanelLayout","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"buildPersistedPanelLayout","symbolKind":"function","exported":false,"metadata":{"line":1173,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:state.panelTabs\n .filter",{"id":"external:state.panelTabs\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"state.panelTabs\n .filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:exportLayoutBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:exportLayoutBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"exportLayoutBackup","symbolKind":"function","exported":true,"metadata":{"line":1190,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:layoutStore.getState",{"id":"external:layoutStore.getState","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.getState"}}],["external:Number.parseInt",{"id":"external:Number.parseInt","kind":"external","language":"jsts","metadata":{"unresolvedName":"Number.parseInt"}}],["symbol-name:buildPersistedPanelLayout",{"id":"symbol-name:buildPersistedPanelLayout","kind":"symbol","language":"jsts","symbolName":"buildPersistedPanelLayout","metadata":{"unresolvedName":"buildPersistedPanelLayout"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:importLayoutBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:importLayoutBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"importLayoutBackup","symbolKind":"function","exported":true,"metadata":{"line":1218,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:sanitizePersistedPanelLayout",{"id":"symbol-name:sanitizePersistedPanelLayout","kind":"symbol","language":"jsts","symbolName":"sanitizePersistedPanelLayout","metadata":{"unresolvedName":"sanitizePersistedPanelLayout"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"getSnapshot","symbolKind":"function","exported":false,"metadata":{"line":1272,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:layoutStore.getTerminalTabs",{"id":"external:layoutStore.getTerminalTabs","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.getTerminalTabs"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":1287,"column":23,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","symbolName":"useLayoutStore","symbolKind":"function","exported":true,"metadata":{"line":1291,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:layoutStore.subscribe",{"id":"external:layoutStore.subscribe","kind":"external","language":"jsts","metadata":{"unresolvedName":"layoutStore.subscribe"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","metadata":{"lineCount":332,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:createAssistantMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:createAssistantMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","symbolName":"createAssistantMessage","symbolKind":"function","exported":false,"metadata":{"line":5,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:createUserMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:createUserMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","symbolName":"createUserMessage","symbolKind":"function","exported":false,"metadata":{"line":33,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:createTextPart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:createTextPart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","symbolName":"createTextPart","symbolKind":"function","exported":false,"metadata":{"line":47,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:createMessageWithParts",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:createMessageWithParts","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","symbolName":"createMessageWithParts","symbolKind":"function","exported":false,"metadata":{"line":62,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:createTextPart",{"id":"symbol-name:createTextPart","kind":"symbol","language":"jsts","symbolName":"createTextPart","metadata":{"unresolvedName":"createTextPart"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":290,"column":66,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:expect(state?.messages).toHaveLength",{"id":"external:expect(state?.messages).toHaveLength","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(state?.messages).toHaveLength"}}],["external:expect(state?.messages[0].parts).toHaveLength",{"id":"external:expect(state?.messages[0].parts).toHaveLength","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(state?.messages[0].parts).toHaveLength"}}],["external:expect(state?.messages[0].parts[0]).toMatchObject",{"id":"external:expect(state?.messages[0].parts[0]).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(state?.messages[0].parts[0]).toMatchObject"}}],["external:expect(state?.messages[0].info).toMatchObject",{"id":"external:expect(state?.messages[0].info).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(state?.messages[0].info).toMatchObject"}}],["external:expect(state?.isStreaming).toBe",{"id":"external:expect(state?.isStreaming).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(state?.isStreaming).toBe"}}],["external:expect(state?.messages[0].info.id).toBe",{"id":"external:expect(state?.messages[0].info.id).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(state?.messages[0].info.id).toBe"}}],["external:expect(state?.messages.map(message => message.info.id)).toEqual",{"id":"external:expect(state?.messages.map(message => message.info.id)).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(state?.messages.map(message => message.info.id)).toEqual"}}],["external:state?.messages.map",{"id":"external:state?.messages.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"state?.messages.map"}}],["external:expect(state?.messages ?? []).toEqual",{"id":"external:expect(state?.messages ?? []).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(state?.messages ?? []).toEqual"}}],["symbol-name:createMessageWithParts",{"id":"symbol-name:createMessageWithParts","kind":"symbol","language":"jsts","symbolName":"createMessageWithParts","metadata":{"unresolvedName":"createMessageWithParts"}}],["external:expect(messageStore.isSessionStale('session-1')).toBe",{"id":"external:expect(messageStore.isSessionStale('session-1')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(messageStore.isSessionStale('session-1')).toBe"}}],["external:messageStore.isSessionStale",{"id":"external:messageStore.isSessionStale","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.isSessionStale"}}],["external:expect(state?.revertState).toBeNull",{"id":"external:expect(state?.revertState).toBeNull","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(state?.revertState).toBeNull"}}],["external:expect(state?.messages[1].info.id).toBe",{"id":"external:expect(state?.messages[1].info.id).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(state?.messages[1].info.id).toBe"}}],["external:rafCallbacks.push",{"id":"external:rafCallbacks.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"rafCallbacks.push"}}],["symbol-name:scheduledFrame",{"id":"symbol-name:scheduledFrame","kind":"symbol","language":"jsts","symbolName":"scheduledFrame","metadata":{"unresolvedName":"scheduledFrame"}}],["external:expect(afterMessage1?.parts[0]).toMatchObject",{"id":"external:expect(afterMessage1?.parts[0]).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(afterMessage1?.parts[0]).toMatchObject"}}],["external:expect(afterMessage2?.parts[0]).toMatchObject",{"id":"external:expect(afterMessage2?.parts[0]).toMatchObject","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(afterMessage2?.parts[0]).toMatchObject"}}],["external:expect(afterMessage1).not.toBe",{"id":"external:expect(afterMessage1).not.toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(afterMessage1).not.toBe"}}],["external:expect(afterMessage2).not.toBe",{"id":"external:expect(afterMessage2).not.toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(afterMessage2).not.toBe"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreTypes.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreTypes.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreTypes.ts","metadata":{"lineCount":81,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:isVisibleChatRole",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:isVisibleChatRole","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"isVisibleChatRole","symbolKind":"function","exported":false,"metadata":{"line":24,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:subscribe",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:subscribe","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"subscribe","symbolKind":"function","exported":false,"metadata":{"line":43,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:notify",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:notify","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"notify","symbolKind":"function","exported":false,"metadata":{"line":48,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.flushDirtyMessages",{"id":"external:this.flushDirtyMessages","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.flushDirtyMessages"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":679,"column":43,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:flushDirtyMessages",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:flushDirtyMessages","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"flushDirtyMessages","symbolKind":"function","exported":false,"metadata":{"line":70,"column":3,"cyclomaticComplexity":6,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.sessions.get",{"id":"external:this.sessions.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.sessions.get"}}],["external:state.messages.map",{"id":"external:state.messages.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"state.messages.map"}}],["external:dirtyMessages.has",{"id":"external:dirtyMessages.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"dirtyMessages.has"}}],["external:m.parts.map",{"id":"external:m.parts.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"m.parts.map"}}],["external:this.dirtyMessagesBySession.clear",{"id":"external:this.dirtyMessagesBySession.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.dirtyMessagesBySession.clear"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:notifyImmediate",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:notifyImmediate","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"notifyImmediate","symbolKind":"function","exported":false,"metadata":{"line":95,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getSessionState",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getSessionState","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"getSessionState","symbolKind":"function","exported":false,"metadata":{"line":109,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":true,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getVisibleMessages",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getVisibleMessages","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"getVisibleMessages","symbolKind":"function","exported":false,"metadata":{"line":113,"column":3,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getIsStreaming",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getIsStreaming","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"getIsStreaming","symbolKind":"function","exported":false,"metadata":{"line":125,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getRevertState",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getRevertState","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"getRevertState","symbolKind":"function","exported":false,"metadata":{"line":130,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getPrependedCount",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getPrependedCount","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"getPrependedCount","symbolKind":"function","exported":false,"metadata":{"line":135,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getHasMoreHistory",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getHasMoreHistory","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"getHasMoreHistory","symbolKind":"function","exported":false,"metadata":{"line":139,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getSessionDirectory",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getSessionDirectory","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"getSessionDirectory","symbolKind":"function","exported":false,"metadata":{"line":144,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getSessionTitle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getSessionTitle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"getSessionTitle","symbolKind":"function","exported":false,"metadata":{"line":149,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getShareUrl",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getShareUrl","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"getShareUrl","symbolKind":"function","exported":false,"metadata":{"line":154,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getLoadState",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getLoadState","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"getLoadState","symbolKind":"function","exported":false,"metadata":{"line":159,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:isSessionStale",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:isSessionStale","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"isSessionStale","symbolKind":"function","exported":false,"metadata":{"line":164,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:ensureSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:ensureSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"ensureSession","symbolKind":"function","exported":false,"metadata":{"line":172,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.sessionAccessTime.set",{"id":"external:this.sessionAccessTime.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.sessionAccessTime.set"}}],["external:this.evictOldSessions",{"id":"external:this.evictOldSessions","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.evictOldSessions"}}],["external:this.sessions.set",{"id":"external:this.sessions.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.sessions.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:evictOldSessions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:evictOldSessions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"evictOldSessions","symbolKind":"function","exported":false,"metadata":{"line":194,"column":3,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.protectedSessions.has",{"id":"external:this.protectedSessions.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.protectedSessions.has"}}],["external:this.sessions.delete",{"id":"external:this.sessions.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.sessions.delete"}}],["external:this.sessionAccessTime.delete",{"id":"external:this.sessionAccessTime.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.sessionAccessTime.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:protectSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:protectSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"protectSession","symbolKind":"function","exported":false,"metadata":{"line":218,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.protectedSessions.add",{"id":"external:this.protectedSessions.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.protectedSessions.add"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:unprotectSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:unprotectSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"unprotectSession","symbolKind":"function","exported":false,"metadata":{"line":223,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.protectedSessions.delete",{"id":"external:this.protectedSessions.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.protectedSessions.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:updateSessionMetadata",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:updateSessionMetadata","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"updateSessionMetadata","symbolKind":"function","exported":false,"metadata":{"line":227,"column":3,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:upsertLocalMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:upsertLocalMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"upsertLocalMessage","symbolKind":"function","exported":false,"metadata":{"line":249,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.ensureSession",{"id":"external:this.ensureSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.ensureSession"}}],["external:[...state.messages, message].sort",{"id":"external:[...state.messages, message].sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"[...state.messages, message].sort"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:removeMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:removeMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"removeMessage","symbolKind":"function","exported":false,"metadata":{"line":266,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:state.messages.filter",{"id":"external:state.messages.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"state.messages.filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:markAllSessionsStale",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:markAllSessionsStale","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"markAllSessionsStale","symbolKind":"function","exported":false,"metadata":{"line":275,"column":3,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.sessions.values",{"id":"external:this.sessions.values","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.sessions.values"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setLoadState",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setLoadState","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"setLoadState","symbolKind":"function","exported":false,"metadata":{"line":285,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:dedupeSyntheticUserMessages",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:dedupeSyntheticUserMessages","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"dedupeSyntheticUserMessages","symbolKind":"function","exported":false,"metadata":{"line":295,"column":3,"cyclomaticComplexity":13,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:result.findIndex",{"id":"external:result.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.findIndex"}}],["external:this.isSyntheticLiveMessageId",{"id":"external:this.isSyntheticLiveMessageId","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.isSyntheticLiveMessageId"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setMessages",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setMessages","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"setMessages","symbolKind":"function","exported":false,"metadata":{"line":322,"column":3,"cyclomaticComplexity":8,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:apiMessages\n .filter",{"id":"external:apiMessages\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"apiMessages\n .filter"}}],["symbol-name:toUIMessage",{"id":"symbol-name:toUIMessage","kind":"symbol","language":"jsts","symbolName":"toUIMessage","metadata":{"unresolvedName":"toUIMessage"}}],["external:this.dedupeSyntheticUserMessages",{"id":"external:this.dedupeSyntheticUserMessages","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.dedupeSyntheticUserMessages"}}],["external:this.extractUserText",{"id":"external:this.extractUserText","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.extractUserText"}}],["external:this.extractUserAttachments",{"id":"external:this.extractUserAttachments","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.extractUserAttachments"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:prependMessages",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:prependMessages","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"prependMessages","symbolKind":"function","exported":false,"metadata":{"line":386,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:newMessages.filter",{"id":"external:newMessages.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"newMessages.filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:clearAll",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:clearAll","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"clearAll","symbolKind":"function","exported":false,"metadata":{"line":404,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.sessions.clear",{"id":"external:this.sessions.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.sessions.clear"}}],["external:this.sessionAccessTime.clear",{"id":"external:this.sessionAccessTime.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.sessionAccessTime.clear"}}],["external:this.notifyImmediate",{"id":"external:this.notifyImmediate","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.notifyImmediate"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:clearSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:clearSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"clearSession","symbolKind":"function","exported":false,"metadata":{"line":416,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setShareUrl",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setShareUrl","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"setShareUrl","symbolKind":"function","exported":false,"metadata":{"line":422,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:createStreamingPlaceholderMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:createStreamingPlaceholderMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"createStreamingPlaceholderMessage","symbolKind":"function","exported":false,"metadata":{"line":433,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:toUIMessageInfo",{"id":"symbol-name:toUIMessageInfo","kind":"symbol","language":"jsts","symbolName":"toUIMessageInfo","metadata":{"unresolvedName":"toUIMessageInfo"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:ensureMessageForPart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:ensureMessageForPart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"ensureMessageForPart","symbolKind":"function","exported":false,"metadata":{"line":446,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.createStreamingPlaceholderMessage",{"id":"external:this.createStreamingPlaceholderMessage","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.createStreamingPlaceholderMessage"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:withTextPartFromMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:withTextPartFromMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"withTextPartFromMessage","symbolKind":"function","exported":false,"metadata":{"line":458,"column":3,"cyclomaticComplexity":13,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:message.parts.findIndex",{"id":"external:message.parts.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"message.parts.findIndex"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:isSyntheticLiveMessageId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:isSyntheticLiveMessageId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"isSyntheticLiveMessageId","symbolKind":"function","exported":false,"metadata":{"line":491,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:id.startsWith",{"id":"external:id.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"id.startsWith"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:findDuplicateLiveUserMessageIndex",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:findDuplicateLiveUserMessageIndex","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"findDuplicateLiveUserMessageIndex","symbolKind":"function","exported":false,"metadata":{"line":495,"column":3,"cyclomaticComplexity":12,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:remapMessageIdentity",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:remapMessageIdentity","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"remapMessageIdentity","symbolKind":"function","exported":false,"metadata":{"line":513,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:message.parts.map",{"id":"external:message.parts.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"message.parts.map"}}],["external:part.id.startsWith",{"id":"external:part.id.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"part.id.startsWith"}}],["external:part.id.slice",{"id":"external:part.id.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"part.id.slice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:sortMessagesByCreated",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:sortMessagesByCreated","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"sortMessagesByCreated","symbolKind":"function","exported":false,"metadata":{"line":527,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:[...messages].sort",{"id":"external:[...messages].sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"[...messages].sort"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleMessageUpdated",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleMessageUpdated","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"handleMessageUpdated","symbolKind":"function","exported":false,"metadata":{"line":535,"column":3,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:logger.warn",{"id":"external:logger.warn","kind":"external","language":"jsts","metadata":{"unresolvedName":"logger.warn"}}],["external:this.findDuplicateLiveUserMessageIndex",{"id":"external:this.findDuplicateLiveUserMessageIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.findDuplicateLiveUserMessageIndex"}}],["external:this.remapMessageIdentity",{"id":"external:this.remapMessageIdentity","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.remapMessageIdentity"}}],["external:this.withTextPartFromMessage",{"id":"external:this.withTextPartFromMessage","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.withTextPartFromMessage"}}],["external:this.sortMessagesByCreated",{"id":"external:this.sortMessagesByCreated","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.sortMessagesByCreated"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartUpdated",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartUpdated","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"handlePartUpdated","symbolKind":"function","exported":false,"metadata":{"line":572,"column":3,"cyclomaticComplexity":8,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.ensureMessageForPart",{"id":"external:this.ensureMessageForPart","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.ensureMessageForPart"}}],["external:newParts.findIndex",{"id":"external:newParts.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"newParts.findIndex"}}],["symbol-name:toUIPart",{"id":"symbol-name:toUIPart","kind":"symbol","language":"jsts","symbolName":"toUIPart","metadata":{"unresolvedName":"toUIPart"}}],["external:newParts.push",{"id":"external:newParts.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"newParts.push"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartDelta",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartDelta","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"handlePartDelta","symbolKind":"function","exported":false,"metadata":{"line":596,"column":3,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:msg.parts.find",{"id":"external:msg.parts.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"msg.parts.find"}}],["external:this.dirtyMessagesBySession.get",{"id":"external:this.dirtyMessagesBySession.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.dirtyMessagesBySession.get"}}],["external:this.dirtyMessagesBySession.set",{"id":"external:this.dirtyMessagesBySession.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.dirtyMessagesBySession.set"}}],["external:dirtyMessages.add",{"id":"external:dirtyMessages.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"dirtyMessages.add"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartRemoved",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartRemoved","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"handlePartRemoved","symbolKind":"function","exported":false,"metadata":{"line":630,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:oldMessage.parts.some",{"id":"external:oldMessage.parts.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"oldMessage.parts.some"}}],["external:oldMessage.parts.filter",{"id":"external:oldMessage.parts.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"oldMessage.parts.filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleSessionIdle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleSessionIdle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"handleSessionIdle","symbolKind":"function","exported":false,"metadata":{"line":645,"column":3,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleSessionError",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleSessionError","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"handleSessionError","symbolKind":"function","exported":false,"metadata":{"line":671,"column":3,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:truncateAfterRevert",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:truncateAfterRevert","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"truncateAfterRevert","symbolKind":"function","exported":false,"metadata":{"line":701,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:createSendRollbackSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:createSendRollbackSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"createSendRollbackSnapshot","symbolKind":"function","exported":false,"metadata":{"line":713,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:state.revertState.history.map",{"id":"external:state.revertState.history.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"state.revertState.history.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:restoreSendRollback",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:restoreSendRollback","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"restoreSendRollback","symbolKind":"function","exported":false,"metadata":{"line":726,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:snapshot.messages.map",{"id":"external:snapshot.messages.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"snapshot.messages.map"}}],["external:snapshot.revertState.history.map",{"id":"external:snapshot.revertState.history.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"snapshot.revertState.history.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setRevertState",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setRevertState","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"setRevertState","symbolKind":"function","exported":false,"metadata":{"line":741,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getLastUserMessageId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getLastUserMessageId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"getLastUserMessageId","symbolKind":"function","exported":false,"metadata":{"line":748,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.getVisibleMessages",{"id":"external:this.getVisibleMessages","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getVisibleMessages"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:canUndo",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:canUndo","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"canUndo","symbolKind":"function","exported":false,"metadata":{"line":756,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.getVisibleMessages(sessionId).some",{"id":"external:this.getVisibleMessages(sessionId).some","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getVisibleMessages(sessionId).some"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:canRedo",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:canRedo","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"canRedo","symbolKind":"function","exported":false,"metadata":{"line":763,"column":3,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getRedoSteps",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getRedoSteps","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"getRedoSteps","symbolKind":"function","exported":false,"metadata":{"line":770,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getCurrentRevertedContent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getCurrentRevertedContent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"getCurrentRevertedContent","symbolKind":"function","exported":false,"metadata":{"line":776,"column":3,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setStreaming",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setStreaming","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"setStreaming","symbolKind":"function","exported":false,"metadata":{"line":788,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:extractUserText",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:extractUserText","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"extractUserText","symbolKind":"function","exported":false,"metadata":{"line":798,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:message.parts\n .filter",{"id":"external:message.parts\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"message.parts\n .filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:extractUserAttachments",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:extractUserAttachments","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","symbolName":"extractUserAttachments","symbolKind":"function","exported":false,"metadata":{"line":805,"column":3,"cyclomaticComplexity":15,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","metadata":{"lineCount":81,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:createUserMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:createUserMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","symbolName":"createUserMessage","symbolKind":"function","exported":false,"metadata":{"line":14,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:createTextPart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:createTextPart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","symbolName":"createTextPart","symbolKind":"function","exported":false,"metadata":{"line":25,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:createMessageWithParts",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:createMessageWithParts","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","symbolName":"createMessageWithParts","symbolKind":"function","exported":false,"metadata":{"line":39,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":68,"column":60,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:expect(result.current?.messages.map(message => message.info.id)).toEqual",{"id":"external:expect(result.current?.messages.map(message => message.info.id)).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current?.messages.map(message => message.info.id)).toEqual"}}],["external:result.current?.messages.map",{"id":"external:result.current?.messages.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"result.current?.messages.map"}}],["external:expect(result.current?.canUndo).toBe",{"id":"external:expect(result.current?.canUndo).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current?.canUndo).toBe"}}],["external:expect(result.current?.messages).toEqual",{"id":"external:expect(result.current?.messages).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(result.current?.messages).toEqual"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:createSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:createSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","symbolName":"createSnapshot","symbolKind":"function","exported":false,"metadata":{"line":19,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:messageStore.getVisibleMessages",{"id":"external:messageStore.getVisibleMessages","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.getVisibleMessages"}}],["external:messageStore.getIsStreaming",{"id":"external:messageStore.getIsStreaming","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.getIsStreaming"}}],["external:messageStore.getRevertState",{"id":"external:messageStore.getRevertState","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.getRevertState"}}],["external:messageStore.getHasMoreHistory",{"id":"external:messageStore.getHasMoreHistory","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.getHasMoreHistory"}}],["external:messageStore.getSessionDirectory",{"id":"external:messageStore.getSessionDirectory","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.getSessionDirectory"}}],["external:messageStore.getSessionTitle",{"id":"external:messageStore.getSessionTitle","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.getSessionTitle"}}],["external:messageStore.getShareUrl",{"id":"external:messageStore.getShareUrl","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.getShareUrl"}}],["external:messageStore.canUndo",{"id":"external:messageStore.canUndo","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.canUndo"}}],["external:messageStore.canRedo",{"id":"external:messageStore.canRedo","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.canRedo"}}],["external:messageStore.getRedoSteps",{"id":"external:messageStore.getRedoSteps","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.getRedoSteps"}}],["external:messageStore.getCurrentRevertedContent",{"id":"external:messageStore.getCurrentRevertedContent","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.getCurrentRevertedContent"}}],["external:messageStore.getLoadState",{"id":"external:messageStore.getLoadState","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.getLoadState"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:getSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:getSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","symbolName":"getSnapshot","symbolKind":"function","exported":false,"metadata":{"line":38,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:createSnapshot",{"id":"symbol-name:createSnapshot","kind":"symbol","language":"jsts","symbolName":"createSnapshot","metadata":{"unresolvedName":"createSnapshot"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":132,"column":24,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:subscribeFocusedSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:subscribeFocusedSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","symbolName":"subscribeFocusedSnapshot","symbolKind":"function","exported":false,"metadata":{"line":54,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:messageStore.subscribe",{"id":"external:messageStore.subscribe","kind":"external","language":"jsts","metadata":{"unresolvedName":"messageStore.subscribe"}}],["external:paneLayoutStore.subscribe",{"id":"external:paneLayoutStore.subscribe","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneLayoutStore.subscribe"}}],["symbol-name:unsubscribeMessageStore",{"id":"symbol-name:unsubscribeMessageStore","kind":"symbol","language":"jsts","symbolName":"unsubscribeMessageStore","metadata":{"unresolvedName":"unsubscribeMessageStore"}}],["symbol-name:unsubscribePaneLayout",{"id":"symbol-name:unsubscribePaneLayout","kind":"symbol","language":"jsts","symbolName":"unsubscribePaneLayout","metadata":{"unresolvedName":"unsubscribePaneLayout"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStore",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStore","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","symbolName":"useMessageStore","symbolKind":"function","exported":true,"metadata":{"line":70,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStoreSelector",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStoreSelector","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","symbolName":"useMessageStoreSelector","symbolKind":"function","exported":true,"metadata":{"line":83,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:selector",{"id":"symbol-name:selector","kind":"symbol","language":"jsts","symbolName":"selector","metadata":{"unresolvedName":"selector"}}],["symbol-name:equalityFn",{"id":"symbol-name:equalityFn","kind":"symbol","language":"jsts","symbolName":"equalityFn","metadata":{"unresolvedName":"equalityFn"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:shallowEqual",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:shallowEqual","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","symbolName":"shallowEqual","symbolKind":"function","exported":false,"metadata":{"line":108,"column":1,"cyclomaticComplexity":9,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:sessionSnapshots.clear",{"id":"external:sessionSnapshots.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionSnapshots.clear"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useSessionState",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useSessionState","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","symbolName":"useSessionState","symbolKind":"function","exported":true,"metadata":{"line":139,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:sessionSnapshots.has",{"id":"external:sessionSnapshots.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionSnapshots.has"}}],["external:sessionSnapshots.get",{"id":"external:sessionSnapshots.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionSnapshots.get"}}],["external:sessionSnapshots.set",{"id":"external:sessionSnapshots.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionSnapshots.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:getSessionSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:getSessionSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","symbolName":"getSessionSnapshot","symbolKind":"function","exported":false,"metadata":{"line":140,"column":30,"cyclomaticComplexity":10,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useCurrentSessionId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useCurrentSessionId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","symbolName":"useCurrentSessionId","symbolKind":"function","exported":true,"metadata":{"line":183,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["symbol-name:useMessageStoreSelector",{"id":"symbol-name:useMessageStoreSelector","kind":"symbol","language":"jsts","symbolName":"useMessageStoreSelector","metadata":{"unresolvedName":"useMessageStoreSelector"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useIsStreaming",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useIsStreaming","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","symbolName":"useIsStreaming","symbolKind":"function","exported":true,"metadata":{"line":188,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessages",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessages","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","symbolName":"useMessages","symbolKind":"function","exported":true,"metadata":{"line":193,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useUndoRedoState",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useUndoRedoState","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","symbolName":"useUndoRedoState","symbolKind":"function","exported":true,"metadata":{"line":201,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","metadata":{"lineCount":96,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:loadHiddenModelKeys",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:loadHiddenModelKeys","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","symbolName":"loadHiddenModelKeys","symbolKind":"function","exported":false,"metadata":{"line":11,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:stored.filter",{"id":"external:stored.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"stored.filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":48,"column":15,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.reload",{"id":"external:this.reload","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.reload"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:updateSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:updateSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","symbolName":"updateSnapshot","symbolKind":"function","exported":false,"metadata":{"line":30,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:Array.from(this.hiddenModelKeys).sort",{"id":"external:Array.from(this.hiddenModelKeys).sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"Array.from(this.hiddenModelKeys).sort"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:persist",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:persist","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","symbolName":"persist","symbolKind":"function","exported":false,"metadata":{"line":34,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:reload",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:reload","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","symbolName":"reload","symbolKind":"function","exported":false,"metadata":{"line":38,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:loadHiddenModelKeys",{"id":"symbol-name:loadHiddenModelKeys","kind":"symbol","language":"jsts","symbolName":"loadHiddenModelKeys","metadata":{"unresolvedName":"loadHiddenModelKeys"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:notify",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:notify","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","symbolName":"notify","symbolKind":"function","exported":false,"metadata":{"line":43,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:isVisible",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:isVisible","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","symbolName":"isVisible","symbolKind":"function","exported":false,"metadata":{"line":55,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.hiddenModelKeys.has",{"id":"external:this.hiddenModelKeys.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.hiddenModelKeys.has"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:setVisible",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:setVisible","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","symbolName":"setVisible","symbolKind":"function","exported":false,"metadata":{"line":60,"column":3,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.hiddenModelKeys.delete",{"id":"external:this.hiddenModelKeys.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.hiddenModelKeys.delete"}}],["external:this.hiddenModelKeys.add",{"id":"external:this.hiddenModelKeys.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.hiddenModelKeys.add"}}],["external:this.persist",{"id":"external:this.persist","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.persist"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:setManyVisible",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:setManyVisible","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","symbolName":"setManyVisible","symbolKind":"function","exported":false,"metadata":{"line":74,"column":3,"cyclomaticComplexity":6,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:useHiddenModelKeys",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:useHiddenModelKeys","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","symbolName":"useHiddenModelKeys","symbolKind":"function","exported":true,"metadata":{"line":93,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts","metadata":{"lineCount":26,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":9,"column":46,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:expect(persisted).toEqual",{"id":"external:expect(persisted).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(persisted).toEqual"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:createDefaultSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:createDefaultSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","symbolName":"createDefaultSettings","symbolKind":"function","exported":false,"metadata":{"line":20,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:loadSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:loadSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","symbolName":"loadSettings","symbolKind":"function","exported":false,"metadata":{"line":31,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:createDefaultSettings",{"id":"symbol-name:createDefaultSettings","kind":"symbol","language":"jsts","symbolName":"createDefaultSettings","metadata":{"unresolvedName":"createDefaultSettings"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:saveSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:saveSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","symbolName":"saveSettings","symbolKind":"function","exported":false,"metadata":{"line":72,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:normalizeSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:normalizeSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","symbolName":"normalizeSettings","symbolKind":"function","exported":false,"metadata":{"line":80,"column":1,"cyclomaticComplexity":19,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":137,"column":15,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:notify",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:notify","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","symbolName":"notify","symbolKind":"function","exported":false,"metadata":{"line":144,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:persist",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:persist","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","symbolName":"persist","symbolKind":"function","exported":false,"metadata":{"line":148,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:saveSettings",{"id":"symbol-name:saveSettings","kind":"symbol","language":"jsts","symbolName":"saveSettings","metadata":{"unresolvedName":"saveSettings"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:isSystemEnabled",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:isSystemEnabled","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","symbolName":"isSystemEnabled","symbolKind":"function","exported":false,"metadata":{"line":152,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:setSystemEnabled",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:setSystemEnabled","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","symbolName":"setSystemEnabled","symbolKind":"function","exported":false,"metadata":{"line":156,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:exportNotificationEventSettingsBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:exportNotificationEventSettingsBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","symbolName":"exportNotificationEventSettingsBackup","symbolKind":"function","exported":true,"metadata":{"line":171,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:notificationEventSettingsStore.getSnapshot",{"id":"external:notificationEventSettingsStore.getSnapshot","kind":"external","language":"jsts","metadata":{"unresolvedName":"notificationEventSettingsStore.getSnapshot"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:importNotificationEventSettingsBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:importNotificationEventSettingsBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","symbolName":"importNotificationEventSettingsBackup","symbolKind":"function","exported":true,"metadata":{"line":175,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:useNotificationEventSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:useNotificationEventSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","symbolName":"useNotificationEventSettings","symbolKind":"function","exported":true,"metadata":{"line":179,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:loadNotifications",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:loadNotifications","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"loadNotifications","symbolKind":"function","exported":false,"metadata":{"line":64,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:(JSON.parse(raw) as NotificationEntry[]).slice",{"id":"external:(JSON.parse(raw) as NotificationEntry[]).slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"(JSON.parse(raw) as NotificationEntry[]).slice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:saveNotifications",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:saveNotifications","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"saveNotifications","symbolKind":"function","exported":false,"metadata":{"line":74,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":264,"column":16,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:notify",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:notify","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"notify","symbolKind":"function","exported":false,"metadata":{"line":109,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:persist",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:persist","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"persist","symbolKind":"function","exported":false,"metadata":{"line":113,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:saveNotifications",{"id":"symbol-name:saveNotifications","kind":"symbol","language":"jsts","symbolName":"saveNotifications","metadata":{"unresolvedName":"saveNotifications"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:setToastEnabled",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:setToastEnabled","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"setToastEnabled","symbolKind":"function","exported":false,"metadata":{"line":119,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.dismissAllToasts",{"id":"external:this.dismissAllToasts","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.dismissAllToasts"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:onPush",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:onPush","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"onPush","symbolKind":"function","exported":false,"metadata":{"line":131,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.pushListeners.add",{"id":"external:this.pushListeners.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.pushListeners.add"}}],["external:this.pushListeners.delete",{"id":"external:this.pushListeners.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.pushListeners.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:push",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:push","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"push","symbolKind":"function","exported":false,"metadata":{"line":140,"column":3,"cyclomaticComplexity":5,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:Math.random().toString(36).slice",{"id":"external:Math.random().toString(36).slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"Math.random().toString(36).slice"}}],["external:[entry, ...this.state.notifications].slice",{"id":"external:[entry, ...this.state.notifications].slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"[entry, ...this.state.notifications].slice"}}],["external:toasts.pop",{"id":"external:toasts.pop","kind":"external","language":"jsts","metadata":{"unresolvedName":"toasts.pop"}}],["external:this.clearToastTimer",{"id":"external:this.clearToastTimer","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.clearToastTimer"}}],["external:toasts.unshift",{"id":"external:toasts.unshift","kind":"external","language":"jsts","metadata":{"unresolvedName":"toasts.unshift"}}],["external:this.scheduleToastDismiss",{"id":"external:this.scheduleToastDismiss","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.scheduleToastDismiss"}}],["external:this.pushListeners.forEach",{"id":"external:this.pushListeners.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.pushListeners.forEach"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markRead",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markRead","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"markRead","symbolKind":"function","exported":false,"metadata":{"line":187,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.state.notifications.map",{"id":"external:this.state.notifications.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.state.notifications.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markAllRead",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markAllRead","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"markAllRead","symbolKind":"function","exported":false,"metadata":{"line":194,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markSessionNotificationsRead",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markSessionNotificationsRead","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"markSessionNotificationsRead","symbolKind":"function","exported":false,"metadata":{"line":201,"column":3,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismiss",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismiss","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"dismiss","symbolKind":"function","exported":false,"metadata":{"line":216,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.state.notifications.filter",{"id":"external:this.state.notifications.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.state.notifications.filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:clearAll",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:clearAll","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"clearAll","symbolKind":"function","exported":false,"metadata":{"line":223,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:scheduleToastDismiss",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:scheduleToastDismiss","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"scheduleToastDismiss","symbolKind":"function","exported":false,"metadata":{"line":233,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.dismissToast",{"id":"external:this.dismissToast","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.dismissToast"}}],["external:this.toastTimers.set",{"id":"external:this.toastTimers.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.toastTimers.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:clearToastTimer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:clearToastTimer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"clearToastTimer","symbolKind":"function","exported":false,"metadata":{"line":239,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.toastTimers.get",{"id":"external:this.toastTimers.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.toastTimers.get"}}],["external:this.toastTimers.delete",{"id":"external:this.toastTimers.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.toastTimers.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:pauseToast",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:pauseToast","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"pauseToast","symbolKind":"function","exported":false,"metadata":{"line":247,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:resumeToast",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:resumeToast","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"resumeToast","symbolKind":"function","exported":false,"metadata":{"line":251,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.state.toasts.some",{"id":"external:this.state.toasts.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.state.toasts.some"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismissToast",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismissToast","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"dismissToast","symbolKind":"function","exported":false,"metadata":{"line":258,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.state.toasts.map",{"id":"external:this.state.toasts.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.state.toasts.map"}}],["external:this.state.toasts.filter",{"id":"external:this.state.toasts.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.state.toasts.filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismissAllToasts",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismissAllToasts","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"dismissAllToasts","symbolKind":"function","exported":false,"metadata":{"line":273,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.toastTimers.forEach",{"id":"external:this.toastTimers.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.toastTimers.forEach"}}],["external:this.toastTimers.clear",{"id":"external:this.toastTimers.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.toastTimers.clear"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:exportNotificationPreferencesBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:exportNotificationPreferencesBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"exportNotificationPreferencesBackup","symbolKind":"function","exported":true,"metadata":{"line":287,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:importNotificationPreferencesBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:importNotificationPreferencesBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"importNotificationPreferencesBackup","symbolKind":"function","exported":true,"metadata":{"line":293,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useNotificationStore",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useNotificationStore","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"useNotificationStore","symbolKind":"function","exported":true,"metadata":{"line":299,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useNotifications",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useNotifications","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"useNotifications","symbolKind":"function","exported":true,"metadata":{"line":304,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useUnreadNotificationCount",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useUnreadNotificationCount","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"useUnreadNotificationCount","symbolKind":"function","exported":true,"metadata":{"line":310,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:state.notifications.filter",{"id":"external:state.notifications.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"state.notifications.filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useUnreadCompletedSessionIds",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useUnreadCompletedSessionIds","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"useUnreadCompletedSessionIds","symbolKind":"function","exported":true,"metadata":{"line":316,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:state.notifications.filter(n => n.type === 'completed' && !n.read).map",{"id":"external:state.notifications.filter(n => n.type === 'completed' && !n.read).map","kind":"external","language":"jsts","metadata":{"unresolvedName":"state.notifications.filter(n => n.type === 'completed' && !n.read).map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useHasUnreadCompletedNotification",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useHasUnreadCompletedNotification","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","symbolName":"useHasUnreadCompletedNotification","symbolKind":"function","exported":true,"metadata":{"line":322,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:useUnreadCompletedSessionIds",{"id":"symbol-name:useUnreadCompletedSessionIds","kind":"symbol","language":"jsts","symbolName":"useUnreadCompletedSessionIds","metadata":{"unresolvedName":"useUnreadCompletedSessionIds"}}],["external:unreadCompletedSessionIds.has",{"id":"external:unreadCompletedSessionIds.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"unreadCompletedSessionIds.has"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","metadata":{"lineCount":102,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:isSameController",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:isSameController","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","symbolName":"isSameController","symbolKind":"function","exported":false,"metadata":{"line":22,"column":1,"cyclomaticComplexity":15,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:subscribe",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:subscribe","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","symbolName":"subscribe","symbolKind":"function","exported":false,"metadata":{"line":47,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:notify",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:notify","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","symbolName":"notify","symbolKind":"function","exported":false,"metadata":{"line":52,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:rebuildSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:rebuildSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","symbolName":"rebuildSnapshot","symbolKind":"function","exported":false,"metadata":{"line":56,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.controllers.values",{"id":"external:this.controllers.values","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.controllers.values"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:setController",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:setController","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","symbolName":"setController","symbolKind":"function","exported":false,"metadata":{"line":60,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.controllers.get",{"id":"external:this.controllers.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.controllers.get"}}],["symbol-name:isSameController",{"id":"symbol-name:isSameController","kind":"symbol","language":"jsts","symbolName":"isSameController","metadata":{"unresolvedName":"isSameController"}}],["external:this.controllers.set",{"id":"external:this.controllers.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.controllers.set"}}],["external:this.rebuildSnapshot",{"id":"external:this.rebuildSnapshot","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.rebuildSnapshot"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:removeController",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:removeController","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","symbolName":"removeController","symbolKind":"function","exported":false,"metadata":{"line":68,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.controllers.has",{"id":"external:this.controllers.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.controllers.has"}}],["external:this.controllers.delete",{"id":"external:this.controllers.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.controllers.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:getController",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:getController","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","symbolName":"getController","symbolKind":"function","exported":false,"metadata":{"line":75,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:getControllers",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:getControllers","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","symbolName":"getControllers","symbolKind":"function","exported":false,"metadata":{"line":80,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:usePaneController",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:usePaneController","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","symbolName":"usePaneController","symbolKind":"function","exported":true,"metadata":{"line":87,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:paneControllerStore.subscribe",{"id":"external:paneControllerStore.subscribe","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneControllerStore.subscribe"}}],["external:paneControllerStore.getController",{"id":"external:paneControllerStore.getController","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneControllerStore.getController"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:usePaneControllers",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:usePaneControllers","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","symbolName":"usePaneControllers","symbolKind":"function","exported":true,"metadata":{"line":95,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:paneControllerStore.getControllers",{"id":"external:paneControllerStore.getControllers","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneControllerStore.getControllers"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts","metadata":{"lineCount":22,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":5,"column":67,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:paneLayoutStore.reset",{"id":"external:paneLayoutStore.reset","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneLayoutStore.reset"}}],["external:expect(paneB).toBe",{"id":"external:expect(paneB).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(paneB).toBe"}}],["external:expect(paneC).toBe",{"id":"external:expect(paneC).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(paneC).toBe"}}],["external:expect(paneLayoutStore.getFocusedPaneId()).toBe",{"id":"external:expect(paneLayoutStore.getFocusedPaneId()).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(paneLayoutStore.getFocusedPaneId()).toBe"}}],["external:expect(paneLayoutStore.getFocusedSessionId()).toBe",{"id":"external:expect(paneLayoutStore.getFocusedSessionId()).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(paneLayoutStore.getFocusedSessionId()).toBe"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:genPaneId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:genPaneId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"genPaneId","symbolKind":"function","exported":false,"metadata":{"line":54,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:genSplitId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:genSplitId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"genSplitId","symbolKind":"function","exported":false,"metadata":{"line":58,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:countLeaves",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:countLeaves","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"countLeaves","symbolKind":"function","exported":false,"metadata":{"line":62,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:countLeaves",{"id":"symbol-name:countLeaves","kind":"symbol","language":"jsts","symbolName":"countLeaves","metadata":{"unresolvedName":"countLeaves"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"findLeaf","symbolKind":"function","exported":false,"metadata":{"line":228,"column":5,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:findLeaf",{"id":"symbol-name:findLeaf","kind":"symbol","language":"jsts","symbolName":"findLeaf","metadata":{"unresolvedName":"findLeaf"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:allLeaves",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:allLeaves","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"allLeaves","symbolKind":"function","exported":false,"metadata":{"line":232,"column":5,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:allLeaves",{"id":"symbol-name:allLeaves","kind":"symbol","language":"jsts","symbolName":"allLeaves","metadata":{"unresolvedName":"allLeaves"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:replaceNode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:replaceNode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"replaceNode","symbolKind":"function","exported":false,"metadata":{"line":80,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:replaceNode",{"id":"symbol-name:replaceNode","kind":"symbol","language":"jsts","symbolName":"replaceNode","metadata":{"unresolvedName":"replaceNode"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:removeLeaf",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:removeLeaf","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"removeLeaf","symbolKind":"function","exported":false,"metadata":{"line":94,"column":1,"cyclomaticComplexity":11,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:removeLeaf",{"id":"symbol-name:removeLeaf","kind":"symbol","language":"jsts","symbolName":"removeLeaf","metadata":{"unresolvedName":"removeLeaf"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findReplacementForRemovedLeaf",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findReplacementForRemovedLeaf","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"findReplacementForRemovedLeaf","symbolKind":"function","exported":false,"metadata":{"line":115,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:findReplacementForRemovedLeaf",{"id":"symbol-name:findReplacementForRemovedLeaf","kind":"symbol","language":"jsts","symbolName":"findReplacementForRemovedLeaf","metadata":{"unresolvedName":"findReplacementForRemovedLeaf"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:swapLeafSessions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:swapLeafSessions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"swapLeafSessions","symbolKind":"function","exported":false,"metadata":{"line":127,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:walk",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:walk","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"walk","symbolKind":"function","exported":false,"metadata":{"line":135,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:updateRatio",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:updateRatio","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"updateRatio","symbolKind":"function","exported":false,"metadata":{"line":149,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:updateRatio",{"id":"symbol-name:updateRatio","kind":"symbol","language":"jsts","symbolName":"updateRatio","metadata":{"unresolvedName":"updateRatio"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"createPaneLayoutStore","symbolKind":"function","exported":false,"metadata":{"line":165,"column":1,"cyclomaticComplexity":44,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:genPaneId",{"id":"symbol-name:genPaneId","kind":"symbol","language":"jsts","symbolName":"genPaneId","metadata":{"unresolvedName":"genPaneId"}}],["symbol-name:_snapshot",{"id":"symbol-name:_snapshot","kind":"symbol","language":"jsts","symbolName":"_snapshot","metadata":{"unresolvedName":"_snapshot"}}],["symbol-name:_refreshSnapshot",{"id":"symbol-name:_refreshSnapshot","kind":"symbol","language":"jsts","symbolName":"_refreshSnapshot","metadata":{"unresolvedName":"_refreshSnapshot"}}],["external:this.exitPaneFullscreen",{"id":"external:this.exitPaneFullscreen","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.exitPaneFullscreen"}}],["external:this.enterPaneFullscreen",{"id":"external:this.enterPaneFullscreen","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.enterPaneFullscreen"}}],["external:this.setPaneSession",{"id":"external:this.setPaneSession","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.setPaneSession"}}],["symbol-name:genSplitId",{"id":"symbol-name:genSplitId","kind":"symbol","language":"jsts","symbolName":"genSplitId","metadata":{"unresolvedName":"genSplitId"}}],["symbol-name:swapLeafSessions",{"id":"symbol-name:swapLeafSessions","kind":"symbol","language":"jsts","symbolName":"swapLeafSessions","metadata":{"unresolvedName":"swapLeafSessions"}}],["external:this.splitPane",{"id":"external:this.splitPane","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.splitPane"}}],["external:leaves.findIndex",{"id":"external:leaves.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"leaves.findIndex"}}],["external:this.focusPane",{"id":"external:this.focusPane","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.focusPane"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_notify",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_notify","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"_notify","symbolKind":"function","exported":false,"metadata":{"line":171,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_snapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_snapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"_snapshot","symbolKind":"function","exported":false,"metadata":{"line":175,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_refreshSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_refreshSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"_refreshSnapshot","symbolKind":"function","exported":false,"metadata":{"line":191,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:subscribe",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:subscribe","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"subscribe","symbolKind":"function","exported":false,"metadata":{"line":198,"column":5,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"getSnapshot","symbolKind":"function","exported":false,"metadata":{"line":203,"column":5,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getRoot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getRoot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"getRoot","symbolKind":"function","exported":false,"metadata":{"line":208,"column":5,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getFocusedPaneId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getFocusedPaneId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"getFocusedPaneId","symbolKind":"function","exported":false,"metadata":{"line":212,"column":5,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getFocusedLeaf",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getFocusedLeaf","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"getFocusedLeaf","symbolKind":"function","exported":false,"metadata":{"line":216,"column":5,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getFocusedSessionId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getFocusedSessionId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"getFocusedSessionId","symbolKind":"function","exported":false,"metadata":{"line":220,"column":5,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getFullscreenPaneId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getFullscreenPaneId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"getFullscreenPaneId","symbolKind":"function","exported":false,"metadata":{"line":224,"column":5,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:isSinglePane",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:isSinglePane","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"isSinglePane","symbolKind":"function","exported":false,"metadata":{"line":237,"column":5,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusPane",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusPane","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"focusPane","symbolKind":"function","exported":false,"metadata":{"line":246,"column":5,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:enterPaneFullscreen",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:enterPaneFullscreen","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"enterPaneFullscreen","symbolKind":"function","exported":false,"metadata":{"line":252,"column":5,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:exitPaneFullscreen",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:exitPaneFullscreen","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"exitPaneFullscreen","symbolKind":"function","exported":false,"metadata":{"line":259,"column":5,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:togglePaneFullscreen",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:togglePaneFullscreen","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"togglePaneFullscreen","symbolKind":"function","exported":false,"metadata":{"line":265,"column":5,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:setPaneSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:setPaneSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"setPaneSession","symbolKind":"function","exported":false,"metadata":{"line":276,"column":5,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:setFocusedSession",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:setFocusedSession","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"setFocusedSession","symbolKind":"function","exported":false,"metadata":{"line":283,"column":5,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:splitPane",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:splitPane","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"splitPane","symbolKind":"function","exported":false,"metadata":{"line":292,"column":5,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:splitPaneToSide",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:splitPaneToSide","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"splitPaneToSide","symbolKind":"function","exported":false,"metadata":{"line":322,"column":5,"cyclomaticComplexity":8,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:closePane",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:closePane","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"closePane","symbolKind":"function","exported":false,"metadata":{"line":357,"column":5,"cyclomaticComplexity":11,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:swapPanes",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:swapPanes","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"swapPanes","symbolKind":"function","exported":false,"metadata":{"line":387,"column":5,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:setRatio",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:setRatio","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"setRatio","symbolKind":"function","exported":false,"metadata":{"line":396,"column":5,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:enterSplitMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:enterSplitMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"enterSplitMode","symbolKind":"function","exported":false,"metadata":{"line":407,"column":5,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:exitSplitMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:exitSplitMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"exitSplitMode","symbolKind":"function","exported":false,"metadata":{"line":419,"column":5,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:reset",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:reset","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"reset","symbolKind":"function","exported":false,"metadata":{"line":435,"column":5,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusNextPane",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusNextPane","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"focusNextPane","symbolKind":"function","exported":false,"metadata":{"line":446,"column":5,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusPrevPane",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusPrevPane","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"focusPrevPane","symbolKind":"function","exported":false,"metadata":{"line":457,"column":5,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusPaneByIndex",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusPaneByIndex","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"focusPaneByIndex","symbolKind":"function","exported":false,"metadata":{"line":468,"column":5,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:usePaneLayout",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:usePaneLayout","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","symbolName":"usePaneLayout","symbolKind":"function","exported":true,"metadata":{"line":483,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts","metadata":{"lineCount":54,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":38,"column":90,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:Date.parse",{"id":"external:Date.parse","kind":"external","language":"jsts","metadata":{"unresolvedName":"Date.parse"}}],["external:perfSpy.mockReturnValueOnce",{"id":"external:perfSpy.mockReturnValueOnce","kind":"external","language":"jsts","metadata":{"unresolvedName":"perfSpy.mockReturnValueOnce"}}],["external:new Date(serverTimestamp).toISOString",{"id":"external:new Date(serverTimestamp).toISOString","kind":"external","language":"jsts","metadata":{"unresolvedName":"new Date(serverTimestamp).toISOString"}}],["external:perfSpy.mockReturnValue",{"id":"external:perfSpy.mockReturnValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"perfSpy.mockReturnValue"}}],["external:expect(serverStore.getActiveCalibratedNow()).toBe",{"id":"external:expect(serverStore.getActiveCalibratedNow()).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(serverStore.getActiveCalibratedNow()).toBe"}}],["external:expect(serverStore.getActiveCalibratedNow()).toBeUndefined",{"id":"external:expect(serverStore.getActiveCalibratedNow()).toBeUndefined","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(serverStore.getActiveCalibratedNow()).toBeUndefined"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getUnifiedFetch",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getUnifiedFetch","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"getUnifiedFetch","symbolKind":"function","exported":false,"metadata":{"line":12,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:import('@tauri-apps/plugin-http').then",{"id":"external:import('@tauri-apps/plugin-http').then","kind":"external","language":"jsts","metadata":{"unresolvedName":"import('@tauri-apps/plugin-http').then"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":534,"column":43,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:loadFromStorage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:loadFromStorage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"loadFromStorage","symbolKind":"function","exported":false,"metadata":{"line":99,"column":3,"cyclomaticComplexity":8,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:sessionStorage.getItem",{"id":"external:sessionStorage.getItem","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionStorage.getItem"}}],["external:this.servers.some",{"id":"external:this.servers.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.servers.some"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:saveToStorage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:saveToStorage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"saveToStorage","symbolKind":"function","exported":false,"metadata":{"line":143,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:sessionStorage.setItem",{"id":"external:sessionStorage.setItem","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionStorage.setItem"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:subscribe",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:subscribe","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"subscribe","symbolKind":"function","exported":false,"metadata":{"line":160,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:onServerChange",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:onServerChange","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"onServerChange","symbolKind":"function","exported":false,"metadata":{"line":169,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.serverChangeListeners.add",{"id":"external:this.serverChangeListeners.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.serverChangeListeners.add"}}],["external:this.serverChangeListeners.delete",{"id":"external:this.serverChangeListeners.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.serverChangeListeners.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:notify",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:notify","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"notify","symbolKind":"function","exported":false,"metadata":{"line":174,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.updateSnapshots",{"id":"external:this.updateSnapshots","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.updateSnapshots"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:updateSnapshots",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:updateSnapshots","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"updateSnapshots","symbolKind":"function","exported":false,"metadata":{"line":184,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.servers.find",{"id":"external:this.servers.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.servers.find"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getServers",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getServers","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"getServers","symbolKind":"function","exported":false,"metadata":{"line":197,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveServer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveServer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"getActiveServer","symbolKind":"function","exported":false,"metadata":{"line":204,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveServerId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveServerId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"getActiveServerId","symbolKind":"function","exported":false,"metadata":{"line":212,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:isPiMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:isPiMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"isPiMode","symbolKind":"function","exported":false,"metadata":{"line":219,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveToken",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveToken","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"getActiveToken","symbolKind":"function","exported":false,"metadata":{"line":229,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:this.isPiMode",{"id":"external:this.isPiMode","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.isPiMode"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveBaseUrl",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveBaseUrl","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"getActiveBaseUrl","symbolKind":"function","exported":false,"metadata":{"line":240,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.getActiveServer",{"id":"external:this.getActiveServer","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getActiveServer"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveAuth",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveAuth","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"getActiveAuth","symbolKind":"function","exported":false,"metadata":{"line":251,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getServerAuth",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getServerAuth","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"getServerAuth","symbolKind":"function","exported":false,"metadata":{"line":260,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getHealth",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getHealth","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"getHealth","symbolKind":"function","exported":false,"metadata":{"line":268,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.healthMap.get",{"id":"external:this.healthMap.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.healthMap.get"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getAllHealth",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getAllHealth","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"getAllHealth","symbolKind":"function","exported":false,"metadata":{"line":275,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveCalibratedNow",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveCalibratedNow","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"getActiveCalibratedNow","symbolKind":"function","exported":false,"metadata":{"line":279,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.clockCalibrationMap.get",{"id":"external:this.clockCalibrationMap.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.clockCalibrationMap.get"}}],["external:this.getActiveServerId",{"id":"external:this.getActiveServerId","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getActiveServerId"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:addServer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:addServer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"addServer","symbolKind":"function","exported":false,"metadata":{"line":292,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:config.url.replace",{"id":"external:config.url.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"config.url.replace"}}],["external:this.servers.push",{"id":"external:this.servers.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.servers.push"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:updateServer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:updateServer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"updateServer","symbolKind":"function","exported":false,"metadata":{"line":308,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.servers.findIndex",{"id":"external:this.servers.findIndex","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.servers.findIndex"}}],["external:updates.url.replace",{"id":"external:updates.url.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"updates.url.replace"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:removeServer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:removeServer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"removeServer","symbolKind":"function","exported":false,"metadata":{"line":327,"column":3,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.servers.filter",{"id":"external:this.servers.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.servers.filter"}}],["external:this.healthMap.delete",{"id":"external:this.healthMap.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.healthMap.delete"}}],["external:this.clockCalibrationMap.delete",{"id":"external:this.clockCalibrationMap.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.clockCalibrationMap.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:setActiveServer",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:setActiveServer","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"setActiveServer","symbolKind":"function","exported":false,"metadata":{"line":350,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.serverChangeListeners.forEach",{"id":"external:this.serverChangeListeners.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.serverChangeListeners.forEach"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:applyServerConnectedTimestamp",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:applyServerConnectedTimestamp","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"applyServerConnectedTimestamp","symbolKind":"function","exported":false,"metadata":{"line":368,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:normalizeServerTimestamp",{"id":"symbol-name:normalizeServerTimestamp","kind":"symbol","language":"jsts","symbolName":"normalizeServerTimestamp","metadata":{"unresolvedName":"normalizeServerTimestamp"}}],["external:this.clockCalibrationMap.set",{"id":"external:this.clockCalibrationMap.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.clockCalibrationMap.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkHealth",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkHealth","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"checkHealth","symbolKind":"function","exported":false,"metadata":{"line":387,"column":3,"cyclomaticComplexity":8,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.healthMap.set",{"id":"external:this.healthMap.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.healthMap.set"}}],["external:controller.abort",{"id":"external:controller.abort","kind":"external","language":"jsts","metadata":{"unresolvedName":"controller.abort"}}],["symbol-name:getUnifiedFetch",{"id":"symbol-name:getUnifiedFetch","kind":"symbol","language":"jsts","symbolName":"getUnifiedFetch","metadata":{"unresolvedName":"getUnifiedFetch"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkAllHealth",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkAllHealth","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"checkAllHealth","symbolKind":"function","exported":false,"metadata":{"line":475,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.servers.map",{"id":"external:this.servers.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.servers.map"}}],["external:this.checkHealth",{"id":"external:this.checkHealth","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.checkHealth"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:normalizeServerBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:normalizeServerBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"normalizeServerBackup","symbolKind":"function","exported":false,"metadata":{"line":483,"column":1,"cyclomaticComplexity":16,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:parsed.servers\n .filter",{"id":"external:parsed.servers\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"parsed.servers\n .filter"}}],["external:item.url.replace",{"id":"external:item.url.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"item.url.replace"}}],["external:normalizedServers.some",{"id":"external:normalizedServers.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalizedServers.some"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:exportServerSettingsBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:exportServerSettingsBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"exportServerSettingsBackup","symbolKind":"function","exported":true,"metadata":{"line":532,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:serverStore.getServers().map",{"id":"external:serverStore.getServers().map","kind":"external","language":"jsts","metadata":{"unresolvedName":"serverStore.getServers().map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:importServerSettingsBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:importServerSettingsBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"importServerSettingsBackup","symbolKind":"function","exported":true,"metadata":{"line":542,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:normalizeServerBackup",{"id":"symbol-name:normalizeServerBackup","kind":"symbol","language":"jsts","symbolName":"normalizeServerBackup","metadata":{"unresolvedName":"normalizeServerBackup"}}],["external:sessionStorage.removeItem",{"id":"external:sessionStorage.removeItem","kind":"external","language":"jsts","metadata":{"unresolvedName":"sessionStorage.removeItem"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:makeBasicAuthHeader",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:makeBasicAuthHeader","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"makeBasicAuthHeader","symbolKind":"function","exported":true,"metadata":{"line":557,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:normalizeServerTimestamp",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:normalizeServerTimestamp","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","symbolName":"normalizeServerTimestamp","symbolKind":"function","exported":false,"metadata":{"line":561,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setAutoStart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setAutoStart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","symbolName":"setAutoStart","symbolKind":"function","exported":false,"metadata":{"line":107,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this._notify",{"id":"external:this._notify","kind":"external","language":"jsts","metadata":{"unresolvedName":"this._notify"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setBinaryPath",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setBinaryPath","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","symbolName":"setBinaryPath","symbolKind":"function","exported":false,"metadata":{"line":117,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setEnvVars",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setEnvVars","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","symbolName":"setEnvVars","symbolKind":"function","exported":false,"metadata":{"line":127,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setRunning",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setRunning","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","symbolName":"setRunning","symbolKind":"function","exported":false,"metadata":{"line":137,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setStartedByUs",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setStartedByUs","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","symbolName":"setStartedByUs","symbolKind":"function","exported":false,"metadata":{"line":142,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setStarting",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setStarting","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","symbolName":"setStarting","symbolKind":"function","exported":false,"metadata":{"line":147,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":156,"column":12,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this._listeners.add",{"id":"external:this._listeners.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"this._listeners.add"}}],["external:this._listeners.delete",{"id":"external:this._listeners.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this._listeners.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:_buildSnapshot",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:_buildSnapshot","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","symbolName":"_buildSnapshot","symbolKind":"function","exported":false,"metadata":{"line":165,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:_notify",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:_notify","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","symbolName":"_notify","symbolKind":"function","exported":false,"metadata":{"line":176,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this._buildSnapshot",{"id":"external:this._buildSnapshot","kind":"external","language":"jsts","metadata":{"unresolvedName":"this._buildSnapshot"}}],["external:this._listeners.forEach",{"id":"external:this._listeners.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"this._listeners.forEach"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:exportServiceSettingsBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:exportServiceSettingsBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","symbolName":"exportServiceSettingsBackup","symbolKind":"function","exported":true,"metadata":{"line":184,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:serviceStore.envVars.map",{"id":"external:serviceStore.envVars.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"serviceStore.envVars.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:importServiceSettingsBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:importServiceSettingsBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","symbolName":"importServiceSettingsBackup","symbolKind":"function","exported":true,"metadata":{"line":192,"column":1,"cyclomaticComplexity":8,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:parsed.envVars\r\n .filter",{"id":"external:parsed.envVars\r\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"parsed.envVars\r\n .filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:useServiceStore",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:useServiceStore","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","symbolName":"useServiceStore","symbolKind":"function","exported":true,"metadata":{"line":212,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:createDefaultSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:createDefaultSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"createDefaultSettings","symbolKind":"function","exported":false,"metadata":{"line":68,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeEventConfig",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeEventConfig","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"normalizeEventConfig","symbolKind":"function","exported":false,"metadata":{"line":82,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:loadSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:loadSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"loadSettings","symbolKind":"function","exported":false,"metadata":{"line":94,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:normalizeEventConfig",{"id":"symbol-name:normalizeEventConfig","kind":"symbol","language":"jsts","symbolName":"normalizeEventConfig","metadata":{"unresolvedName":"normalizeEventConfig"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:saveSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:saveSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"saveSettings","symbolKind":"function","exported":false,"metadata":{"line":120,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:blobToBase64",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:blobToBase64","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"blobToBase64","symbolKind":"function","exported":false,"metadata":{"line":128,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:blob.arrayBuffer().then",{"id":"external:blob.arrayBuffer().then","kind":"external","language":"jsts","metadata":{"unresolvedName":"blob.arrayBuffer().then"}}],["external:blob.arrayBuffer",{"id":"external:blob.arrayBuffer","kind":"external","language":"jsts","metadata":{"unresolvedName":"blob.arrayBuffer"}}],["external:bytes.subarray",{"id":"external:bytes.subarray","kind":"external","language":"jsts","metadata":{"unresolvedName":"bytes.subarray"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":262,"column":15,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:base64ToBlob",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:base64ToBlob","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"base64ToBlob","symbolKind":"function","exported":false,"metadata":{"line":143,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:atob",{"id":"symbol-name:atob","kind":"symbol","language":"jsts","symbolName":"atob","metadata":{"unresolvedName":"atob"}}],["external:binary.charCodeAt",{"id":"external:binary.charCodeAt","kind":"external","language":"jsts","metadata":{"unresolvedName":"binary.charCodeAt"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:openIDB",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:openIDB","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"openIDB","symbolKind":"function","exported":false,"metadata":{"line":156,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:indexedDB.open",{"id":"external:indexedDB.open","kind":"external","language":"jsts","metadata":{"unresolvedName":"indexedDB.open"}}],["external:db.objectStoreNames.contains",{"id":"external:db.objectStoreNames.contains","kind":"external","language":"jsts","metadata":{"unresolvedName":"db.objectStoreNames.contains"}}],["external:db.createObjectStore",{"id":"external:db.createObjectStore","kind":"external","language":"jsts","metadata":{"unresolvedName":"db.createObjectStore"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbPut",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbPut","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"idbPut","symbolKind":"function","exported":false,"metadata":{"line":170,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:openIDB",{"id":"symbol-name:openIDB","kind":"symbol","language":"jsts","symbolName":"openIDB","metadata":{"unresolvedName":"openIDB"}}],["external:db.transaction",{"id":"external:db.transaction","kind":"external","language":"jsts","metadata":{"unresolvedName":"db.transaction"}}],["external:tx.objectStore",{"id":"external:tx.objectStore","kind":"external","language":"jsts","metadata":{"unresolvedName":"tx.objectStore"}}],["external:store.put",{"id":"external:store.put","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.put"}}],["external:db.close",{"id":"external:db.close","kind":"external","language":"jsts","metadata":{"unresolvedName":"db.close"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbGet",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbGet","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"idbGet","symbolKind":"function","exported":false,"metadata":{"line":182,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:store.get",{"id":"external:store.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.get"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbDelete",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbDelete","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"idbDelete","symbolKind":"function","exported":false,"metadata":{"line":194,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:store.delete",{"id":"external:store.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:isAudioFileValid",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:isAudioFileValid","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"isAudioFileValid","symbolKind":"function","exported":true,"metadata":{"line":229,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:file.type.startsWith",{"id":"external:file.type.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"file.type.startsWith"}}],["external:ALLOWED_AUDIO_TYPES.includes",{"id":"external:ALLOWED_AUDIO_TYPES.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"ALLOWED_AUDIO_TYPES.includes"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:notify",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:notify","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"notify","symbolKind":"function","exported":false,"metadata":{"line":252,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:persist",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:persist","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"persist","symbolKind":"function","exported":false,"metadata":{"line":258,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setEnabled",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setEnabled","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"setEnabled","symbolKind":"function","exported":false,"metadata":{"line":273,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setCurrentSessionEnabled",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setCurrentSessionEnabled","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"setCurrentSessionEnabled","symbolKind":"function","exported":false,"metadata":{"line":279,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setVolume",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setVolume","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"setVolume","symbolKind":"function","exported":false,"metadata":{"line":285,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setEventSound",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setEventSound","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"setEventSound","symbolKind":"function","exported":false,"metadata":{"line":295,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:uploadCustomAudio",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:uploadCustomAudio","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"uploadCustomAudio","symbolKind":"function","exported":false,"metadata":{"line":316,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:isAudioFileValid",{"id":"symbol-name:isAudioFileValid","kind":"symbol","language":"jsts","symbolName":"isAudioFileValid","metadata":{"unresolvedName":"isAudioFileValid"}}],["external:file.arrayBuffer",{"id":"external:file.arrayBuffer","kind":"external","language":"jsts","metadata":{"unresolvedName":"file.arrayBuffer"}}],["symbol-name:idbPut",{"id":"symbol-name:idbPut","kind":"symbol","language":"jsts","symbolName":"idbPut","metadata":{"unresolvedName":"idbPut"}}],["external:this.customAudioCache.set",{"id":"external:this.customAudioCache.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.customAudioCache.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:removeCustomAudio",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:removeCustomAudio","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"removeCustomAudio","symbolKind":"function","exported":false,"metadata":{"line":349,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:idbDelete",{"id":"symbol-name:idbDelete","kind":"symbol","language":"jsts","symbolName":"idbDelete","metadata":{"unresolvedName":"idbDelete"}}],["external:this.customAudioCache.delete",{"id":"external:this.customAudioCache.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.customAudioCache.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:getCustomAudioBlob",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:getCustomAudioBlob","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"getCustomAudioBlob","symbolKind":"function","exported":false,"metadata":{"line":373,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.customAudioCache.get",{"id":"external:this.customAudioCache.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.customAudioCache.get"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:hasCustomAudio",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:hasCustomAudio","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"hasCustomAudio","symbolKind":"function","exported":false,"metadata":{"line":378,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.customAudioCache.has",{"id":"external:this.customAudioCache.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.customAudioCache.has"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportCustomAudio",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportCustomAudio","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"exportCustomAudio","symbolKind":"function","exported":false,"metadata":{"line":383,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.getCustomAudioBlobAsync",{"id":"external:this.getCustomAudioBlobAsync","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getCustomAudioBlobAsync"}}],["external:URL.createObjectURL",{"id":"external:URL.createObjectURL","kind":"external","language":"jsts","metadata":{"unresolvedName":"URL.createObjectURL"}}],["external:a.click",{"id":"external:a.click","kind":"external","language":"jsts","metadata":{"unresolvedName":"a.click"}}],["external:URL.revokeObjectURL",{"id":"external:URL.revokeObjectURL","kind":"external","language":"jsts","metadata":{"unresolvedName":"URL.revokeObjectURL"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportCustomAudioForBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportCustomAudioForBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"exportCustomAudioForBackup","symbolKind":"function","exported":false,"metadata":{"line":398,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:blobToBase64",{"id":"symbol-name:blobToBase64","kind":"symbol","language":"jsts","symbolName":"blobToBase64","metadata":{"unresolvedName":"blobToBase64"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:importCustomAudioFromBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:importCustomAudioFromBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"importCustomAudioFromBackup","symbolKind":"function","exported":false,"metadata":{"line":415,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:base64ToBlob",{"id":"symbol-name:base64ToBlob","kind":"symbol","language":"jsts","symbolName":"base64ToBlob","metadata":{"unresolvedName":"base64ToBlob"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:getCustomAudioBlobAsync",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:getCustomAudioBlobAsync","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"getCustomAudioBlobAsync","symbolKind":"function","exported":false,"metadata":{"line":437,"column":3,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.customAudioLoading.has",{"id":"external:this.customAudioLoading.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.customAudioLoading.has"}}],["external:this.customAudioLoading.add",{"id":"external:this.customAudioLoading.add","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.customAudioLoading.add"}}],["symbol-name:idbGet",{"id":"symbol-name:idbGet","kind":"symbol","language":"jsts","symbolName":"idbGet","metadata":{"unresolvedName":"idbGet"}}],["external:this.customAudioLoading.delete",{"id":"external:this.customAudioLoading.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.customAudioLoading.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:preloadCustomAudio",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:preloadCustomAudio","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"preloadCustomAudio","symbolKind":"function","exported":false,"metadata":{"line":458,"column":3,"cyclomaticComplexity":5,"maxNestingDepth":4,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeSoundSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeSoundSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"normalizeSoundSettings","symbolKind":"function","exported":false,"metadata":{"line":482,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeBackupCustomAudioMap",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeBackupCustomAudioMap","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"normalizeBackupCustomAudioMap","symbolKind":"function","exported":false,"metadata":{"line":509,"column":1,"cyclomaticComplexity":9,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportSoundBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportSoundBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"exportSoundBackup","symbolKind":"function","exported":true,"metadata":{"line":531,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:normalizeSoundSettings",{"id":"symbol-name:normalizeSoundSettings","kind":"symbol","language":"jsts","symbolName":"normalizeSoundSettings","metadata":{"unresolvedName":"normalizeSoundSettings"}}],["external:soundStore.exportCustomAudioForBackup",{"id":"external:soundStore.exportCustomAudioForBackup","kind":"external","language":"jsts","metadata":{"unresolvedName":"soundStore.exportCustomAudioForBackup"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:importSoundBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:importSoundBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"importSoundBackup","symbolKind":"function","exported":true,"metadata":{"line":538,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:normalizeBackupCustomAudioMap",{"id":"symbol-name:normalizeBackupCustomAudioMap","kind":"symbol","language":"jsts","symbolName":"normalizeBackupCustomAudioMap","metadata":{"unresolvedName":"normalizeBackupCustomAudioMap"}}],["external:soundStore.importCustomAudioFromBackup",{"id":"external:soundStore.importCustomAudioFromBackup","kind":"external","language":"jsts","metadata":{"unresolvedName":"soundStore.importCustomAudioFromBackup"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:useSoundSettings",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:useSoundSettings","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","symbolName":"useSoundSettings","symbolKind":"function","exported":true,"metadata":{"line":554,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:computedColorToHex",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:computedColorToHex","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"computedColorToHex","symbolKind":"function","exported":false,"metadata":{"line":29,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:document.createElement('canvas').getContext",{"id":"external:document.createElement('canvas').getContext","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.createElement('canvas').getContext"}}],["external:((1 << 24) | (r << 16) | (g << 8) | b).toString(16).slice",{"id":"external:((1 << 24) | (r << 16) | (g << 8) | b).toString(16).slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"((1 << 24) | (r << 16) | (g << 8) | b).toString(16).slice"}}],["external:((1 << 24) | (r << 16) | (g << 8) | b).toString",{"id":"external:((1 << 24) | (r << 16) | (g << 8) | b).toString","kind":"external","language":"jsts","metadata":{"unresolvedName":"((1 << 24) | (r << 16) | (g << 8) | b).toString"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:clampFontScale",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:clampFontScale","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"clampFontScale","symbolKind":"function","exported":false,"metadata":{"line":88,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:parseCustomCSSSnippets",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:parseCustomCSSSnippets","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"parseCustomCSSSnippets","symbolKind":"function","exported":false,"metadata":{"line":210,"column":1,"cyclomaticComplexity":9,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:parsed.filter",{"id":"external:parsed.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"parsed.filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:getState",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:getState","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"getState","symbolKind":"function","exported":false,"metadata":{"line":345,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:getPreset",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:getPreset","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"getPreset","symbolKind":"function","exported":false,"metadata":{"line":417,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:getAvailablePresets",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:getAvailablePresets","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"getAvailablePresets","symbolKind":"function","exported":false,"metadata":{"line":422,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:builtinThemes.map",{"id":"external:builtinThemes.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"builtinThemes.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:getResolvedMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:getResolvedMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"getResolvedMode","symbolKind":"function","exported":false,"metadata":{"line":431,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setPreset",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setPreset","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"setPreset","symbolKind":"function","exported":false,"metadata":{"line":444,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.applyTheme",{"id":"external:this.applyTheme","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.applyTheme"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setColorMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setColorMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"setColorMode","symbolKind":"function","exported":false,"metadata":{"line":452,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCustomCSS",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCustomCSS","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"setCustomCSS","symbolKind":"function","exported":false,"metadata":{"line":460,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.applyCustomCSS",{"id":"external:this.applyCustomCSS","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.applyCustomCSS"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:saveCustomCSSSnippet",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:saveCustomCSSSnippet","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"saveCustomCSSSnippet","symbolKind":"function","exported":false,"metadata":{"line":467,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.persistCustomCSSSnippets",{"id":"external:this.persistCustomCSSSnippets","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.persistCustomCSSSnippets"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:updateCustomCSSSnippet",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:updateCustomCSSSnippet","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"updateCustomCSSSnippet","symbolKind":"function","exported":false,"metadata":{"line":485,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.state.customCSSSnippets.map",{"id":"external:this.state.customCSSSnippets.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.state.customCSSSnippets.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:deleteCustomCSSSnippet",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:deleteCustomCSSSnippet","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"deleteCustomCSSSnippet","symbolKind":"function","exported":false,"metadata":{"line":495,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.state.customCSSSnippets.filter",{"id":"external:this.state.customCSSSnippets.filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.state.customCSSSnippets.filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyCustomCSSSnippet",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyCustomCSSSnippet","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"applyCustomCSSSnippet","symbolKind":"function","exported":false,"metadata":{"line":512,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.state.customCSSSnippets.find",{"id":"external:this.state.customCSSSnippets.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.state.customCSSSnippets.find"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:clearActiveCustomCSSSnippet",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:clearActiveCustomCSSSnippet","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"clearActiveCustomCSSSnippet","symbolKind":"function","exported":false,"metadata":{"line":528,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCollapseUserMessages",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCollapseUserMessages","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"setCollapseUserMessages","symbolKind":"function","exported":false,"metadata":{"line":535,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setStepFinishDisplay",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setStepFinishDisplay","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"setStepFinishDisplay","symbolKind":"function","exported":false,"metadata":{"line":542,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCompletedAtFormat",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCompletedAtFormat","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"setCompletedAtFormat","symbolKind":"function","exported":false,"metadata":{"line":549,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setReasoningDisplayMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setReasoningDisplayMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"setReasoningDisplayMode","symbolKind":"function","exported":false,"metadata":{"line":556,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setWideMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setWideMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"setWideMode","symbolKind":"function","exported":false,"metadata":{"line":563,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:toggleWideMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:toggleWideMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"toggleWideMode","symbolKind":"function","exported":false,"metadata":{"line":570,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.setWideMode",{"id":"external:this.setWideMode","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.setWideMode"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setDiffStyle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setDiffStyle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"setDiffStyle","symbolKind":"function","exported":false,"metadata":{"line":574,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setDescriptiveToolSteps",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setDescriptiveToolSteps","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"setDescriptiveToolSteps","symbolKind":"function","exported":false,"metadata":{"line":581,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setInlineToolRequests",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setInlineToolRequests","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"setInlineToolRequests","symbolKind":"function","exported":false,"metadata":{"line":588,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCodeWordWrap",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCodeWordWrap","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"setCodeWordWrap","symbolKind":"function","exported":false,"metadata":{"line":595,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setUIFontScale",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setUIFontScale","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"setUIFontScale","symbolKind":"function","exported":false,"metadata":{"line":602,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:clampFontScale",{"id":"symbol-name:clampFontScale","kind":"symbol","language":"jsts","symbolName":"clampFontScale","metadata":{"unresolvedName":"clampFontScale"}}],["external:this.applyFontScale",{"id":"external:this.applyFontScale","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.applyFontScale"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCodeFontScale",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCodeFontScale","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"setCodeFontScale","symbolKind":"function","exported":false,"metadata":{"line":611,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setToolCardStyle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setToolCardStyle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"setToolCardStyle","symbolKind":"function","exported":false,"metadata":{"line":620,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setImmersiveMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setImmersiveMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"setImmersiveMode","symbolKind":"function","exported":false,"metadata":{"line":627,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCompactInlinePermission",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCompactInlinePermission","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"setCompactInlinePermission","symbolKind":"function","exported":false,"metadata":{"line":646,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setGlassEffect",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setGlassEffect","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"setGlassEffect","symbolKind":"function","exported":false,"metadata":{"line":653,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.applyGlassClass",{"id":"external:this.applyGlassClass","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.applyGlassClass"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setQueueFollowupMessages",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setQueueFollowupMessages","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"setQueueFollowupMessages","symbolKind":"function","exported":false,"metadata":{"line":661,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setManualTerminalTitles",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setManualTerminalTitles","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"setManualTerminalTitles","symbolKind":"function","exported":false,"metadata":{"line":668,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:init",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:init","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"init","symbolKind":"function","exported":false,"metadata":{"line":678,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:mediaQuery.addEventListener",{"id":"external:mediaQuery.addEventListener","kind":"external","language":"jsts","metadata":{"unresolvedName":"mediaQuery.addEventListener"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":846,"column":17,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyTheme",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyTheme","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"applyTheme","symbolKind":"function","exported":false,"metadata":{"line":694,"column":3,"cyclomaticComplexity":8,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.getResolvedMode",{"id":"external:this.getResolvedMode","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getResolvedMode"}}],["external:this.getPreset",{"id":"external:this.getPreset","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getPreset"}}],["external:this.injectThemeStyle",{"id":"external:this.injectThemeStyle","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.injectThemeStyle"}}],["external:getComputedStyle(root).getPropertyValue('--color-bg-100').trim",{"id":"external:getComputedStyle(root).getPropertyValue('--color-bg-100').trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"getComputedStyle(root).getPropertyValue('--color-bg-100').trim"}}],["external:getComputedStyle(root).getPropertyValue",{"id":"external:getComputedStyle(root).getPropertyValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"getComputedStyle(root).getPropertyValue"}}],["symbol-name:computedColorToHex",{"id":"symbol-name:computedColorToHex","kind":"symbol","language":"jsts","symbolName":"computedColorToHex","metadata":{"unresolvedName":"computedColorToHex"}}],["external:meta.setAttribute",{"id":"external:meta.setAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"meta.setAttribute"}}],["external:androidBridge.setSystemBars",{"id":"external:androidBridge.setSystemBars","kind":"external","language":"jsts","metadata":{"unresolvedName":"androidBridge.setSystemBars"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:injectThemeStyle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:injectThemeStyle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"injectThemeStyle","symbolKind":"function","exported":false,"metadata":{"line":737,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:document.head.appendChild",{"id":"external:document.head.appendChild","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.head.appendChild"}}],["symbol-name:themeColorsToCSSVars",{"id":"symbol-name:themeColorsToCSSVars","kind":"symbol","language":"jsts","symbolName":"themeColorsToCSSVars","metadata":{"unresolvedName":"themeColorsToCSSVars"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyFontScale",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyFontScale","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"applyFontScale","symbolKind":"function","exported":false,"metadata":{"line":760,"column":3,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:el.remove",{"id":"external:el.remove","kind":"external","language":"jsts","metadata":{"unresolvedName":"el.remove"}}],["external:vars.push",{"id":"external:vars.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"vars.push"}}],["external:vars.join",{"id":"external:vars.join","kind":"external","language":"jsts","metadata":{"unresolvedName":"vars.join"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyCustomCSS",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyCustomCSS","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"applyCustomCSS","symbolKind":"function","exported":false,"metadata":{"line":808,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.state.customCSS.trim",{"id":"external:this.state.customCSS.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.state.customCSS.trim"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyGlassClass",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyGlassClass","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"applyGlassClass","symbolKind":"function","exported":false,"metadata":{"line":826,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:persistCustomCSSSnippets",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:persistCustomCSSSnippets","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"persistCustomCSSSnippets","symbolKind":"function","exported":false,"metadata":{"line":835,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:emit",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:emit","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"emit","symbolKind":"function","exported":false,"metadata":{"line":850,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:normalizeThemeBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:normalizeThemeBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"normalizeThemeBackup","symbolKind":"function","exported":false,"metadata":{"line":858,"column":1,"cyclomaticComplexity":30,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:parseCustomCSSSnippets",{"id":"symbol-name:parseCustomCSSSnippets","kind":"symbol","language":"jsts","symbolName":"parseCustomCSSSnippets","metadata":{"unresolvedName":"parseCustomCSSSnippets"}}],["external:customCSSSnippets.some",{"id":"external:customCSSSnippets.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"customCSSSnippets.some"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:exportThemeBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:exportThemeBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"exportThemeBackup","symbolKind":"function","exported":true,"metadata":{"line":918,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:themeStore.getState",{"id":"external:themeStore.getState","kind":"external","language":"jsts","metadata":{"unresolvedName":"themeStore.getState"}}],["external:state.customCSSSnippets.map",{"id":"external:state.customCSSSnippets.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"state.customCSSSnippets.map"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:importThemeBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:importThemeBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","symbolName":"importThemeBackup","symbolKind":"function","exported":true,"metadata":{"line":927,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:normalizeThemeBackup",{"id":"symbol-name:normalizeThemeBackup","kind":"symbol","language":"jsts","symbolName":"normalizeThemeBackup","metadata":{"unresolvedName":"normalizeThemeBackup"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:getTodos",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:getTodos","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","symbolName":"getTodos","symbolKind":"function","exported":false,"metadata":{"line":50,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:setTodos",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:setTodos","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","symbolName":"setTodos","symbolKind":"function","exported":false,"metadata":{"line":57,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.statsCache.set",{"id":"external:this.statsCache.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.statsCache.set"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:clearTodos",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:clearTodos","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","symbolName":"clearTodos","symbolKind":"function","exported":false,"metadata":{"line":75,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.sessions.has",{"id":"external:this.sessions.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.sessions.has"}}],["external:this.statsCache.delete",{"id":"external:this.statsCache.delete","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.statsCache.delete"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:clearAll",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:clearAll","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","symbolName":"clearAll","symbolKind":"function","exported":false,"metadata":{"line":87,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.statsCache.clear",{"id":"external:this.statsCache.clear","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.statsCache.clear"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:getStats",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:getStats","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","symbolName":"getStats","symbolKind":"function","exported":false,"metadata":{"line":97,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.statsCache.get",{"id":"external:this.statsCache.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.statsCache.get"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:getCurrentTask",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:getCurrentTask","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","symbolName":"getCurrentTask","symbolKind":"function","exported":false,"metadata":{"line":104,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:this.getTodos",{"id":"external:this.getTodos","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.getTodos"}}],["external:todos.find",{"id":"external:todos.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"todos.find"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:getVersion",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:getVersion","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","symbolName":"getVersion","symbolKind":"function","exported":false,"metadata":{"line":112,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:subscribe",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:subscribe","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","symbolName":"subscribe","symbolKind":"function","exported":false,"metadata":{"line":120,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:notify",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:notify","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","symbolName":"notify","symbolKind":"function","exported":false,"metadata":{"line":125,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useStoreSubscription",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useStoreSubscription","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","symbolName":"useStoreSubscription","symbolKind":"function","exported":false,"metadata":{"line":143,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:todoStore.subscribe",{"id":"external:todoStore.subscribe","kind":"external","language":"jsts","metadata":{"unresolvedName":"todoStore.subscribe"}}],["external:todoStore.getVersion",{"id":"external:todoStore.getVersion","kind":"external","language":"jsts","metadata":{"unresolvedName":"todoStore.getVersion"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useTodos",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useTodos","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","symbolName":"useTodos","symbolKind":"function","exported":true,"metadata":{"line":153,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:useStoreSubscription",{"id":"symbol-name:useStoreSubscription","kind":"symbol","language":"jsts","symbolName":"useStoreSubscription","metadata":{"unresolvedName":"useStoreSubscription"}}],["external:todoStore.getTodos",{"id":"external:todoStore.getTodos","kind":"external","language":"jsts","metadata":{"unresolvedName":"todoStore.getTodos"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useTodoStats",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useTodoStats","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","symbolName":"useTodoStats","symbolKind":"function","exported":true,"metadata":{"line":161,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:todoStore.getStats",{"id":"external:todoStore.getStats","kind":"external","language":"jsts","metadata":{"unresolvedName":"todoStore.getStats"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useCurrentTask",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useCurrentTask","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","symbolName":"useCurrentTask","symbolKind":"function","exported":true,"metadata":{"line":169,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:todoStore.getCurrentTask",{"id":"external:todoStore.getCurrentTask","kind":"external","language":"jsts","metadata":{"unresolvedName":"todoStore.getCurrentTask"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","metadata":{"lineCount":110,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":105,"column":37,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:expect(compareVersions('v0.5.2', '0.5.1')).toBeGreaterThan",{"id":"external:expect(compareVersions('v0.5.2', '0.5.1')).toBeGreaterThan","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(compareVersions('v0.5.2', '0.5.1')).toBeGreaterThan"}}],["symbol-name:compareVersions",{"id":"symbol-name:compareVersions","kind":"symbol","language":"jsts","symbolName":"compareVersions","metadata":{"unresolvedName":"compareVersions"}}],["external:expect(compareVersions('0.5.1', 'v0.5.1')).toBe",{"id":"external:expect(compareVersions('0.5.1', 'v0.5.1')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(compareVersions('0.5.1', 'v0.5.1')).toBe"}}],["external:expect(compareVersions('0.5', '0.5.1')).toBeLessThan",{"id":"external:expect(compareVersions('0.5', '0.5.1')).toBeLessThan","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(compareVersions('0.5', '0.5.1')).toBeLessThan"}}],["external:expect(hasUpdateAvailable(baseState)).toBe",{"id":"external:expect(hasUpdateAvailable(baseState)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(hasUpdateAvailable(baseState)).toBe"}}],["external:expect(shouldShowUpdateToast(baseState)).toBe",{"id":"external:expect(shouldShowUpdateToast(baseState)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(shouldShowUpdateToast(baseState)).toBe"}}],["external:expect(shouldShowUpdateToast({ ...baseState, dismissedVersion: '0.5.2' })).toBe",{"id":"external:expect(shouldShowUpdateToast({ ...baseState, dismissedVersion: '0.5.2' })).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(shouldShowUpdateToast({ ...baseState, dismissedVersion: '0.5.2' })).toBe"}}],["external:store.checkForUpdates",{"id":"external:store.checkForUpdates","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.checkForUpdates"}}],["external:expect(store.getSnapshot().latestRelease?.version).toBe",{"id":"external:expect(store.getSnapshot().latestRelease?.version).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(store.getSnapshot().latestRelease?.version).toBe"}}],["external:store.getSnapshot",{"id":"external:store.getSnapshot","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.getSnapshot"}}],["external:expect(hasUpdateAvailable(store.getSnapshot())).toBe",{"id":"external:expect(hasUpdateAvailable(store.getSnapshot())).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(hasUpdateAvailable(store.getSnapshot())).toBe"}}],["external:store.dismissCurrentVersion",{"id":"external:store.dismissCurrentVersion","kind":"external","language":"jsts","metadata":{"unresolvedName":"store.dismissCurrentVersion"}}],["external:expect(store.getSnapshot().dismissedVersion).toBe",{"id":"external:expect(store.getSnapshot().dismissedVersion).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(store.getSnapshot().dismissedVersion).toBe"}}],["external:expect(shouldShowUpdateToast(store.getSnapshot())).toBe",{"id":"external:expect(shouldShowUpdateToast(store.getSnapshot())).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(shouldShowUpdateToast(store.getSnapshot())).toBe"}}],["external:expect(localStorage.getItem('piagentui:update-check')).toContain",{"id":"external:expect(localStorage.getItem('piagentui:update-check')).toContain","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(localStorage.getItem('piagentui:update-check')).toContain"}}],["external:expect(localStorage.getItem('opencode:update-check')).toBeNull",{"id":"external:expect(localStorage.getItem('opencode:update-check')).toBeNull","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(localStorage.getItem('opencode:update-check')).toBeNull"}}],["external:expect(RELEASES_API_URL).toBe",{"id":"external:expect(RELEASES_API_URL).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(RELEASES_API_URL).toBe"}}],["external:expect(RELEASES_PAGE_URL).toBe",{"id":"external:expect(RELEASES_PAGE_URL).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(RELEASES_PAGE_URL).toBe"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:isPlainObject",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:isPlainObject","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","symbolName":"isPlainObject","symbolKind":"function","exported":false,"metadata":{"line":41,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:normalizeVersion",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:normalizeVersion","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","symbolName":"normalizeVersion","symbolKind":"function","exported":true,"metadata":{"line":45,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:version.trim().replace(/^v/i, '').replace",{"id":"external:version.trim().replace(/^v/i, '').replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"version.trim().replace(/^v/i, '').replace"}}],["external:version.trim().replace",{"id":"external:version.trim().replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"version.trim().replace"}}],["external:version.trim",{"id":"external:version.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"version.trim"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:compareVersions",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:compareVersions","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","symbolName":"compareVersions","symbolKind":"function","exported":true,"metadata":{"line":49,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:normalizeVersion(a)\r\n .split('.')\r\n .map",{"id":"external:normalizeVersion(a)\r\n .split('.')\r\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalizeVersion(a)\r\n .split('.')\r\n .map"}}],["external:normalizeVersion(a)\r\n .split",{"id":"external:normalizeVersion(a)\r\n .split","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalizeVersion(a)\r\n .split"}}],["symbol-name:normalizeVersion",{"id":"symbol-name:normalizeVersion","kind":"symbol","language":"jsts","symbolName":"normalizeVersion","metadata":{"unresolvedName":"normalizeVersion"}}],["external:normalizeVersion(b)\r\n .split('.')\r\n .map",{"id":"external:normalizeVersion(b)\r\n .split('.')\r\n .map","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalizeVersion(b)\r\n .split('.')\r\n .map"}}],["external:normalizeVersion(b)\r\n .split",{"id":"external:normalizeVersion(b)\r\n .split","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalizeVersion(b)\r\n .split"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:hasUpdateAvailable",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:hasUpdateAvailable","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","symbolName":"hasUpdateAvailable","symbolKind":"function","exported":true,"metadata":{"line":66,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:shouldShowUpdateToast",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:shouldShowUpdateToast","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","symbolName":"shouldShowUpdateToast","symbolKind":"function","exported":true,"metadata":{"line":70,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:loadPersistedState",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:loadPersistedState","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","symbolName":"loadPersistedState","symbolKind":"function","exported":false,"metadata":{"line":77,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:persistState",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:persistState","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","symbolName":"persistState","symbolKind":"function","exported":false,"metadata":{"line":95,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:parseRelease",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:parseRelease","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","symbolName":"parseRelease","symbolKind":"function","exported":false,"metadata":{"line":109,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:isPlainObject",{"id":"symbol-name:isPlainObject","kind":"symbol","language":"jsts","symbolName":"isPlainObject","metadata":{"unresolvedName":"isPlainObject"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:getDefaultCurrentVersion",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:getDefaultCurrentVersion","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","symbolName":"getDefaultCurrentVersion","symbolKind":"function","exported":false,"metadata":{"line":130,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":202,"column":27,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:notify",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:notify","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","symbolName":"notify","symbolKind":"function","exported":false,"metadata":{"line":163,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:setState",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:setState","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","symbolName":"setState","symbolKind":"function","exported":false,"metadata":{"line":167,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:persistState",{"id":"symbol-name:persistState","kind":"symbol","language":"jsts","symbolName":"persistState","metadata":{"unresolvedName":"persistState"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:applyRelease",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:applyRelease","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","symbolName":"applyRelease","symbolKind":"function","exported":false,"metadata":{"line":173,"column":3,"cyclomaticComplexity":4,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:checkForUpdates",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:checkForUpdates","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","symbolName":"checkForUpdates","symbolKind":"function","exported":false,"metadata":{"line":185,"column":3,"cyclomaticComplexity":8,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:parseRelease",{"id":"symbol-name:parseRelease","kind":"symbol","language":"jsts","symbolName":"parseRelease","metadata":{"unresolvedName":"parseRelease"}}],["external:this.applyRelease",{"id":"external:this.applyRelease","kind":"external","language":"jsts","metadata":{"unresolvedName":"this.applyRelease"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:hideToastForCurrentVersion",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:hideToastForCurrentVersion","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","symbolName":"hideToastForCurrentVersion","symbolKind":"function","exported":false,"metadata":{"line":229,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:dismissCurrentVersion",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:dismissCurrentVersion","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","symbolName":"dismissCurrentVersion","symbolKind":"function","exported":false,"metadata":{"line":238,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:exportUpdateSettingsBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:exportUpdateSettingsBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","symbolName":"exportUpdateSettingsBackup","symbolKind":"function","exported":true,"metadata":{"line":250,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:updateStore.getSnapshot",{"id":"external:updateStore.getSnapshot","kind":"external","language":"jsts","metadata":{"unresolvedName":"updateStore.getSnapshot"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:importUpdateSettingsBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:importUpdateSettingsBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","symbolName":"importUpdateSettingsBackup","symbolKind":"function","exported":true,"metadata":{"line":259,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:useUpdateStore",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:useUpdateStore","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","symbolName":"useUpdateStore","symbolKind":"function","exported":true,"metadata":{"line":273,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","metadata":{"lineCount":84,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:@testing-library/jest-dom/vitest",{"id":"external:@testing-library/jest-dom/vitest","kind":"external","language":"jsts","metadata":{"source":"@testing-library/jest-dom/vitest"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:setItem",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:setItem","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","symbolName":"setItem","symbolKind":"function","exported":false,"metadata":{"line":11,"column":16,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:removeItem",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:removeItem","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","symbolName":"removeItem","symbolKind":"function","exported":false,"metadata":{"line":14,"column":19,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:clear",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:clear","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","symbolName":"clear","symbolKind":"function","exported":false,"metadata":{"line":17,"column":14,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:observe",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:observe","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","symbolName":"observe","symbolKind":"function","exported":false,"metadata":{"line":26,"column":5,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:unobserve",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:unobserve","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","symbolName":"unobserve","symbolKind":"function","exported":false,"metadata":{"line":27,"column":5,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:disconnect",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:disconnect","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","symbolName":"disconnect","symbolKind":"function","exported":false,"metadata":{"line":28,"column":5,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":38,"column":42,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:[Symbol.iterator]",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:[Symbol.iterator]","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","symbolName":"[Symbol.iterator]","symbolKind":"function","exported":false,"metadata":{"line":45,"column":24,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:addListener",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:addListener","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","symbolName":"addListener","symbolKind":"function","exported":false,"metadata":{"line":76,"column":20,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:removeListener",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:removeListener","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","symbolName":"removeListener","symbolKind":"function","exported":false,"metadata":{"line":77,"column":23,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:addEventListener",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:addEventListener","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","symbolName":"addEventListener","symbolKind":"function","exported":false,"metadata":{"line":78,"column":25,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:removeEventListener",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:removeEventListener","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","symbolName":"removeEventListener","symbolKind":"function","exported":false,"metadata":{"line":79,"column":28,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts","metadata":{"lineCount":980,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts:getThemePreset",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts:getThemePreset","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts","symbolName":"getThemePreset","symbolKind":"function","exported":true,"metadata":{"line":917,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:builtinThemes.find",{"id":"external:builtinThemes.find","kind":"external","language":"jsts","metadata":{"unresolvedName":"builtinThemes.find"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts:themeColorsToCSSVars",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts:themeColorsToCSSVars","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts","symbolName":"themeColorsToCSSVars","symbolKind":"function","exported":true,"metadata":{"line":924,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:lines.push",{"id":"external:lines.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"lines.push"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/agent.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/agent.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/agent.ts","metadata":{"lineCount":16,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/common.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/common.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/common.ts","metadata":{"lineCount":38,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/message.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/message.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/message.ts","metadata":{"lineCount":72,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/permission.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/permission.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/permission.ts","metadata":{"lineCount":43,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/project.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/project.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/project.ts","metadata":{"lineCount":22,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/file.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/file.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/file.ts","metadata":{"lineCount":68,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/index.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/index.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/index.ts","metadata":{"lineCount":211,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/chat.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/chat.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/chat.ts","metadata":{"lineCount":131,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts","metadata":{"lineCount":86,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:isUserMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:isUserMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts","symbolName":"isUserMessage","symbolKind":"function","exported":true,"metadata":{"line":41,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:isAssistantMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:isAssistantMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts","symbolName":"isAssistantMessage","symbolKind":"function","exported":true,"metadata":{"line":46,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:hasVisibleContent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:hasVisibleContent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts","symbolName":"hasVisibleContent","symbolKind":"function","exported":true,"metadata":{"line":51,"column":1,"cyclomaticComplexity":8,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":52,"column":29,"cyclomaticComplexity":8,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:getMessageText",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:getMessageText","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts","symbolName":"getMessageText","symbolKind":"function","exported":true,"metadata":{"line":71,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:message.parts\r\n .filter",{"id":"external:message.parts\r\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"message.parts\r\n .filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isUserMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isUserMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","symbolName":"isUserMessage","symbolKind":"function","exported":true,"metadata":{"line":317,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isAssistantMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isAssistantMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","symbolName":"isAssistantMessage","symbolKind":"function","exported":true,"metadata":{"line":322,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isToolPart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isToolPart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","symbolName":"isToolPart","symbolKind":"function","exported":true,"metadata":{"line":327,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleTextPart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleTextPart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","symbolName":"isVisibleTextPart","symbolKind":"function","exported":true,"metadata":{"line":332,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleReasoningPart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleReasoningPart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","symbolName":"isVisibleReasoningPart","symbolKind":"function","exported":true,"metadata":{"line":337,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isRenderablePart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isRenderablePart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","symbolName":"isRenderablePart","symbolKind":"function","exported":true,"metadata":{"line":342,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isAbortedMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isAbortedMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","symbolName":"isAbortedMessage","symbolKind":"function","exported":true,"metadata":{"line":361,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:hasRenderableParts",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:hasRenderableParts","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","symbolName":"hasRenderableParts","symbolKind":"function","exported":true,"metadata":{"line":365,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:hasVisibleContent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:hasVisibleContent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","symbolName":"hasVisibleContent","symbolKind":"function","exported":true,"metadata":{"line":370,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":true,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:getMessageText",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:getMessageText","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","symbolName":"getMessageText","symbolKind":"function","exported":true,"metadata":{"line":375,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts","metadata":{"lineCount":27,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts","metadata":{"lineCount":31,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":16,"column":63,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:collectActiveDirectories",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:collectActiveDirectories","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts","symbolName":"collectActiveDirectories","symbolKind":"function","exported":true,"metadata":{"line":10,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:directories.some",{"id":"external:directories.some","kind":"external","language":"jsts","metadata":{"unresolvedName":"directories.some"}}],["external:directories.push",{"id":"external:directories.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"directories.push"}}],["symbol-name:pushDirectory",{"id":"symbol-name:pushDirectory","kind":"symbol","language":"jsts","symbolName":"pushDirectory","metadata":{"unresolvedName":"pushDirectory"}}],["external:paneDirectories.forEach",{"id":"external:paneDirectories.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"paneDirectories.forEach"}}],["external:projectDirectories.forEach",{"id":"external:projectDirectories.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"projectDirectories.forEach"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:pushDirectory",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:pushDirectory","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts","symbolName":"pushDirectory","symbolKind":"function","exported":false,"metadata":{"line":18,"column":25,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:stripAnsi",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:stripAnsi","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts","symbolName":"stripAnsi","symbolKind":"function","exported":true,"metadata":{"line":17,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:parseAnsi",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:parseAnsi","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts","symbolName":"parseAnsi","symbolKind":"function","exported":true,"metadata":{"line":64,"column":1,"cyclomaticComplexity":22,"maxNestingDepth":10,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:ANSI_RE.exec",{"id":"external:ANSI_RE.exec","kind":"external","language":"jsts","metadata":{"unresolvedName":"ANSI_RE.exec"}}],["external:match[0].slice",{"id":"external:match[0].slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"match[0].slice"}}],["external:params.split(';').map",{"id":"external:params.split(';').map","kind":"external","language":"jsts","metadata":{"unresolvedName":"params.split(';').map"}}],["external:params.split",{"id":"external:params.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"params.split"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:hasAnsi",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:hasAnsi","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts","symbolName":"hasAnsi","symbolKind":"function","exported":true,"metadata":{"line":138,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":true,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:ANSI_RE.test",{"id":"external:ANSI_RE.test","kind":"external","language":"jsts","metadata":{"unresolvedName":"ANSI_RE.test"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts","metadata":{"lineCount":60,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:restoreProperty",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:restoreProperty","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts","symbolName":"restoreProperty","symbolKind":"function","exported":false,"metadata":{"line":7,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:Reflect.deleteProperty",{"id":"external:Reflect.deleteProperty","kind":"external","language":"jsts","metadata":{"unresolvedName":"Reflect.deleteProperty"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":41,"column":60,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:restoreProperty",{"id":"symbol-name:restoreProperty","kind":"symbol","language":"jsts","symbolName":"restoreProperty","metadata":{"unresolvedName":"restoreProperty"}}],["external:expect(writeText).toHaveBeenCalledWith",{"id":"external:expect(writeText).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(writeText).toHaveBeenCalledWith"}}],["external:expect(execCommand).not.toHaveBeenCalled",{"id":"external:expect(execCommand).not.toHaveBeenCalled","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(execCommand).not.toHaveBeenCalled"}}],["external:vi.fn().mockRejectedValue",{"id":"external:vi.fn().mockRejectedValue","kind":"external","language":"jsts","metadata":{"unresolvedName":"vi.fn().mockRejectedValue"}}],["external:expect(execCommand).toHaveBeenCalledWith",{"id":"external:expect(execCommand).toHaveBeenCalledWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(execCommand).toHaveBeenCalledWith"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts","symbolName":"fallbackCopyText","symbolKind":"function","exported":false,"metadata":{"line":1,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:textArea.setAttribute",{"id":"external:textArea.setAttribute","kind":"external","language":"jsts","metadata":{"unresolvedName":"textArea.setAttribute"}}],["external:document.getSelection",{"id":"external:document.getSelection","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.getSelection"}}],["external:selection.getRangeAt(index).cloneRange",{"id":"external:selection.getRangeAt(index).cloneRange","kind":"external","language":"jsts","metadata":{"unresolvedName":"selection.getRangeAt(index).cloneRange"}}],["external:textArea.focus",{"id":"external:textArea.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"textArea.focus"}}],["external:textArea.select",{"id":"external:textArea.select","kind":"external","language":"jsts","metadata":{"unresolvedName":"textArea.select"}}],["external:textArea.setSelectionRange",{"id":"external:textArea.setSelectionRange","kind":"external","language":"jsts","metadata":{"unresolvedName":"textArea.setSelectionRange"}}],["external:document.execCommand",{"id":"external:document.execCommand","kind":"external","language":"jsts","metadata":{"unresolvedName":"document.execCommand"}}],["external:selection.removeAllRanges",{"id":"external:selection.removeAllRanges","kind":"external","language":"jsts","metadata":{"unresolvedName":"selection.removeAllRanges"}}],["external:savedRanges.forEach",{"id":"external:savedRanges.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"savedRanges.forEach"}}],["external:selection.addRange",{"id":"external:selection.addRange","kind":"external","language":"jsts","metadata":{"unresolvedName":"selection.addRange"}}],["external:activeElement?.focus",{"id":"external:activeElement?.focus","kind":"external","language":"jsts","metadata":{"unresolvedName":"activeElement?.focus"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts","symbolName":"copyTextToClipboard","symbolKind":"function","exported":true,"metadata":{"line":40,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:fallbackCopyText",{"id":"symbol-name:fallbackCopyText","kind":"symbol","language":"jsts","symbolName":"fallbackCopyText","metadata":{"unresolvedName":"fallbackCopyText"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:readTextFromClipboard",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:readTextFromClipboard","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts","symbolName":"readTextFromClipboard","symbolKind":"function","exported":true,"metadata":{"line":59,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:navigator.clipboard.readText",{"id":"external:navigator.clipboard.readText","kind":"external","language":"jsts","metadata":{"unresolvedName":"navigator.clipboard.readText"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/dateUtils.ts:formatRelativeTime",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/dateUtils.ts:formatRelativeTime","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/dateUtils.ts","symbolName":"formatRelativeTime","symbolKind":"function","exported":true,"metadata":{"line":3,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:new Date(timestamp).toLocaleDateString",{"id":"external:new Date(timestamp).toLocaleDateString","kind":"external","language":"jsts","metadata":{"unresolvedName":"new Date(timestamp).toLocaleDateString"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts:extractContentFromUnifiedDiff",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts:extractContentFromUnifiedDiff","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts","symbolName":"extractContentFromUnifiedDiff","symbolKind":"function","exported":true,"metadata":{"line":1,"column":1,"cyclomaticComplexity":11,"maxNestingDepth":4,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:diff.split",{"id":"external:diff.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"diff.split"}}],["external:before.trimEnd",{"id":"external:before.trimEnd","kind":"external","language":"jsts","metadata":{"unresolvedName":"before.trimEnd"}}],["external:after.trimEnd",{"id":"external:after.trimEnd","kind":"external","language":"jsts","metadata":{"unresolvedName":"after.trimEnd"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:resetPathModeCache",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:resetPathModeCache","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","symbolName":"resetPathModeCache","symbolKind":"function","exported":true,"metadata":{"line":41,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:subscribePathMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:subscribePathMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","symbolName":"subscribePathMode","symbolKind":"function","exported":true,"metadata":{"line":53,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:notifyListeners",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:notifyListeners","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","symbolName":"notifyListeners","symbolKind":"function","exported":false,"metadata":{"line":61,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getPathMode",{"id":"symbol-name:getPathMode","kind":"symbol","language":"jsts","symbolName":"getPathMode","metadata":{"unresolvedName":"getPathMode"}}],["external:_listeners.forEach",{"id":"external:_listeners.forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"_listeners.forEach"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getPathMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getPathMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","symbolName":"getPathMode","symbolKind":"function","exported":true,"metadata":{"line":70,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":3,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:setPathMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:setPathMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","symbolName":"setPathMode","symbolKind":"function","exported":true,"metadata":{"line":89,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:notifyListeners",{"id":"symbol-name:notifyListeners","kind":"symbol","language":"jsts","symbolName":"notifyListeners","metadata":{"unresolvedName":"notifyListeners"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDetectedPathStyle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDetectedPathStyle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","symbolName":"getDetectedPathStyle","symbolKind":"function","exported":true,"metadata":{"line":102,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:setDetectedPathStyle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:setDetectedPathStyle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","symbolName":"setDetectedPathStyle","symbolKind":"function","exported":true,"metadata":{"line":117,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getEffectivePathStyle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getEffectivePathStyle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","symbolName":"getEffectivePathStyle","symbolKind":"function","exported":true,"metadata":{"line":136,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isWindowsPathMode",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isWindowsPathMode","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","symbolName":"isWindowsPathMode","symbolKind":"function","exported":true,"metadata":{"line":147,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","symbolName":"formatPathForApi","symbolKind":"function","exported":true,"metadata":{"line":156,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:dir.replace",{"id":"external:dir.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"dir.replace"}}],["external:/^[a-zA-Z]:$/.test",{"id":"external:/^[a-zA-Z]:$/.test","kind":"external","language":"jsts","metadata":{"unresolvedName":"/^[a-zA-Z]:$/.test"}}],["symbol-name:isWindowsPathMode",{"id":"symbol-name:isWindowsPathMode","kind":"symbol","language":"jsts","symbolName":"isWindowsPathMode","metadata":{"unresolvedName":"isWindowsPathMode"}}],["external:trimmed.replace",{"id":"external:trimmed.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"trimmed.replace"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:detectPathStyleFromResponse",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:detectPathStyleFromResponse","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","symbolName":"detectPathStyleFromResponse","symbolKind":"function","exported":true,"metadata":{"line":179,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:autoDetectPathStyle",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:autoDetectPathStyle","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","symbolName":"autoDetectPathStyle","symbolKind":"function","exported":true,"metadata":{"line":201,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:detectPathStyleFromResponse",{"id":"symbol-name:detectPathStyleFromResponse","kind":"symbol","language":"jsts","symbolName":"detectPathStyleFromResponse","metadata":{"unresolvedName":"detectPathStyleFromResponse"}}],["symbol-name:setDetectedPathStyle",{"id":"symbol-name:setDetectedPathStyle","kind":"symbol","language":"jsts","symbolName":"setDetectedPathStyle","metadata":{"unresolvedName":"setDetectedPathStyle"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","symbolName":"normalizeToForwardSlash","symbolKind":"function","exported":true,"metadata":{"line":220,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:dir\r\n .replace(/\\\\/g, '/') // 反斜杠 → 正斜杠\r\n .replace",{"id":"external:dir\r\n .replace(/\\\\/g, '/') // 反斜杠 → 正斜杠\r\n .replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"dir\r\n .replace(/\\\\/g, '/') // 反斜杠 → 正斜杠\r\n .replace"}}],["external:dir\r\n .replace",{"id":"external:dir\r\n .replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"dir\r\n .replace"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeForComparison",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeForComparison","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","symbolName":"normalizeForComparison","symbolKind":"function","exported":true,"metadata":{"line":236,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","symbolName":"isSameDirectory","symbolKind":"function","exported":true,"metadata":{"line":252,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:normalizeForComparison",{"id":"symbol-name:normalizeForComparison","kind":"symbol","language":"jsts","symbolName":"normalizeForComparison","metadata":{"unresolvedName":"normalizeForComparison"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDirectoryName",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDirectoryName","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","symbolName":"getDirectoryName","symbolKind":"function","exported":true,"metadata":{"line":263,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isWindowsAbsolutePath",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isWindowsAbsolutePath","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","symbolName":"isWindowsAbsolutePath","symbolKind":"function","exported":true,"metadata":{"line":283,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":true,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isAbsolutePath",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isAbsolutePath","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","symbolName":"isAbsolutePath","symbolKind":"function","exported":true,"metadata":{"line":290,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:isWindowsAbsolutePath",{"id":"symbol-name:isWindowsAbsolutePath","kind":"symbol","language":"jsts","symbolName":"isWindowsAbsolutePath","metadata":{"unresolvedName":"isWindowsAbsolutePath"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:base64ToBytes",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:base64ToBytes","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","symbolName":"base64ToBytes","symbolKind":"function","exported":false,"metadata":{"line":14,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:triggerBrowserDownload",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:triggerBrowserDownload","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","symbolName":"triggerBrowserDownload","symbolKind":"function","exported":false,"metadata":{"line":26,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":94,"column":41,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:tauriSaveFile",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:tauriSaveFile","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","symbolName":"tauriSaveFile","symbolKind":"function","exported":false,"metadata":{"line":45,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:ext.toUpperCase",{"id":"external:ext.toUpperCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"ext.toUpperCase"}}],["symbol-name:save",{"id":"symbol-name:save","kind":"symbol","language":"jsts","symbolName":"save","metadata":{"unresolvedName":"save"}}],["symbol-name:writeFile",{"id":"symbol-name:writeFile","kind":"symbol","language":"jsts","symbolName":"writeFile","metadata":{"unresolvedName":"writeFile"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:downloadFileContent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:downloadFileContent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","symbolName":"downloadFileContent","symbolKind":"function","exported":true,"metadata":{"line":72,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:base64ToBytes",{"id":"symbol-name:base64ToBytes","kind":"symbol","language":"jsts","symbolName":"base64ToBytes","metadata":{"unresolvedName":"base64ToBytes"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:saveData",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:saveData","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","symbolName":"saveData","symbolKind":"function","exported":true,"metadata":{"line":92,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:tauriSaveFile(data, fileName).catch",{"id":"external:tauriSaveFile(data, fileName).catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"tauriSaveFile(data, fileName).catch"}}],["symbol-name:tauriSaveFile",{"id":"symbol-name:tauriSaveFile","kind":"symbol","language":"jsts","symbolName":"tauriSaveFile","metadata":{"unresolvedName":"tauriSaveFile"}}],["symbol-name:triggerBrowserDownload",{"id":"symbol-name:triggerBrowserDownload","kind":"symbol","language":"jsts","symbolName":"triggerBrowserDownload","metadata":{"unresolvedName":"triggerBrowserDownload"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:logError",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:logError","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","symbolName":"logError","symbolKind":"function","exported":true,"metadata":{"line":34,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:withErrorHandling",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:withErrorHandling","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","symbolName":"withErrorHandling","symbolKind":"function","exported":true,"metadata":{"line":50,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:fn().catch",{"id":"external:fn().catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"fn().catch"}}],["symbol-name:logError",{"id":"symbol-name:logError","kind":"symbol","language":"jsts","symbolName":"logError","metadata":{"unresolvedName":"logError"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":87,"column":10,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:createErrorHandler",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:createErrorHandler","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","symbolName":"createErrorHandler","symbolKind":"function","exported":true,"metadata":{"line":61,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:handleError",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:handleError","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","symbolName":"handleError","symbolKind":"function","exported":true,"metadata":{"line":86,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","metadata":{"lineCount":48,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":42,"column":53,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(formatDuration(999)).toBe",{"id":"external:expect(formatDuration(999)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatDuration(999)).toBe"}}],["external:expect(formatDuration(123.456)).toBe",{"id":"external:expect(formatDuration(123.456)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatDuration(123.456)).toBe"}}],["external:expect(formatDuration(1500)).toBe",{"id":"external:expect(formatDuration(1500)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatDuration(1500)).toBe"}}],["external:expect(formatDuration((3 * 60 + 12) * 1000)).toBe",{"id":"external:expect(formatDuration((3 * 60 + 12) * 1000)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatDuration((3 * 60 + 12) * 1000)).toBe"}}],["external:expect(formatDuration((1 * 60 * 60 + 21 * 60 + 12) * 1000)).toBe",{"id":"external:expect(formatDuration((1 * 60 * 60 + 21 * 60 + 12) * 1000)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatDuration((1 * 60 * 60 + 21 * 60 + 12) * 1000)).toBe"}}],["external:expect(formatDuration(60 * 60 * 1000)).toBe",{"id":"external:expect(formatDuration(60 * 60 * 1000)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatDuration(60 * 60 * 1000)).toBe"}}],["external:expect(formatDuration(((24 + 21) * 60 + 10) * 60 * 1000)).toBe",{"id":"external:expect(formatDuration(((24 + 21) * 60 + 10) * 60 * 1000)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatDuration(((24 + 21) * 60 + 10) * 60 * 1000)).toBe"}}],["external:expect(formatDuration(24 * 60 * 60 * 1000)).toBe",{"id":"external:expect(formatDuration(24 * 60 * 60 * 1000)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatDuration(24 * 60 * 60 * 1000)).toBe"}}],["external:new Date(2026, 3, 17, 10, 30, 45).getTime",{"id":"external:new Date(2026, 3, 17, 10, 30, 45).getTime","kind":"external","language":"jsts","metadata":{"unresolvedName":"new Date(2026, 3, 17, 10, 30, 45).getTime"}}],["external:expect(formatTime(ms)).toBe",{"id":"external:expect(formatTime(ms)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatTime(ms)).toBe"}}],["symbol-name:formatTime",{"id":"symbol-name:formatTime","kind":"symbol","language":"jsts","symbolName":"formatTime","metadata":{"unresolvedName":"formatTime"}}],["external:expect(formatDateTime(ms)).toBe",{"id":"external:expect(formatDateTime(ms)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatDateTime(ms)).toBe"}}],["symbol-name:formatDateTime",{"id":"symbol-name:formatDateTime","kind":"symbol","language":"jsts","symbolName":"formatDateTime","metadata":{"unresolvedName":"formatDateTime"}}],["external:expect(formatDetailedDateTime(ms)).toBe",{"id":"external:expect(formatDetailedDateTime(ms)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatDetailedDateTime(ms)).toBe"}}],["external:expect(formatCompletedAt(ms, 'time')).toBe",{"id":"external:expect(formatCompletedAt(ms, 'time')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatCompletedAt(ms, 'time')).toBe"}}],["external:expect(formatCompletedAt(ms, 'dateTime')).toBe",{"id":"external:expect(formatCompletedAt(ms, 'dateTime')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatCompletedAt(ms, 'dateTime')).toBe"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatToolName",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatToolName","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","symbolName":"formatToolName","symbolKind":"function","exported":true,"metadata":{"line":9,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:name.replace(/[-_]/g, ' ').replace",{"id":"external:name.replace(/[-_]/g, ' ').replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"name.replace(/[-_]/g, ' ').replace"}}],["external:c.toUpperCase",{"id":"external:c.toUpperCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"c.toUpperCase"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","symbolName":"formatDuration","symbolKind":"function","exported":true,"metadata":{"line":14,"column":1,"cyclomaticComplexity":10,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:s.toFixed",{"id":"external:s.toFixed","kind":"external","language":"jsts","metadata":{"unresolvedName":"s.toFixed"}}],["external:[`${d}d`, h > 0 ? `${h}h` : '', m > 0 ? `${m}m` : ''].filter(Boolean).join",{"id":"external:[`${d}d`, h > 0 ? `${h}h` : '', m > 0 ? `${m}m` : ''].filter(Boolean).join","kind":"external","language":"jsts","metadata":{"unresolvedName":"[`${d}d`, h > 0 ? `${h}h` : '', m > 0 ? `${m}m` : ''].filter(Boolean).join"}}],["external:[`${d}d`, h > 0 ? `${h}h` : '', m > 0 ? `${m}m` : ''].filter",{"id":"external:[`${d}d`, h > 0 ? `${h}h` : '', m > 0 ? `${m}m` : ''].filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"[`${d}d`, h > 0 ? `${h}h` : '', m > 0 ? `${m}m` : ''].filter"}}],["external:[`${h}h`, m > 0 ? `${m}m` : '', remS > 0 ? `${remS}s` : ''].filter",{"id":"external:[`${h}h`, m > 0 ? `${m}m` : '', remS > 0 ? `${remS}s` : ''].filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"[`${h}h`, m > 0 ? `${m}m` : '', remS > 0 ? `${remS}s` : ''].filter"}}],["external:[`${m}m`, remS > 0 ? `${remS}s` : ''].filter(Boolean).join",{"id":"external:[`${m}m`, remS > 0 ? `${remS}s` : ''].filter(Boolean).join","kind":"external","language":"jsts","metadata":{"unresolvedName":"[`${m}m`, remS > 0 ? `${remS}s` : ''].filter(Boolean).join"}}],["external:[`${m}m`, remS > 0 ? `${remS}s` : ''].filter",{"id":"external:[`${m}m`, remS > 0 ? `${remS}s` : ''].filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"[`${m}m`, remS > 0 ? `${remS}s` : ''].filter"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCost",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCost","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","symbolName":"formatCost","symbolKind":"function","exported":true,"metadata":{"line":32,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:cost.toFixed",{"id":"external:cost.toFixed","kind":"external","language":"jsts","metadata":{"unresolvedName":"cost.toFixed"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatTime",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatTime","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","symbolName":"formatTime","symbolKind":"function","exported":true,"metadata":{"line":41,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:date.getHours().toString().padStart",{"id":"external:date.getHours().toString().padStart","kind":"external","language":"jsts","metadata":{"unresolvedName":"date.getHours().toString().padStart"}}],["external:date.getHours().toString",{"id":"external:date.getHours().toString","kind":"external","language":"jsts","metadata":{"unresolvedName":"date.getHours().toString"}}],["external:date.getHours",{"id":"external:date.getHours","kind":"external","language":"jsts","metadata":{"unresolvedName":"date.getHours"}}],["external:date.getMinutes().toString().padStart",{"id":"external:date.getMinutes().toString().padStart","kind":"external","language":"jsts","metadata":{"unresolvedName":"date.getMinutes().toString().padStart"}}],["external:date.getMinutes().toString",{"id":"external:date.getMinutes().toString","kind":"external","language":"jsts","metadata":{"unresolvedName":"date.getMinutes().toString"}}],["external:date.getMinutes",{"id":"external:date.getMinutes","kind":"external","language":"jsts","metadata":{"unresolvedName":"date.getMinutes"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDateTime",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDateTime","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","symbolName":"formatDateTime","symbolKind":"function","exported":true,"metadata":{"line":49,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:date.getFullYear().toString().padStart",{"id":"external:date.getFullYear().toString().padStart","kind":"external","language":"jsts","metadata":{"unresolvedName":"date.getFullYear().toString().padStart"}}],["external:date.getFullYear().toString",{"id":"external:date.getFullYear().toString","kind":"external","language":"jsts","metadata":{"unresolvedName":"date.getFullYear().toString"}}],["external:date.getFullYear",{"id":"external:date.getFullYear","kind":"external","language":"jsts","metadata":{"unresolvedName":"date.getFullYear"}}],["external:(date.getMonth() + 1).toString().padStart",{"id":"external:(date.getMonth() + 1).toString().padStart","kind":"external","language":"jsts","metadata":{"unresolvedName":"(date.getMonth() + 1).toString().padStart"}}],["external:(date.getMonth() + 1).toString",{"id":"external:(date.getMonth() + 1).toString","kind":"external","language":"jsts","metadata":{"unresolvedName":"(date.getMonth() + 1).toString"}}],["external:date.getMonth",{"id":"external:date.getMonth","kind":"external","language":"jsts","metadata":{"unresolvedName":"date.getMonth"}}],["external:date.getDate().toString().padStart",{"id":"external:date.getDate().toString().padStart","kind":"external","language":"jsts","metadata":{"unresolvedName":"date.getDate().toString().padStart"}}],["external:date.getDate().toString",{"id":"external:date.getDate().toString","kind":"external","language":"jsts","metadata":{"unresolvedName":"date.getDate().toString"}}],["external:date.getDate",{"id":"external:date.getDate","kind":"external","language":"jsts","metadata":{"unresolvedName":"date.getDate"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","symbolName":"formatDetailedDateTime","symbolKind":"function","exported":true,"metadata":{"line":58,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:date.getSeconds().toString().padStart",{"id":"external:date.getSeconds().toString().padStart","kind":"external","language":"jsts","metadata":{"unresolvedName":"date.getSeconds().toString().padStart"}}],["external:date.getSeconds().toString",{"id":"external:date.getSeconds().toString","kind":"external","language":"jsts","metadata":{"unresolvedName":"date.getSeconds().toString"}}],["external:date.getSeconds",{"id":"external:date.getSeconds","kind":"external","language":"jsts","metadata":{"unresolvedName":"date.getSeconds"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCompletedAt",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCompletedAt","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","symbolName":"formatCompletedAt","symbolKind":"function","exported":true,"metadata":{"line":70,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatNumber",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatNumber","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","symbolName":"formatNumber","symbolKind":"function","exported":true,"metadata":{"line":75,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:(num / 1000000).toFixed",{"id":"external:(num / 1000000).toFixed","kind":"external","language":"jsts","metadata":{"unresolvedName":"(num / 1000000).toFixed"}}],["external:(num / 1000).toFixed",{"id":"external:(num / 1000).toFixed","kind":"external","language":"jsts","metadata":{"unresolvedName":"(num / 1000).toFixed"}}],["external:num.toString",{"id":"external:num.toString","kind":"external","language":"jsts","metadata":{"unresolvedName":"num.toString"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/index.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/index.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/index.ts","metadata":{"lineCount":10,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:normalizeLanguage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:normalizeLanguage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts","symbolName":"normalizeLanguage","symbolKind":"function","exported":true,"metadata":{"line":7,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:lang.toLowerCase",{"id":"external:lang.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"lang.toLowerCase"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:detectLanguage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:detectLanguage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts","symbolName":"detectLanguage","symbolKind":"function","exported":true,"metadata":{"line":19,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:filePath.split(/[/\\\\]/).pop()?.toLowerCase",{"id":"external:filePath.split(/[/\\\\]/).pop()?.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"filePath.split(/[/\\\\]/).pop()?.toLowerCase"}}],["external:filePath.split('.').pop()?.toLowerCase",{"id":"external:filePath.split('.').pop()?.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"filePath.split('.').pop()?.toLowerCase"}}],["external:filePath.split('.').pop",{"id":"external:filePath.split('.').pop","kind":"external","language":"jsts","metadata":{"unresolvedName":"filePath.split('.').pop"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts:getLineCount",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts:getLineCount","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts","symbolName":"getLineCount","symbolKind":"function","exported":true,"metadata":{"line":1,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:text.charCodeAt",{"id":"external:text.charCodeAt","kind":"external","language":"jsts","metadata":{"unresolvedName":"text.charCodeAt"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts:getLineNumberColumnWidth",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts:getLineNumberColumnWidth","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts","symbolName":"getLineNumberColumnWidth","symbolKind":"function","exported":true,"metadata":{"line":11,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/logger.ts:noop",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/logger.ts:noop","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/logger.ts","symbolName":"noop","symbolKind":"function","exported":false,"metadata":{"line":11,"column":14,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:basename",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:basename","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts","symbolName":"basename","symbolKind":"function","exported":false,"metadata":{"line":429,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:path.replace(/\\\\/g, '/').split('/').filter(Boolean).pop",{"id":"external:path.replace(/\\\\/g, '/').split('/').filter(Boolean).pop","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.replace(/\\\\/g, '/').split('/').filter(Boolean).pop"}}],["external:path.replace(/\\\\/g, '/').split('/').filter",{"id":"external:path.replace(/\\\\/g, '/').split('/').filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.replace(/\\\\/g, '/').split('/').filter"}}],["external:path.replace(/\\\\/g, '/').split",{"id":"external:path.replace(/\\\\/g, '/').split","kind":"external","language":"jsts","metadata":{"unresolvedName":"path.replace(/\\\\/g, '/').split"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:resolveFileIcon",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:resolveFileIcon","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts","symbolName":"resolveFileIcon","symbolKind":"function","exported":false,"metadata":{"line":433,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:basename(path).toLowerCase",{"id":"external:basename(path).toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"basename(path).toLowerCase"}}],["symbol-name:basename",{"id":"symbol-name:basename","kind":"symbol","language":"jsts","symbolName":"basename","metadata":{"unresolvedName":"basename"}}],["external:name.endsWith",{"id":"external:name.endsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"name.endsWith"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:resolveFolderIcon",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:resolveFolderIcon","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts","symbolName":"resolveFolderIcon","symbolKind":"function","exported":false,"metadata":{"line":448,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:getMaterialIconUrl",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:getMaterialIconUrl","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts","symbolName":"getMaterialIconUrl","symbolKind":"function","exported":true,"metadata":{"line":458,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:resolveFolderIcon",{"id":"symbol-name:resolveFolderIcon","kind":"symbol","language":"jsts","symbolName":"resolveFolderIcon","metadata":{"unresolvedName":"resolveFolderIcon"}}],["symbol-name:resolveFileIcon",{"id":"symbol-name:resolveFileIcon","kind":"symbol","language":"jsts","symbolName":"resolveFileIcon","metadata":{"unresolvedName":"resolveFileIcon"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:getEnvelopeInfo",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:getEnvelopeInfo","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","symbolName":"getEnvelopeInfo","symbolKind":"function","exported":false,"metadata":{"line":7,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toUIMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toUIMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","symbolName":"toUIMessage","symbolKind":"function","exported":true,"metadata":{"line":11,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getEnvelopeInfo",{"id":"symbol-name:getEnvelopeInfo","kind":"symbol","language":"jsts","symbolName":"getEnvelopeInfo","metadata":{"unresolvedName":"getEnvelopeInfo"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toUIMessageInfo",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toUIMessageInfo","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","symbolName":"toUIMessageInfo","symbolKind":"function","exported":true,"metadata":{"line":19,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toUIPart",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toUIPart","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","symbolName":"toUIPart","symbolKind":"function","exported":true,"metadata":{"line":23,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toApiMessageWithParts",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toApiMessageWithParts","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","symbolName":"toApiMessageWithParts","symbolKind":"function","exported":true,"metadata":{"line":27,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:isUserUIMessage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:isUserUIMessage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","symbolName":"isUserUIMessage","symbolKind":"function","exported":true,"metadata":{"line":34,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:getPreviewCategory",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:getPreviewCategory","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","symbolName":"getPreviewCategory","symbolKind":"function","exported":true,"metadata":{"line":26,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:mimeType.indexOf",{"id":"external:mimeType.indexOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"mimeType.indexOf"}}],["external:mimeType.slice",{"id":"external:mimeType.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"mimeType.slice"}}],["external:PREVIEWABLE_MEDIA.has",{"id":"external:PREVIEWABLE_MEDIA.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"PREVIEWABLE_MEDIA.has"}}],["external:PREVIEWABLE_APP_SUBTYPES.has",{"id":"external:PREVIEWABLE_APP_SUBTYPES.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"PREVIEWABLE_APP_SUBTYPES.has"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:isBinaryContent",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:isBinaryContent","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","symbolName":"isBinaryContent","symbolKind":"function","exported":true,"metadata":{"line":42,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:isTextualMedia",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:isTextualMedia","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","symbolName":"isTextualMedia","symbolKind":"function","exported":true,"metadata":{"line":56,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:TEXTUAL_MEDIA_TYPES.has",{"id":"external:TEXTUAL_MEDIA_TYPES.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"TEXTUAL_MEDIA_TYPES.has"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:buildDataUrl",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:buildDataUrl","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","symbolName":"buildDataUrl","symbolKind":"function","exported":true,"metadata":{"line":63,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:buildTextDataUrl",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:buildTextDataUrl","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","symbolName":"buildTextDataUrl","symbolKind":"function","exported":true,"metadata":{"line":70,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:decodeBase64Text",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:decodeBase64Text","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","symbolName":"decodeBase64Text","symbolKind":"function","exported":true,"metadata":{"line":78,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:new TextDecoder('utf-8').decode",{"id":"external:new TextDecoder('utf-8').decode","kind":"external","language":"jsts","metadata":{"unresolvedName":"new TextDecoder('utf-8').decode"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:formatMimeType",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:formatMimeType","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","symbolName":"formatMimeType","symbolKind":"function","exported":true,"metadata":{"line":91,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:mimeType.toUpperCase",{"id":"external:mimeType.toUpperCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"mimeType.toUpperCase"}}],["external:mimeType.slice(slash + 1).replace",{"id":"external:mimeType.slice(slash + 1).replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"mimeType.slice(slash + 1).replace"}}],["external:minor.toUpperCase",{"id":"external:minor.toUpperCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"minor.toUpperCase"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"getModelKey","symbolKind":"function","exported":true,"metadata":{"line":18,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:parseModelKey",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:parseModelKey","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"parseModelKey","symbolKind":"function","exported":true,"metadata":{"line":25,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:key.indexOf",{"id":"external:key.indexOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"key.indexOf"}}],["external:key.slice",{"id":"external:key.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"key.slice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:findModelByKey",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:findModelByKey","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"findModelByKey","symbolKind":"function","exported":true,"metadata":{"line":37,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:parseModelKey",{"id":"symbol-name:parseModelKey","kind":"symbol","language":"jsts","symbolName":"parseModelKey","metadata":{"unresolvedName":"parseModelKey"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelUsageStats",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelUsageStats","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"getModelUsageStats","symbolKind":"function","exported":true,"metadata":{"line":73,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:recordModelUsage",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:recordModelUsage","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"recordModelUsage","symbolKind":"function","exported":true,"metadata":{"line":85,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:getModelUsageStats",{"id":"symbol-name:getModelUsageStats","kind":"symbol","language":"jsts","symbolName":"getModelUsageStats","metadata":{"unresolvedName":"getModelUsageStats"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelUsageCount",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelUsageCount","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"getModelUsageCount","symbolKind":"function","exported":true,"metadata":{"line":106,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelVariantPrefs",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelVariantPrefs","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"getModelVariantPrefs","symbolKind":"function","exported":true,"metadata":{"line":119,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:saveModelVariantPref",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:saveModelVariantPref","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"saveModelVariantPref","symbolKind":"function","exported":true,"metadata":{"line":131,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:getModelVariantPrefs",{"id":"symbol-name:getModelVariantPrefs","kind":"symbol","language":"jsts","symbolName":"getModelVariantPrefs","metadata":{"unresolvedName":"getModelVariantPrefs"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelVariantPref",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelVariantPref","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"getModelVariantPref","symbolKind":"function","exported":true,"metadata":{"line":150,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getSessionModelSelections",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getSessionModelSelections","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"getSessionModelSelections","symbolKind":"function","exported":true,"metadata":{"line":159,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getSessionModelSelection",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getSessionModelSelection","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"getSessionModelSelection","symbolKind":"function","exported":true,"metadata":{"line":168,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["symbol-name:getSessionModelSelections",{"id":"symbol-name:getSessionModelSelections","kind":"symbol","language":"jsts","symbolName":"getSessionModelSelections","metadata":{"unresolvedName":"getSessionModelSelections"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:saveSessionModelSelection",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:saveSessionModelSelection","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"saveSessionModelSelection","symbolKind":"function","exported":true,"metadata":{"line":173,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByFrequency",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByFrequency","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"sortModelsByFrequency","symbolKind":"function","exported":true,"metadata":{"line":196,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:[...models].sort",{"id":"external:[...models].sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"[...models].sort"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":326,"column":11,"cyclomaticComplexity":3,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsAlphabetically",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsAlphabetically","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"sortModelsAlphabetically","symbolKind":"function","exported":true,"metadata":{"line":223,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByProvider",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByProvider","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"sortModelsByProvider","symbolKind":"function","exported":true,"metadata":{"line":230,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:acc[model.providerId].push",{"id":"external:acc[model.providerId].push","kind":"external","language":"jsts","metadata":{"unresolvedName":"acc[model.providerId].push"}}],["external:Object.keys(groups).sort",{"id":"external:Object.keys(groups).sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"Object.keys(groups).sort"}}],["external:sortedProviders.flatMap",{"id":"external:sortedProviders.flatMap","kind":"external","language":"jsts","metadata":{"unresolvedName":"sortedProviders.flatMap"}}],["symbol-name:sortModelsByFrequency",{"id":"symbol-name:sortModelsByFrequency","kind":"symbol","language":"jsts","symbolName":"sortModelsByFrequency","metadata":{"unresolvedName":"sortModelsByFrequency"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:groupModelsByProvider",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:groupModelsByProvider","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"groupModelsByProvider","symbolKind":"function","exported":true,"metadata":{"line":275,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:acc[key].models.push",{"id":"external:acc[key].models.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"acc[key].models.push"}}],["external:Object.values(groupMap).sort",{"id":"external:Object.values(groupMap).sort","kind":"external","language":"jsts","metadata":{"unresolvedName":"Object.values(groupMap).sort"}}],["external:a.models.reduce",{"id":"external:a.models.reduce","kind":"external","language":"jsts","metadata":{"unresolvedName":"a.models.reduce"}}],["external:b.models.reduce",{"id":"external:b.models.reduce","kind":"external","language":"jsts","metadata":{"unresolvedName":"b.models.reduce"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getRecentModels",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getRecentModels","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"getRecentModels","symbolKind":"function","exported":true,"metadata":{"line":316,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:models\r\n .filter",{"id":"external:models\r\n .filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"models\r\n .filter"}}],["external:usedModels.slice",{"id":"external:usedModels.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"usedModels.slice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModelKeys",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModelKeys","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"getPinnedModelKeys","symbolKind":"function","exported":true,"metadata":{"line":343,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:isModelPinned",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:isModelPinned","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"isModelPinned","symbolKind":"function","exported":true,"metadata":{"line":355,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:getPinnedModelKeys().includes",{"id":"external:getPinnedModelKeys().includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"getPinnedModelKeys().includes"}}],["symbol-name:getPinnedModelKeys",{"id":"symbol-name:getPinnedModelKeys","kind":"symbol","language":"jsts","symbolName":"getPinnedModelKeys","metadata":{"unresolvedName":"getPinnedModelKeys"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:toggleModelPin",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:toggleModelPin","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"toggleModelPin","symbolKind":"function","exported":true,"metadata":{"line":363,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:pinned.indexOf",{"id":"external:pinned.indexOf","kind":"external","language":"jsts","metadata":{"unresolvedName":"pinned.indexOf"}}],["external:pinned.splice",{"id":"external:pinned.splice","kind":"external","language":"jsts","metadata":{"unresolvedName":"pinned.splice"}}],["external:pinned.push",{"id":"external:pinned.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"pinned.push"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModels",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModels","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","symbolName":"getPinnedModels","symbolKind":"function","exported":true,"metadata":{"line":388,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:keySet.has",{"id":"external:keySet.has","kind":"external","language":"jsts","metadata":{"unresolvedName":"keySet.has"}}],["external:modelMap.set",{"id":"external:modelMap.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"modelMap.set"}}],["external:pinnedKeys.map(k => modelMap.get(k)).filter",{"id":"external:pinnedKeys.map(k => modelMap.get(k)).filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"pinnedKeys.map(k => modelMap.get(k)).filter"}}],["external:pinnedKeys.map",{"id":"external:pinnedKeys.map","kind":"external","language":"jsts","metadata":{"unresolvedName":"pinnedKeys.map"}}],["external:modelMap.get",{"id":"external:modelMap.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"modelMap.get"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSound",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSound","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","symbolName":"playNotificationSound","symbolKind":"function","exported":true,"metadata":{"line":23,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSoundDeduped",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSoundDeduped","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","symbolName":"playNotificationSoundDeduped","symbolKind":"function","exported":true,"metadata":{"line":51,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:recentPlays.get",{"id":"external:recentPlays.get","kind":"external","language":"jsts","metadata":{"unresolvedName":"recentPlays.get"}}],["external:recentPlays.set",{"id":"external:recentPlays.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"recentPlays.set"}}],["symbol-name:playNotificationSound",{"id":"symbol-name:playNotificationSound","kind":"symbol","language":"jsts","symbolName":"playNotificationSound","metadata":{"unresolvedName":"playNotificationSound"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:initNotificationSound",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:initNotificationSound","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","symbolName":"initNotificationSound","symbolKind":"function","exported":true,"metadata":{"line":64,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:notificationStore.onPush",{"id":"external:notificationStore.onPush","kind":"external","language":"jsts","metadata":{"unresolvedName":"notificationStore.onPush"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":65,"column":48,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts","metadata":{"lineCount":61,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":55,"column":60,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:expect(match?.id).toBe",{"id":"external:expect(match?.id).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(match?.id).toBe"}}],["external:expect(formatOpenRouterPricePerMillion('0.00000175')).toBe",{"id":"external:expect(formatOpenRouterPricePerMillion('0.00000175')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatOpenRouterPricePerMillion('0.00000175')).toBe"}}],["external:expect(formatOpenRouterPricePerMillion('0')).toBe",{"id":"external:expect(formatOpenRouterPricePerMillion('0')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatOpenRouterPricePerMillion('0')).toBe"}}],["external:expect(formatOpenRouterPricePerMillion(undefined)).toBe",{"id":"external:expect(formatOpenRouterPricePerMillion(undefined)).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(formatOpenRouterPricePerMillion(undefined)).toBe"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:normalize",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:normalize","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","symbolName":"normalize","symbolKind":"function","exported":false,"metadata":{"line":29,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:(value ?? '').toLowerCase().replace",{"id":"external:(value ?? '').toLowerCase().replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"(value ?? '').toLowerCase().replace"}}],["external:(value ?? '').toLowerCase",{"id":"external:(value ?? '').toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"(value ?? '').toLowerCase"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:providerFromOpenRouterId",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:providerFromOpenRouterId","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","symbolName":"providerFromOpenRouterId","symbolKind":"function","exported":false,"metadata":{"line":33,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:id.split",{"id":"external:id.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"id.split"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:isFreeVariant",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:isFreeVariant","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","symbolName":"isFreeVariant","symbolKind":"function","exported":false,"metadata":{"line":37,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:id.endsWith",{"id":"external:id.endsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"id.endsWith"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:scoreModel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:scoreModel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","symbolName":"scoreModel","symbolKind":"function","exported":false,"metadata":{"line":41,"column":1,"cyclomaticComplexity":20,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:entry.id.endsWith",{"id":"external:entry.id.endsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"entry.id.endsWith"}}],["external:normalizedEntryID.endsWith",{"id":"external:normalizedEntryID.endsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalizedEntryID.endsWith"}}],["external:normalizedEntryName.includes",{"id":"external:normalizedEntryName.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalizedEntryName.includes"}}],["symbol-name:providerFromOpenRouterId",{"id":"symbol-name:providerFromOpenRouterId","kind":"symbol","language":"jsts","symbolName":"providerFromOpenRouterId","metadata":{"unresolvedName":"providerFromOpenRouterId"}}],["symbol-name:isFreeVariant",{"id":"symbol-name:isFreeVariant","kind":"symbol","language":"jsts","symbolName":"isFreeVariant","metadata":{"unresolvedName":"isFreeVariant"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:selectOpenRouterModel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:selectOpenRouterModel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","symbolName":"selectOpenRouterModel","symbolKind":"function","exported":true,"metadata":{"line":74,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["symbol-name:scoreModel",{"id":"symbol-name:scoreModel","kind":"symbol","language":"jsts","symbolName":"scoreModel","metadata":{"unresolvedName":"scoreModel"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:formatOpenRouterPricePerMillion",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:formatOpenRouterPricePerMillion","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","symbolName":"formatOpenRouterPricePerMillion","symbolKind":"function","exported":true,"metadata":{"line":89,"column":1,"cyclomaticComplexity":6,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:perMillion\n .toFixed(perMillion >= 10 ? 2 : 4)\n .replace",{"id":"external:perMillion\n .toFixed(perMillion >= 10 ? 2 : 4)\n .replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"perMillion\n .toFixed(perMillion >= 10 ? 2 : 4)\n .replace"}}],["external:perMillion\n .toFixed",{"id":"external:perMillion\n .toFixed","kind":"external","language":"jsts","metadata":{"unresolvedName":"perMillion\n .toFixed"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:getModelProviderLabel",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:getModelProviderLabel","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","symbolName":"getModelProviderLabel","symbolKind":"function","exported":true,"metadata":{"line":102,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:entry.name.split",{"id":"external:entry.name.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"entry.name.split"}}],["external:provider?.trim",{"id":"external:provider?.trim","kind":"external","language":"jsts","metadata":{"unresolvedName":"provider?.trim"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:makeKey",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:makeKey","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","symbolName":"makeKey","symbolKind":"function","exported":false,"metadata":{"line":20,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:get",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:get","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","symbolName":"get","symbolKind":"function","exported":false,"metadata":{"line":29,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:makeKey",{"id":"symbol-name:makeKey","kind":"symbol","language":"jsts","symbolName":"makeKey","metadata":{"unresolvedName":"makeKey"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:set",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:set","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","symbolName":"set","symbolKind":"function","exported":false,"metadata":{"line":40,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:remove",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:remove","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","symbolName":"remove","symbolKind":"function","exported":false,"metadata":{"line":51,"column":3,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:getJSON",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:getJSON","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","symbolName":"getJSON","symbolKind":"function","exported":false,"metadata":{"line":62,"column":3,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:setJSON",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:setJSON","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","symbolName":"setJSON","symbolKind":"function","exported":false,"metadata":{"line":75,"column":3,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:exportPerServerStorageBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:exportPerServerStorageBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","symbolName":"exportPerServerStorageBackup","symbolKind":"function","exported":true,"metadata":{"line":86,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:localStorage.key",{"id":"external:localStorage.key","kind":"external","language":"jsts","metadata":{"unresolvedName":"localStorage.key"}}],["external:key.startsWith",{"id":"external:key.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"key.startsWith"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:importPerServerStorageBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:importPerServerStorageBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","symbolName":"importPerServerStorageBackup","symbolKind":"function","exported":true,"metadata":{"line":101,"column":1,"cyclomaticComplexity":12,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:keysToRemove.push",{"id":"external:keysToRemove.push","kind":"external","language":"jsts","metadata":{"unresolvedName":"keysToRemove.push"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts","metadata":{"lineCount":31,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":27,"column":42,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(parsePtyFrame('hello\\r\\n')).toEqual",{"id":"external:expect(parsePtyFrame('hello\\r\\n')).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(parsePtyFrame('hello\\r\\n')).toEqual"}}],["external:bytes.set",{"id":"external:bytes.set","kind":"external","language":"jsts","metadata":{"unresolvedName":"bytes.set"}}],["external:expect(parsePtyFrame(bytes.buffer)).toEqual",{"id":"external:expect(parsePtyFrame(bytes.buffer)).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(parsePtyFrame(bytes.buffer)).toEqual"}}],["external:expect(parsePtyFrame('\\0{\"cursor\":73}')).toEqual",{"id":"external:expect(parsePtyFrame('\\0{\"cursor\":73}')).toEqual","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(parsePtyFrame('\\0{\"cursor\":73}')).toEqual"}}],["external:expect(parsePtyFrame('\\0{\"cursor\":\"oops\"}')).toBeNull",{"id":"external:expect(parsePtyFrame('\\0{\"cursor\":\"oops\"}')).toBeNull","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(parsePtyFrame('\\0{\"cursor\":\"oops\"}')).toBeNull"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parseControlPayload",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parseControlPayload","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts","symbolName":"parseControlPayload","symbolKind":"function","exported":false,"metadata":{"line":7,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parsePtyFrame",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parsePtyFrame","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts","symbolName":"parsePtyFrame","symbolKind":"function","exported":true,"metadata":{"line":21,"column":1,"cyclomaticComplexity":8,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:chunk.startsWith",{"id":"external:chunk.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"chunk.startsWith"}}],["symbol-name:parseControlPayload",{"id":"symbol-name:parseControlPayload","kind":"symbol","language":"jsts","symbolName":"parseControlPayload","metadata":{"unresolvedName":"parseControlPayload"}}],["external:chunk.slice",{"id":"external:chunk.slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"chunk.slice"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/sessionHelpers.ts:restoreModelSelection",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/sessionHelpers.ts:restoreModelSelection","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/sessionHelpers.ts","symbolName":"restoreModelSelection","symbolKind":"function","exported":true,"metadata":{"line":21,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization","auth","user-input"]}}],["external:model.variants.includes",{"id":"external:model.variants.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"model.variants.includes"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts","metadata":{"lineCount":68,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":38,"column":49,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(backup.schemaVersion).toBe",{"id":"external:expect(backup.schemaVersion).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(backup.schemaVersion).toBe"}}],["external:expect((backup.modules.theme as { presetId: string }).presetId).toBe",{"id":"external:expect((backup.modules.theme as { presetId: string }).presetId).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect((backup.modules.theme as { presetId: string }).presetId).toBe"}}],["external:expect(localStorage.getItem('theme-preset')).toBe",{"id":"external:expect(localStorage.getItem('theme-preset')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(localStorage.getItem('theme-preset')).toBe"}}],["external:expect(localStorage.getItem('theme-mode')).toBe",{"id":"external:expect(localStorage.getItem('theme-mode')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(localStorage.getItem('theme-mode')).toBe"}}],["external:expect(localStorage.getItem('opencode-sidebar-expanded')).toBe",{"id":"external:expect(localStorage.getItem('opencode-sidebar-expanded')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(localStorage.getItem('opencode-sidebar-expanded')).toBe"}}],["external:expect(localStorage.getItem('opencode-right-panel-width')).toBe",{"id":"external:expect(localStorage.getItem('opencode-right-panel-width')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(localStorage.getItem('opencode-right-panel-width')).toBe"}}],["external:expect(localStorage.getItem('notifications-enabled')).toBe",{"id":"external:expect(localStorage.getItem('notifications-enabled')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(localStorage.getItem('notifications-enabled')).toBe"}}],["external:expect(localStorage.getItem('srv:local:last-directory')).toBe",{"id":"external:expect(localStorage.getItem('srv:local:last-directory')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(localStorage.getItem('srv:local:last-directory')).toBe"}}],["external:expect(localStorage.getItem('srv:local:opencode-auto-approve-enabled')).toBe",{"id":"external:expect(localStorage.getItem('srv:local:opencode-auto-approve-enabled')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(localStorage.getItem('srv:local:opencode-auto-approve-enabled')).toBe"}}],["external:expect(localStorage.getItem('opencode:toast-enabled')).toBe",{"id":"external:expect(localStorage.getItem('opencode:toast-enabled')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(localStorage.getItem('opencode:toast-enabled')).toBe"}}],["external:expect(sessionStorage.getItem('opencode-active-server')).toBe",{"id":"external:expect(sessionStorage.getItem('opencode-active-server')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(sessionStorage.getItem('opencode-active-server')).toBe"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportNotificationBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportNotificationBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","symbolName":"exportNotificationBackup","symbolKind":"function","exported":false,"metadata":{"line":62,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:exportNotificationPreferencesBackup",{"id":"symbol-name:exportNotificationPreferencesBackup","kind":"symbol","language":"jsts","symbolName":"exportNotificationPreferencesBackup","metadata":{"unresolvedName":"exportNotificationPreferencesBackup"}}],["symbol-name:exportNotificationEventSettingsBackup",{"id":"symbol-name:exportNotificationEventSettingsBackup","kind":"symbol","language":"jsts","symbolName":"exportNotificationEventSettingsBackup","metadata":{"unresolvedName":"exportNotificationEventSettingsBackup"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importNotificationBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importNotificationBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","symbolName":"importNotificationBackup","symbolKind":"function","exported":false,"metadata":{"line":70,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:importNotificationPreferencesBackup",{"id":"symbol-name:importNotificationPreferencesBackup","kind":"symbol","language":"jsts","symbolName":"importNotificationPreferencesBackup","metadata":{"unresolvedName":"importNotificationPreferencesBackup"}}],["symbol-name:importNotificationEventSettingsBackup",{"id":"symbol-name:importNotificationEventSettingsBackup","kind":"symbol","language":"jsts","symbolName":"importNotificationEventSettingsBackup","metadata":{"unresolvedName":"importNotificationEventSettingsBackup"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:normalizeBackupFile",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:normalizeBackupFile","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","symbolName":"normalizeBackupFile","symbolKind":"function","exported":false,"metadata":{"line":84,"column":1,"cyclomaticComplexity":11,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:buildBackupFileName",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:buildBackupFileName","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","symbolName":"buildBackupFileName","symbolKind":"function","exported":false,"metadata":{"line":126,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:createdAt.replace(/[:]/g, '-').replace",{"id":"external:createdAt.replace(/[:]/g, '-').replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"createdAt.replace(/[:]/g, '-').replace"}}],["external:createdAt.replace",{"id":"external:createdAt.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"createdAt.replace"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","symbolName":"exportSettingsBackup","symbolKind":"function","exported":true,"metadata":{"line":131,"column":1,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:exportThemeBackup",{"id":"symbol-name:exportThemeBackup","kind":"symbol","language":"jsts","symbolName":"exportThemeBackup","metadata":{"unresolvedName":"exportThemeBackup"}}],["symbol-name:exportLayoutBackup",{"id":"symbol-name:exportLayoutBackup","kind":"symbol","language":"jsts","symbolName":"exportLayoutBackup","metadata":{"unresolvedName":"exportLayoutBackup"}}],["symbol-name:exportServerSettingsBackup",{"id":"symbol-name:exportServerSettingsBackup","kind":"symbol","language":"jsts","symbolName":"exportServerSettingsBackup","metadata":{"unresolvedName":"exportServerSettingsBackup"}}],["symbol-name:exportPerServerStorageBackup",{"id":"symbol-name:exportPerServerStorageBackup","kind":"symbol","language":"jsts","symbolName":"exportPerServerStorageBackup","metadata":{"unresolvedName":"exportPerServerStorageBackup"}}],["symbol-name:exportServiceSettingsBackup",{"id":"symbol-name:exportServiceSettingsBackup","kind":"symbol","language":"jsts","symbolName":"exportServiceSettingsBackup","metadata":{"unresolvedName":"exportServiceSettingsBackup"}}],["symbol-name:exportKeybindingBackup",{"id":"symbol-name:exportKeybindingBackup","kind":"symbol","language":"jsts","symbolName":"exportKeybindingBackup","metadata":{"unresolvedName":"exportKeybindingBackup"}}],["symbol-name:exportNotificationBackup",{"id":"symbol-name:exportNotificationBackup","kind":"symbol","language":"jsts","symbolName":"exportNotificationBackup","metadata":{"unresolvedName":"exportNotificationBackup"}}],["symbol-name:exportSoundBackup",{"id":"symbol-name:exportSoundBackup","kind":"symbol","language":"jsts","symbolName":"exportSoundBackup","metadata":{"unresolvedName":"exportSoundBackup"}}],["symbol-name:exportUpdateSettingsBackup",{"id":"symbol-name:exportUpdateSettingsBackup","kind":"symbol","language":"jsts","symbolName":"exportUpdateSettingsBackup","metadata":{"unresolvedName":"exportUpdateSettingsBackup"}}],["symbol-name:buildBackupFileName",{"id":"symbol-name:buildBackupFileName","kind":"symbol","language":"jsts","symbolName":"buildBackupFileName","metadata":{"unresolvedName":"buildBackupFileName"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importSettingsBackup",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importSettingsBackup","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","symbolName":"importSettingsBackup","symbolKind":"function","exported":true,"metadata":{"line":157,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:file.text",{"id":"external:file.text","kind":"external","language":"jsts","metadata":{"unresolvedName":"file.text"}}],["symbol-name:normalizeBackupFile",{"id":"symbol-name:normalizeBackupFile","kind":"symbol","language":"jsts","symbolName":"normalizeBackupFile","metadata":{"unresolvedName":"normalizeBackupFile"}}],["symbol-name:importThemeBackup",{"id":"symbol-name:importThemeBackup","kind":"symbol","language":"jsts","symbolName":"importThemeBackup","metadata":{"unresolvedName":"importThemeBackup"}}],["symbol-name:importLayoutBackup",{"id":"symbol-name:importLayoutBackup","kind":"symbol","language":"jsts","symbolName":"importLayoutBackup","metadata":{"unresolvedName":"importLayoutBackup"}}],["symbol-name:importServerSettingsBackup",{"id":"symbol-name:importServerSettingsBackup","kind":"symbol","language":"jsts","symbolName":"importServerSettingsBackup","metadata":{"unresolvedName":"importServerSettingsBackup"}}],["symbol-name:importPerServerStorageBackup",{"id":"symbol-name:importPerServerStorageBackup","kind":"symbol","language":"jsts","symbolName":"importPerServerStorageBackup","metadata":{"unresolvedName":"importPerServerStorageBackup"}}],["symbol-name:importServiceSettingsBackup",{"id":"symbol-name:importServiceSettingsBackup","kind":"symbol","language":"jsts","symbolName":"importServiceSettingsBackup","metadata":{"unresolvedName":"importServiceSettingsBackup"}}],["symbol-name:importKeybindingBackup",{"id":"symbol-name:importKeybindingBackup","kind":"symbol","language":"jsts","symbolName":"importKeybindingBackup","metadata":{"unresolvedName":"importKeybindingBackup"}}],["symbol-name:importNotificationBackup",{"id":"symbol-name:importNotificationBackup","kind":"symbol","language":"jsts","symbolName":"importNotificationBackup","metadata":{"unresolvedName":"importNotificationBackup"}}],["symbol-name:importSoundBackup",{"id":"symbol-name:importSoundBackup","kind":"symbol","language":"jsts","symbolName":"importSoundBackup","metadata":{"unresolvedName":"importSoundBackup"}}],["symbol-name:importUpdateSettingsBackup",{"id":"symbol-name:importUpdateSettingsBackup","kind":"symbol","language":"jsts","symbolName":"importUpdateSettingsBackup","metadata":{"unresolvedName":"importUpdateSettingsBackup"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:previewBackupMeta",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:previewBackupMeta","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","symbolName":"previewBackupMeta","symbolKind":"function","exported":true,"metadata":{"line":180,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:file.text().then",{"id":"external:file.text().then","kind":"external","language":"jsts","metadata":{"unresolvedName":"file.text().then"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":181,"column":27,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:getAudioContext",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:getAudioContext","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","symbolName":"getAudioContext","symbolKind":"function","exported":false,"metadata":{"line":62,"column":1,"cyclomaticComplexity":5,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:isSoundSupported",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:isSoundSupported","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","symbolName":"isSoundSupported","symbolKind":"function","exported":true,"metadata":{"line":75,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:volumeToGain",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:volumeToGain","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","symbolName":"volumeToGain","symbolKind":"function","exported":false,"metadata":{"line":89,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:chime'",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:chime'","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","symbolName":"'builtin:chime'","symbolKind":"function","exported":false,"metadata":{"line":108,"column":20,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:[523.25, 659.25].forEach",{"id":"external:[523.25, 659.25].forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"[523.25, 659.25].forEach"}}],["external:ctx.createOscillator",{"id":"external:ctx.createOscillator","kind":"external","language":"jsts","metadata":{"unresolvedName":"ctx.createOscillator"}}],["external:ctx.createGain",{"id":"external:ctx.createGain","kind":"external","language":"jsts","metadata":{"unresolvedName":"ctx.createGain"}}],["external:osc.frequency.setValueAtTime",{"id":"external:osc.frequency.setValueAtTime","kind":"external","language":"jsts","metadata":{"unresolvedName":"osc.frequency.setValueAtTime"}}],["external:gain.gain.setValueAtTime",{"id":"external:gain.gain.setValueAtTime","kind":"external","language":"jsts","metadata":{"unresolvedName":"gain.gain.setValueAtTime"}}],["external:gain.gain.linearRampToValueAtTime",{"id":"external:gain.gain.linearRampToValueAtTime","kind":"external","language":"jsts","metadata":{"unresolvedName":"gain.gain.linearRampToValueAtTime"}}],["external:gain.gain.exponentialRampToValueAtTime",{"id":"external:gain.gain.exponentialRampToValueAtTime","kind":"external","language":"jsts","metadata":{"unresolvedName":"gain.gain.exponentialRampToValueAtTime"}}],["external:osc.connect(gain).connect",{"id":"external:osc.connect(gain).connect","kind":"external","language":"jsts","metadata":{"unresolvedName":"osc.connect(gain).connect"}}],["external:osc.connect",{"id":"external:osc.connect","kind":"external","language":"jsts","metadata":{"unresolvedName":"osc.connect"}}],["external:osc.start",{"id":"external:osc.start","kind":"external","language":"jsts","metadata":{"unresolvedName":"osc.start"}}],["external:osc.stop",{"id":"external:osc.stop","kind":"external","language":"jsts","metadata":{"unresolvedName":"osc.stop"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":381,"column":52,"cyclomaticComplexity":2,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:success'",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:success'","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","symbolName":"'builtin:success'","symbolKind":"function","exported":false,"metadata":{"line":125,"column":22,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:[440, 554.37, 659.25].forEach",{"id":"external:[440, 554.37, 659.25].forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"[440, 554.37, 659.25].forEach"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bell'",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bell'","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","symbolName":"'builtin:bell'","symbolKind":"function","exported":false,"metadata":{"line":142,"column":19,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:osc.frequency.exponentialRampToValueAtTime",{"id":"external:osc.frequency.exponentialRampToValueAtTime","kind":"external","language":"jsts","metadata":{"unresolvedName":"osc.frequency.exponentialRampToValueAtTime"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:knock'",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:knock'","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","symbolName":"'builtin:knock'","symbolKind":"function","exported":false,"metadata":{"line":159,"column":20,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:[0, 0.15].forEach",{"id":"external:[0, 0.15].forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"[0, 0.15].forEach"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:alert'",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:alert'","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","symbolName":"'builtin:alert'","symbolKind":"function","exported":false,"metadata":{"line":176,"column":20,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:[0, 0.12].forEach",{"id":"external:[0, 0.12].forEach","kind":"external","language":"jsts","metadata":{"unresolvedName":"[0, 0.12].forEach"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:tap'",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:tap'","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","symbolName":"'builtin:tap'","symbolKind":"function","exported":false,"metadata":{"line":192,"column":18,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:ping'",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:ping'","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","symbolName":"'builtin:ping'","symbolKind":"function","exported":false,"metadata":{"line":208,"column":19,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bubble'",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bubble'","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","symbolName":"'builtin:bubble'","symbolKind":"function","exported":false,"metadata":{"line":222,"column":21,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:pop'",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:pop'","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","symbolName":"'builtin:pop'","symbolKind":"function","exported":false,"metadata":{"line":237,"column":18,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:error'",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:error'","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","symbolName":"'builtin:error'","symbolKind":"function","exported":false,"metadata":{"line":253,"column":20,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:buzz'",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:buzz'","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","symbolName":"'builtin:buzz'","symbolKind":"function","exported":false,"metadata":{"line":271,"column":19,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:warning'",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:warning'","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","symbolName":"'builtin:warning'","symbolKind":"function","exported":false,"metadata":{"line":288,"column":22,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playBuiltinSound",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playBuiltinSound","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","symbolName":"playBuiltinSound","symbolKind":"function","exported":false,"metadata":{"line":309,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["symbol-name:getAudioContext",{"id":"symbol-name:getAudioContext","kind":"symbol","language":"jsts","symbolName":"getAudioContext","metadata":{"unresolvedName":"getAudioContext"}}],["external:ctx.resume().catch",{"id":"external:ctx.resume().catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"ctx.resume().catch"}}],["external:ctx.resume",{"id":"external:ctx.resume","kind":"external","language":"jsts","metadata":{"unresolvedName":"ctx.resume"}}],["external:masterGain.gain.setValueAtTime",{"id":"external:masterGain.gain.setValueAtTime","kind":"external","language":"jsts","metadata":{"unresolvedName":"masterGain.gain.setValueAtTime"}}],["symbol-name:volumeToGain",{"id":"symbol-name:volumeToGain","kind":"symbol","language":"jsts","symbolName":"volumeToGain","metadata":{"unresolvedName":"volumeToGain"}}],["external:masterGain.connect",{"id":"external:masterGain.connect","kind":"external","language":"jsts","metadata":{"unresolvedName":"masterGain.connect"}}],["symbol-name:synth",{"id":"symbol-name:synth","kind":"symbol","language":"jsts","symbolName":"synth","metadata":{"unresolvedName":"synth"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playCustomSound",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playCustomSound","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","symbolName":"playCustomSound","symbolKind":"function","exported":false,"metadata":{"line":332,"column":1,"cyclomaticComplexity":4,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:audioData.arrayBuffer",{"id":"external:audioData.arrayBuffer","kind":"external","language":"jsts","metadata":{"unresolvedName":"audioData.arrayBuffer"}}],["external:ctx.decodeAudioData",{"id":"external:ctx.decodeAudioData","kind":"external","language":"jsts","metadata":{"unresolvedName":"ctx.decodeAudioData"}}],["external:ctx.createBufferSource",{"id":"external:ctx.createBufferSource","kind":"external","language":"jsts","metadata":{"unresolvedName":"ctx.createBufferSource"}}],["external:gainNode.gain.setValueAtTime",{"id":"external:gainNode.gain.setValueAtTime","kind":"external","language":"jsts","metadata":{"unresolvedName":"gainNode.gain.setValueAtTime"}}],["external:source.connect(gainNode).connect",{"id":"external:source.connect(gainNode).connect","kind":"external","language":"jsts","metadata":{"unresolvedName":"source.connect(gainNode).connect"}}],["external:source.connect",{"id":"external:source.connect","kind":"external","language":"jsts","metadata":{"unresolvedName":"source.connect"}}],["external:source.start",{"id":"external:source.start","kind":"external","language":"jsts","metadata":{"unresolvedName":"source.start"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playSound",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playSound","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","symbolName":"playSound","symbolKind":"function","exported":true,"metadata":{"line":374,"column":1,"cyclomaticComplexity":7,"maxNestingDepth":2,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:playCustomSound(customAudioData, volume).catch",{"id":"external:playCustomSound(customAudioData, volume).catch","kind":"external","language":"jsts","metadata":{"unresolvedName":"playCustomSound(customAudioData, volume).catch"}}],["symbol-name:playCustomSound",{"id":"symbol-name:playCustomSound","kind":"symbol","language":"jsts","symbolName":"playCustomSound","metadata":{"unresolvedName":"playCustomSound"}}],["external:soundId.startsWith",{"id":"external:soundId.startsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"soundId.startsWith"}}],["symbol-name:playBuiltinSound",{"id":"symbol-name:playBuiltinSound","kind":"symbol","language":"jsts","symbolName":"playBuiltinSound","metadata":{"unresolvedName":"playBuiltinSound"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/stringUtils.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/stringUtils.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/stringUtils.ts","metadata":{"lineCount":12,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/stringUtils.ts:getInitials",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/stringUtils.ts:getInitials","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/stringUtils.ts","symbolName":"getInitials","symbolKind":"function","exported":true,"metadata":{"line":1,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:clean.split(' ').filter",{"id":"external:clean.split(' ').filter","kind":"external","language":"jsts","metadata":{"unresolvedName":"clean.split(' ').filter"}}],["external:clean.split",{"id":"external:clean.split","kind":"external","language":"jsts","metadata":{"unresolvedName":"clean.split"}}],["external:parts[0].slice(0, 2).toUpperCase",{"id":"external:parts[0].slice(0, 2).toUpperCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"parts[0].slice(0, 2).toUpperCase"}}],["external:parts[0].slice",{"id":"external:parts[0].slice","kind":"external","language":"jsts","metadata":{"unresolvedName":"parts[0].slice"}}],["external:(parts[0][0] + parts[1][0]).toUpperCase",{"id":"external:(parts[0][0] + parts[1][0]).toUpperCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"(parts[0][0] + parts[1][0]).toUpperCase"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","metadata":{"lineCount":55,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","symbolName":"","symbolKind":"function","exported":false,"metadata":{"line":50,"column":53,"cyclomaticComplexity":1,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:expect(isTauri()).toBe",{"id":"external:expect(isTauri()).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(isTauri()).toBe"}}],["external:expect(isTauriMobile()).toBe",{"id":"external:expect(isTauriMobile()).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(isTauriMobile()).toBe"}}],["external:expect(extToMime('png')).toBe",{"id":"external:expect(extToMime('png')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(extToMime('png')).toBe"}}],["external:expect(extToMime('jpg')).toBe",{"id":"external:expect(extToMime('jpg')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(extToMime('jpg')).toBe"}}],["external:expect(extToMime('svg')).toBe",{"id":"external:expect(extToMime('svg')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(extToMime('svg')).toBe"}}],["external:expect(extToMime('mp3')).toBe",{"id":"external:expect(extToMime('mp3')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(extToMime('mp3')).toBe"}}],["external:expect(extToMime('mp4')).toBe",{"id":"external:expect(extToMime('mp4')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(extToMime('mp4')).toBe"}}],["external:expect(extToMime('xyz')).toBe",{"id":"external:expect(extToMime('xyz')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(extToMime('xyz')).toBe"}}],["external:expect(extToMime('foo')).toBe",{"id":"external:expect(extToMime('foo')).toBe","kind":"external","language":"jsts","metadata":{"unresolvedName":"expect(extToMime('foo')).toBe"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","symbolName":"isTauri","symbolKind":"function","exported":true,"metadata":{"line":9,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauriMobile",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauriMobile","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","symbolName":"isTauriMobile","symbolKind":"function","exported":true,"metadata":{"line":13,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:/Android|iPhone|iPad|iPod/i.test",{"id":"external:/Android|iPhone|iPad|iPod/i.test","kind":"external","language":"jsts","metadata":{"unresolvedName":"/Android|iPhone|iPad|iPod/i.test"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:getDesktopPlatform",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:getDesktopPlatform","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","symbolName":"getDesktopPlatform","symbolKind":"function","exported":true,"metadata":{"line":20,"column":1,"cyclomaticComplexity":8,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["external:navigator.userAgent.toLowerCase",{"id":"external:navigator.userAgent.toLowerCase","kind":"external","language":"jsts","metadata":{"unresolvedName":"navigator.userAgent.toLowerCase"}}],["external:ua.includes",{"id":"external:ua.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"ua.includes"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:usesCustomDesktopTitlebar",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:usesCustomDesktopTitlebar","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","symbolName":"usesCustomDesktopTitlebar","symbolKind":"function","exported":true,"metadata":{"line":30,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:extToMime",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:extToMime","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","symbolName":"extToMime","symbolKind":"function","exported":true,"metadata":{"line":36,"column":1,"cyclomaticComplexity":2,"maxNestingDepth":0,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/caddy.rs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/caddy.rs","kind":"file","language":"rust","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/caddy.rs","metadata":{"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/config.rs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/config.rs","kind":"file","language":"rust","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/config.rs","metadata":{"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/main.rs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/main.rs","kind":"file","language":"rust","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/main.rs","metadata":{"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/router.rs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/router.rs","kind":"file","language":"rust","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/router.rs","metadata":{"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/scanner.rs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/scanner.rs","kind":"file","language":"rust","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/scanner.rs","metadata":{"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/state.rs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/state.rs","kind":"file","language":"rust","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src-router/src/state.rs","metadata":{"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/build.rs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/build.rs","kind":"file","language":"rust","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/build.rs","metadata":{"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/bridge/args.rs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/bridge/args.rs","kind":"file","language":"rust","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/bridge/args.rs","metadata":{"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/bridge/event.rs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/bridge/event.rs","kind":"file","language":"rust","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/bridge/event.rs","metadata":{"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/bridge/mod.rs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/bridge/mod.rs","kind":"file","language":"rust","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/bridge/mod.rs","metadata":{"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/bridge/state.rs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/bridge/state.rs","kind":"file","language":"rust","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/bridge/state.rs","metadata":{"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/commands/bridge.rs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/commands/bridge.rs","kind":"file","language":"rust","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/commands/bridge.rs","metadata":{"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/commands/mod.rs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/commands/mod.rs","kind":"file","language":"rust","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/commands/mod.rs","metadata":{"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/commands/pi_agent.rs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/commands/pi_agent.rs","kind":"file","language":"rust","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/commands/pi_agent.rs","metadata":{"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/commands/utils.rs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/commands/utils.rs","kind":"file","language":"rust","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/commands/utils.rs","metadata":{"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/dir_state.rs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/dir_state.rs","kind":"file","language":"rust","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/dir_state.rs","metadata":{"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/mod.rs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/mod.rs","kind":"file","language":"rust","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/mod.rs","metadata":{"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/service.rs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/service.rs","kind":"file","language":"rust","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/app/service.rs","metadata":{"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/lib.rs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/lib.rs","kind":"file","language":"rust","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/lib.rs","metadata":{"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/main.rs",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/main.rs","kind":"file","language":"rust","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/src-tauri/src/main.rs","metadata":{"featureKind":"service","trustBoundaries":["network","external-api","serialization"]}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts","metadata":{"lineCount":75,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:vite",{"id":"external:vite","kind":"external","language":"jsts","metadata":{"source":"vite"}}],["external:@vitejs/plugin-react",{"id":"external:@vitejs/plugin-react","kind":"external","language":"jsts","metadata":{"source":"@vitejs/plugin-react"}}],["external:@tailwindcss/vite",{"id":"external:@tailwindcss/vite","kind":"external","language":"jsts","metadata":{"source":"@tailwindcss/vite"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:katexWoff2Only",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:katexWoff2Only","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts","symbolName":"katexWoff2Only","symbolKind":"function","exported":false,"metadata":{"line":8,"column":1,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:id.split('?')[0].replace",{"id":"external:id.split('?')[0].replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"id.split('?')[0].replace"}}],["external:normalizedId.endsWith",{"id":"external:normalizedId.endsWith","kind":"external","language":"jsts","metadata":{"unresolvedName":"normalizedId.endsWith"}}],["external:code.replace",{"id":"external:code.replace","kind":"external","language":"jsts","metadata":{"unresolvedName":"code.replace"}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:transform",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:transform","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts","symbolName":"transform","symbolKind":"function","exported":false,"metadata":{"line":12,"column":5,"cyclomaticComplexity":3,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:manualChunks",{"id":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:manualChunks","kind":"symbol","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts","symbolName":"manualChunks","symbolKind":"function","exported":false,"metadata":{"line":36,"column":9,"cyclomaticComplexity":9,"maxNestingDepth":1,"isBoundaryWrapper":false,"isPassThroughWrapper":false,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:id.includes",{"id":"external:id.includes","kind":"external","language":"jsts","metadata":{"unresolvedName":"id.includes"}}],["file:D:/Documents/Github/PiAgentUI/PiAgentUi/vitest.config.ts",{"id":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/vitest.config.ts","kind":"file","language":"jsts","filePath":"D:/Documents/Github/PiAgentUI/PiAgentUi/vitest.config.ts","metadata":{"lineCount":17,"featureKind":"service","trustBoundaries":["filesystem","database","network","external-api","serialization"]}}],["external:vitest/config",{"id":"external:vitest/config","kind":"external","language":"jsts","metadata":{"source":"vitest/config"}}]],"edges":[{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/eslint.config.js","to":"external:@eslint/js","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/eslint.config.js","to":"external:eslint-config-prettier","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/eslint.config.js","to":"external:globals","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/eslint.config.js","to":"external:eslint-plugin-react-hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/eslint.config.js","to":"external:eslint-plugin-react-refresh","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/eslint.config.js","to":"external:typescript-eslint","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/eslint.config.js","to":"external:eslint/config","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"external:node:fs","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"external:node:os","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"external:node:path","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"module:./piagentui-extension-manager.js","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:makeTempRoot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:makeTempRoot","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:makeTempRoot","to":"external:fs.mkdtempSync","kind":"calls","metadata":{"unresolvedName":"fs.mkdtempSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:makeTempRoot","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:makeTempRoot","to":"external:os.tmpdir","kind":"calls","metadata":{"unresolvedName":"os.tmpdir"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:makeTempRoot","to":"external:tempRoots.push","kind":"calls","metadata":{"unresolvedName":"tempRoots.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:writeJson","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:writeJson","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:writeJson","to":"external:fs.mkdirSync","kind":"calls","metadata":{"unresolvedName":"fs.mkdirSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:writeJson","to":"external:path.dirname","kind":"calls","metadata":{"unresolvedName":"path.dirname"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:writeJson","to":"external:fs.writeFileSync","kind":"calls","metadata":{"unresolvedName":"fs.writeFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:writeJson","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:tempRoots.splice","kind":"calls","metadata":{"unresolvedName":"tempRoots.splice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:fs.rmSync","kind":"calls","metadata":{"unresolvedName":"fs.rmSync"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(parsePiInstallCommand('pi install npm:pi-hud')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parsePiInstallCommand('pi install npm:pi-hud')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parsePiInstallCommand","kind":"calls","metadata":{"unresolvedName":"parsePiInstallCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(parsePiInstallCommand('pi install npm:@scope/pkg -l')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parsePiInstallCommand('pi install npm:@scope/pkg -l')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(() => parsePiInstallCommand('npm install pi-hud')).toThrow","kind":"calls","metadata":{"unresolvedName":"expect(() => parsePiInstallCommand('npm install pi-hud')).toThrow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(() => parsePiInstallCommand('pi remove npm:pi-hud')).toThrow","kind":"calls","metadata":{"unresolvedName":"expect(() => parsePiInstallCommand('pi remove npm:pi-hud')).toThrow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(() => parsePiInstallCommand('pi install')).toThrow","kind":"calls","metadata":{"unresolvedName":"expect(() => parsePiInstallCommand('pi install')).toThrow"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(parsePiInstallCommand('pi install npm:pi-hud')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parsePiInstallCommand('pi install npm:pi-hud')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parsePiInstallCommand","kind":"calls","metadata":{"unresolvedName":"parsePiInstallCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(parsePiInstallCommand('pi install npm:@scope/pkg -l')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parsePiInstallCommand('pi install npm:@scope/pkg -l')).toEqual"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(() => parsePiInstallCommand('npm install pi-hud')).toThrow","kind":"calls","metadata":{"unresolvedName":"expect(() => parsePiInstallCommand('npm install pi-hud')).toThrow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parsePiInstallCommand","kind":"calls","metadata":{"unresolvedName":"parsePiInstallCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(() => parsePiInstallCommand('pi remove npm:pi-hud')).toThrow","kind":"calls","metadata":{"unresolvedName":"expect(() => parsePiInstallCommand('pi remove npm:pi-hud')).toThrow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(() => parsePiInstallCommand('pi install')).toThrow","kind":"calls","metadata":{"unresolvedName":"expect(() => parsePiInstallCommand('pi install')).toThrow"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:makeTempRoot","kind":"calls","metadata":{"unresolvedName":"makeTempRoot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:writeJson","kind":"calls","metadata":{"unresolvedName":"writeJson"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:fs.mkdirSync","kind":"calls","metadata":{"unresolvedName":"fs.mkdirSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:fs.writeFileSync","kind":"calls","metadata":{"unresolvedName":"fs.writeFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","kind":"calls","metadata":{"unresolvedName":"buildExtensionCatalog"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(catalog.summary).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(catalog.summary).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:catalog.packages.find","kind":"calls","metadata":{"unresolvedName":"catalog.packages.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(userPackage).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(userPackage).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(userPackage?.resources.extensions).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(userPackage?.resources.extensions).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(userPackage?.resources.skills).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(userPackage?.resources.skills).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(projectPackage).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(projectPackage).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(projectPackage?.resources.extensions).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(projectPackage?.resources.extensions).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(missingPackage).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(missingPackage).toMatchObject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:makeTempRoot","kind":"calls","metadata":{"unresolvedName":"makeTempRoot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:writeJson","kind":"calls","metadata":{"unresolvedName":"writeJson"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:fs.mkdirSync","kind":"calls","metadata":{"unresolvedName":"fs.mkdirSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:fs.writeFileSync","kind":"calls","metadata":{"unresolvedName":"fs.writeFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","kind":"calls","metadata":{"unresolvedName":"buildExtensionCatalog"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(catalog.summary).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(catalog.summary).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:catalog.packages.find","kind":"calls","metadata":{"unresolvedName":"catalog.packages.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(userPackage).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(userPackage).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(userPackage?.resources.extensions).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(userPackage?.resources.extensions).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(userPackage?.resources.skills).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(userPackage?.resources.skills).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(projectPackage).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(projectPackage).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(projectPackage?.resources.extensions).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(projectPackage?.resources.extensions).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(missingPackage).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(missingPackage).toMatchObject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:executeExtensionInstallCommand","kind":"calls","metadata":{"unresolvedName":"executeExtensionInstallCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:executeExtensionPackageRemoval","kind":"calls","metadata":{"unresolvedName":"executeExtensionPackageRemoval"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(runner).toHaveBeenNthCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(runner).toHaveBeenNthCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:executeExtensionInstallCommand","kind":"calls","metadata":{"unresolvedName":"executeExtensionInstallCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:executeExtensionPackageRemoval","kind":"calls","metadata":{"unresolvedName":"executeExtensionPackageRemoval"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"external:expect(runner).toHaveBeenNthCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(runner).toHaveBeenNthCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"external:node:child_process","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"external:node:fs","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"external:node:os","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"external:node:path","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:getHomeDir","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:getHomeDir","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:getHomeDir","to":"external:os.homedir","kind":"calls","metadata":{"unresolvedName":"os.homedir"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:getAgentDir","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:getAgentDir","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:getAgentDir","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:getAgentDir","to":"symbol-name:getHomeDir","kind":"calls","metadata":{"unresolvedName":"getHomeDir"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readJsonFile","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readJsonFile","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readJsonFile","to":"external:fs.existsSync","kind":"calls","metadata":{"unresolvedName":"fs.existsSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readJsonFile","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readJsonFile","to":"external:fs.readFileSync","kind":"calls","metadata":{"unresolvedName":"fs.readFileSync"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readSettings","to":"symbol-name:readJsonFile","kind":"calls","metadata":{"unresolvedName":"readJsonFile"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:normalizePackageEntry","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:normalizePackageEntry","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:normalizePackageEntry","to":"external:entry.trim","kind":"calls","metadata":{"unresolvedName":"entry.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:normalizePackageEntry","to":"external:entry.source.trim","kind":"calls","metadata":{"unresolvedName":"entry.source.trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parseNpmPackageName","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parseNpmPackageName","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parseNpmPackageName","to":"external:source.startsWith","kind":"calls","metadata":{"unresolvedName":"source.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parseNpmPackageName","to":"external:source.slice('npm:'.length).trim","kind":"calls","metadata":{"unresolvedName":"source.slice('npm:'.length).trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parseNpmPackageName","to":"external:source.slice","kind":"calls","metadata":{"unresolvedName":"source.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parseNpmPackageName","to":"external:spec.match","kind":"calls","metadata":{"unresolvedName":"spec.match"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:isProbablyLocalSource","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:isProbablyLocalSource","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:isProbablyLocalSource","to":"external:source.startsWith","kind":"calls","metadata":{"unresolvedName":"source.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:isProbablyLocalSource","to":"external:path.isAbsolute","kind":"calls","metadata":{"unresolvedName":"path.isAbsolute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:isProbablyLocalSource","to":"external:/^[a-zA-Z]:[\\\\/]/.test","kind":"calls","metadata":{"unresolvedName":"/^[a-zA-Z]:[\\\\/]/.test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:isProbablyLocalSource","to":"external:source.includes","kind":"calls","metadata":{"unresolvedName":"source.includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveLocalSource","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveLocalSource","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveLocalSource","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveLocalSource","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:getAgentDir","kind":"calls","metadata":{"unresolvedName":"getAgentDir"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveLocalSource","to":"external:source.startsWith","kind":"calls","metadata":{"unresolvedName":"source.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveLocalSource","to":"external:path.resolve","kind":"calls","metadata":{"unresolvedName":"path.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveLocalSource","to":"symbol-name:getHomeDir","kind":"calls","metadata":{"unresolvedName":"getHomeDir"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveLocalSource","to":"external:source.slice","kind":"calls","metadata":{"unresolvedName":"source.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveLocalSource","to":"external:path.isAbsolute","kind":"calls","metadata":{"unresolvedName":"path.isAbsolute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveLocalSource","to":"external:/^[a-zA-Z]:[\\\\/]/.test","kind":"calls","metadata":{"unresolvedName":"/^[a-zA-Z]:[\\\\/]/.test"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parseGitInstallPathParts","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parseGitInstallPathParts","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parseGitInstallPathParts","to":"external:source.replace","kind":"calls","metadata":{"unresolvedName":"source.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parseGitInstallPathParts","to":"external:normalized.match","kind":"calls","metadata":{"unresolvedName":"normalized.match"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parseGitInstallPathParts","to":"external:githubShorthand[1].replace","kind":"calls","metadata":{"unresolvedName":"githubShorthand[1].replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parseGitInstallPathParts","to":"external:sshMatch[2].replace","kind":"calls","metadata":{"unresolvedName":"sshMatch[2].replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parseGitInstallPathParts","to":"external:url.pathname.replace(/^\\//, '').replace","kind":"calls","metadata":{"unresolvedName":"url.pathname.replace(/^\\//, '').replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parseGitInstallPathParts","to":"external:url.pathname.replace","kind":"calls","metadata":{"unresolvedName":"url.pathname.replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveInstalledPath","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveInstalledPath","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveInstalledPath","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:getAgentDir","kind":"calls","metadata":{"unresolvedName":"getAgentDir"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveInstalledPath","to":"external:source.startsWith","kind":"calls","metadata":{"unresolvedName":"source.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveInstalledPath","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parseNpmPackageName","kind":"calls","metadata":{"unresolvedName":"parseNpmPackageName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveInstalledPath","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveInstalledPath","to":"external:packageName.split","kind":"calls","metadata":{"unresolvedName":"packageName.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveInstalledPath","to":"external:fs.existsSync","kind":"calls","metadata":{"unresolvedName":"fs.existsSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveInstalledPath","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:isProbablyLocalSource","kind":"calls","metadata":{"unresolvedName":"isProbablyLocalSource"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveInstalledPath","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveLocalSource","kind":"calls","metadata":{"unresolvedName":"resolveLocalSource"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveInstalledPath","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parseGitInstallPathParts","kind":"calls","metadata":{"unresolvedName":"parseGitInstallPathParts"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveInstalledPath","to":"external:gitParts.repoPath.split","kind":"calls","metadata":{"unresolvedName":"gitParts.repoPath.split"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:collectFiles","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:collectFiles","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:collectFiles","to":"external:fs.existsSync","kind":"calls","metadata":{"unresolvedName":"fs.existsSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:collectFiles","to":"external:fs.statSync","kind":"calls","metadata":{"unresolvedName":"fs.statSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:collectFiles","to":"external:stat.isFile","kind":"calls","metadata":{"unresolvedName":"stat.isFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:collectFiles","to":"external:RESOURCE_FILE_PATTERNS[resourceType].test","kind":"calls","metadata":{"unresolvedName":"RESOURCE_FILE_PATTERNS[resourceType].test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:collectFiles","to":"external:stat.isDirectory","kind":"calls","metadata":{"unresolvedName":"stat.isDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:collectFiles","to":"external:fs.readdirSync","kind":"calls","metadata":{"unresolvedName":"fs.readdirSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:collectFiles","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:collectFiles","to":"external:entry.isDirectory","kind":"calls","metadata":{"unresolvedName":"entry.isDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:collectFiles","to":"external:files.push","kind":"calls","metadata":{"unresolvedName":"files.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:collectFiles","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:collectFiles","kind":"calls","metadata":{"unresolvedName":"collectFiles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:collectFiles","to":"external:entry.isFile","kind":"calls","metadata":{"unresolvedName":"entry.isFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:collectFiles","to":"external:files.sort","kind":"calls","metadata":{"unresolvedName":"files.sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:collectFiles","to":"external:a.localeCompare","kind":"calls","metadata":{"unresolvedName":"a.localeCompare"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:stripOverridePatterns","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:stripOverridePatterns","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:stripOverridePatterns","to":"external:entries.filter","kind":"calls","metadata":{"unresolvedName":"entries.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:stripOverridePatterns","to":"external:entry.trim().startsWith","kind":"calls","metadata":{"unresolvedName":"entry.trim().startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:stripOverridePatterns","to":"external:entry.trim","kind":"calls","metadata":{"unresolvedName":"entry.trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveManifestEntry","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveManifestEntry","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveManifestEntry","to":"external:entry.trim","kind":"calls","metadata":{"unresolvedName":"entry.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveManifestEntry","to":"external:normalized.startsWith","kind":"calls","metadata":{"unresolvedName":"normalized.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveManifestEntry","to":"external:normalized.includes","kind":"calls","metadata":{"unresolvedName":"normalized.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveManifestEntry","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveManifestEntry","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:collectFiles","kind":"calls","metadata":{"unresolvedName":"collectFiles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveManifestEntry","to":"external:path.resolve","kind":"calls","metadata":{"unresolvedName":"path.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:discoverResourcePaths","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:discoverResourcePaths","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:discoverResourcePaths","to":"external:stripOverridePatterns(manifestEntries).flatMap","kind":"calls","metadata":{"unresolvedName":"stripOverridePatterns(manifestEntries).flatMap"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:discoverResourcePaths","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:stripOverridePatterns","kind":"calls","metadata":{"unresolvedName":"stripOverridePatterns"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:discoverResourcePaths","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveManifestEntry","kind":"calls","metadata":{"unresolvedName":"resolveManifestEntry"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:discoverResourcePaths","to":"external:Array.from(new Set(files)).sort","kind":"calls","metadata":{"unresolvedName":"Array.from(new Set(files)).sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:discoverResourcePaths","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:discoverResourcePaths","to":"external:a.localeCompare","kind":"calls","metadata":{"unresolvedName":"a.localeCompare"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:discoverResourcePaths","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:collectFiles","kind":"calls","metadata":{"unresolvedName":"collectFiles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:discoverResourcePaths","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:toRelativePosix","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:toRelativePosix","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:toRelativePosix","to":"external:path.relative(packageRoot, filePath).replace","kind":"calls","metadata":{"unresolvedName":"path.relative(packageRoot, filePath).replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:toRelativePosix","to":"external:path.relative","kind":"calls","metadata":{"unresolvedName":"path.relative"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:wildcardToRegExp","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:wildcardToRegExp","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:wildcardToRegExp","to":"external:pattern.replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&').replace","kind":"calls","metadata":{"unresolvedName":"pattern.replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&').replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:wildcardToRegExp","to":"external:pattern.replace","kind":"calls","metadata":{"unresolvedName":"pattern.replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:matchesFilter","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:matchesFilter","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:matchesFilter","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:toRelativePosix","kind":"calls","metadata":{"unresolvedName":"toRelativePosix"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:matchesFilter","to":"external:patterns.map(pattern => pattern.trim()).filter","kind":"calls","metadata":{"unresolvedName":"patterns.map(pattern => pattern.trim()).filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:matchesFilter","to":"external:patterns.map","kind":"calls","metadata":{"unresolvedName":"patterns.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:matchesFilter","to":"external:pattern.trim","kind":"calls","metadata":{"unresolvedName":"pattern.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:matchesFilter","to":"external:normalizedPatterns.some","kind":"calls","metadata":{"unresolvedName":"normalizedPatterns.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:matchesFilter","to":"external:pattern.startsWith","kind":"calls","metadata":{"unresolvedName":"pattern.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:matchesFilter","to":"external:pattern.slice","kind":"calls","metadata":{"unresolvedName":"pattern.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:matchesFilter","to":"external:positivePattern.replace","kind":"calls","metadata":{"unresolvedName":"positivePattern.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:matchesFilter","to":"external:relativePath.endsWith","kind":"calls","metadata":{"unresolvedName":"relativePath.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:matchesFilter","to":"external:wildcardToRegExp(normalizedPattern).test","kind":"calls","metadata":{"unresolvedName":"wildcardToRegExp(normalizedPattern).test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:matchesFilter","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:wildcardToRegExp","kind":"calls","metadata":{"unresolvedName":"wildcardToRegExp"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"external:pattern.startsWith","kind":"calls","metadata":{"unresolvedName":"pattern.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"external:pattern.slice","kind":"calls","metadata":{"unresolvedName":"pattern.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"external:positivePattern.replace","kind":"calls","metadata":{"unresolvedName":"positivePattern.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"external:relativePath.endsWith","kind":"calls","metadata":{"unresolvedName":"relativePath.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"external:wildcardToRegExp(normalizedPattern).test","kind":"calls","metadata":{"unresolvedName":"wildcardToRegExp(normalizedPattern).test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:wildcardToRegExp","kind":"calls","metadata":{"unresolvedName":"wildcardToRegExp"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resourceName","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resourceName","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resourceName","to":"external:path.basename(filePath).toLowerCase","kind":"calls","metadata":{"unresolvedName":"path.basename(filePath).toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resourceName","to":"external:path.basename","kind":"calls","metadata":{"unresolvedName":"path.basename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resourceName","to":"external:path.dirname","kind":"calls","metadata":{"unresolvedName":"path.dirname"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildResources","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildResources","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildResources","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:discoverResourcePaths","kind":"calls","metadata":{"unresolvedName":"discoverResourcePaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildResources","to":"external:files.map","kind":"calls","metadata":{"unresolvedName":"files.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildResources","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resourceName","kind":"calls","metadata":{"unresolvedName":"resourceName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildResources","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:matchesFilter","kind":"calls","metadata":{"unresolvedName":"matchesFilter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:hasEnabledResource","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:hasEnabledResource","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:hasEnabledResource","to":"external:RESOURCE_TYPES.some","kind":"calls","metadata":{"unresolvedName":"RESOURCE_TYPES.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:hasEnabledResource","to":"external:resources[resourceType].some","kind":"calls","metadata":{"unresolvedName":"resources[resourceType].some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:countByStatus","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:countByStatus","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:countByStatus","to":"external:packages.reduce","kind":"calls","metadata":{"unresolvedName":"packages.reduce"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readPackageMetadata","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readPackageMetadata","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readPackageMetadata","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readPackageMetadata","to":"external:fs.existsSync","kind":"calls","metadata":{"unresolvedName":"fs.existsSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readPackageMetadata","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readPackageMetadata","to":"external:fs.readFileSync","kind":"calls","metadata":{"unresolvedName":"fs.readFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readPackageMetadata","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","to":"symbol-name:getHomeDir","kind":"calls","metadata":{"unresolvedName":"getHomeDir"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:getAgentDir","kind":"calls","metadata":{"unresolvedName":"getAgentDir"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readSettings","kind":"calls","metadata":{"unresolvedName":"readSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","to":"external:(userSettings.packages ?? []).map","kind":"calls","metadata":{"unresolvedName":"(userSettings.packages ?? []).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:normalizePackageEntry","kind":"calls","metadata":{"unresolvedName":"normalizePackageEntry"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","to":"external:(projectSettings.packages ?? []).map","kind":"calls","metadata":{"unresolvedName":"(projectSettings.packages ?? []).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","to":"external:configuredPackages.map","kind":"calls","metadata":{"unresolvedName":"configuredPackages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveInstalledPath","kind":"calls","metadata":{"unresolvedName":"resolveInstalledPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readPackageMetadata","kind":"calls","metadata":{"unresolvedName":"readPackageMetadata"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildResources","kind":"calls","metadata":{"unresolvedName":"buildResources"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:hasEnabledResource","kind":"calls","metadata":{"unresolvedName":"hasEnabledResource"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","to":"external:packages.sort","kind":"calls","metadata":{"unresolvedName":"packages.sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","to":"external:(a.packageName || a.source).localeCompare","kind":"calls","metadata":{"unresolvedName":"(a.packageName || a.source).localeCompare"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:countByStatus","kind":"calls","metadata":{"unresolvedName":"countByStatus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:resolveInstalledPath","kind":"calls","metadata":{"unresolvedName":"resolveInstalledPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:readPackageMetadata","kind":"calls","metadata":{"unresolvedName":"readPackageMetadata"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildResources","kind":"calls","metadata":{"unresolvedName":"buildResources"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:hasEnabledResource","kind":"calls","metadata":{"unresolvedName":"hasEnabledResource"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"external:(a.packageName || a.source).localeCompare","kind":"calls","metadata":{"unresolvedName":"(a.packageName || a.source).localeCompare"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:tokenizeCommand","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:tokenizeCommand","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:tokenizeCommand","to":"external:/\\s/.test","kind":"calls","metadata":{"unresolvedName":"/\\s/.test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:tokenizeCommand","to":"external:tokens.push","kind":"calls","metadata":{"unresolvedName":"tokens.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parsePiInstallCommand","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parsePiInstallCommand","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parsePiInstallCommand","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:tokenizeCommand","kind":"calls","metadata":{"unresolvedName":"tokenizeCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parsePiInstallCommand","to":"external:command.trim","kind":"calls","metadata":{"unresolvedName":"command.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parsePiInstallCommand","to":"external:path\n .basename(tokens[0])\n .replace","kind":"calls","metadata":{"unresolvedName":"path\n .basename(tokens[0])\n .replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parsePiInstallCommand","to":"external:path\n .basename","kind":"calls","metadata":{"unresolvedName":"path\n .basename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parsePiInstallCommand","to":"external:tokens.slice","kind":"calls","metadata":{"unresolvedName":"tokens.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parsePiInstallCommand","to":"external:token.startsWith","kind":"calls","metadata":{"unresolvedName":"token.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parsePiInstallCommand","to":"external:/[;&|<>`]/.test","kind":"calls","metadata":{"unresolvedName":"/[;&|<>`]/.test"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:getPiExecutable","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:getPiExecutable","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:defaultPiCommandRunner","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:defaultPiCommandRunner","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:defaultPiCommandRunner","to":"symbol-name:spawn","kind":"calls","metadata":{"unresolvedName":"spawn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:defaultPiCommandRunner","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:getPiExecutable","kind":"calls","metadata":{"unresolvedName":"getPiExecutable"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:defaultPiCommandRunner","to":"external:child.stdout?.on","kind":"calls","metadata":{"unresolvedName":"child.stdout?.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:defaultPiCommandRunner","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:defaultPiCommandRunner","to":"external:child.stderr?.on","kind":"calls","metadata":{"unresolvedName":"child.stderr?.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:defaultPiCommandRunner","to":"external:child.on","kind":"calls","metadata":{"unresolvedName":"child.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:defaultPiCommandRunner","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:defaultPiCommandRunner","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:defaultPiCommandRunner","to":"external:stderr.trim","kind":"calls","metadata":{"unresolvedName":"stderr.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:defaultPiCommandRunner","to":"external:args.join","kind":"calls","metadata":{"unresolvedName":"args.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"symbol-name:spawn","kind":"calls","metadata":{"unresolvedName":"spawn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:getPiExecutable","kind":"calls","metadata":{"unresolvedName":"getPiExecutable"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"external:child.stdout?.on","kind":"calls","metadata":{"unresolvedName":"child.stdout?.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"external:child.stderr?.on","kind":"calls","metadata":{"unresolvedName":"child.stderr?.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"external:child.on","kind":"calls","metadata":{"unresolvedName":"child.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"external:stderr.trim","kind":"calls","metadata":{"unresolvedName":"stderr.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"external:args.join","kind":"calls","metadata":{"unresolvedName":"args.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"external:stderr.trim","kind":"calls","metadata":{"unresolvedName":"stderr.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:","to":"external:args.join","kind":"calls","metadata":{"unresolvedName":"args.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:executeExtensionInstallCommand","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:executeExtensionInstallCommand","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:executeExtensionInstallCommand","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:parsePiInstallCommand","kind":"calls","metadata":{"unresolvedName":"parsePiInstallCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:executeExtensionInstallCommand","to":"symbol-name:runner","kind":"calls","metadata":{"unresolvedName":"runner"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:executeExtensionPackageRemoval","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:executeExtensionPackageRemoval","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:executeExtensionPackageRemoval","to":"symbol-name:runner","kind":"calls","metadata":{"unresolvedName":"runner"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","to":"external:node:os","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","to":"external:node:path","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","to":"module:./piagentui-git-manager.js","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:createRunner","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:createRunner","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:createRunner","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:createRunner","to":"external:args.join","kind":"calls","metadata":{"unresolvedName":"args.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:args.join","kind":"calls","metadata":{"unresolvedName":"args.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:createRunner","kind":"calls","metadata":{"unresolvedName":"createRunner"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:listGitBranches","kind":"calls","metadata":{"unresolvedName":"listGitBranches"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(result.current).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(result.branches).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(result.branches).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:getGitStatus","kind":"calls","metadata":{"unresolvedName":"getGitStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(status.branch).toBe","kind":"calls","metadata":{"unresolvedName":"expect(status.branch).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(status.upstream).toBe","kind":"calls","metadata":{"unresolvedName":"expect(status.upstream).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(status.ahead).toBe","kind":"calls","metadata":{"unresolvedName":"expect(status.ahead).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(status.behind).toBe","kind":"calls","metadata":{"unresolvedName":"expect(status.behind).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(status.dirty).toBe","kind":"calls","metadata":{"unresolvedName":"expect(status.dirty).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(status.files).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(status.files).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"symbol-name:checkoutGitBranch","kind":"calls","metadata":{"unresolvedName":"checkoutGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"symbol-name:createGitBranch","kind":"calls","metadata":{"unresolvedName":"createGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"symbol-name:stageGitPaths","kind":"calls","metadata":{"unresolvedName":"stageGitPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"symbol-name:unstageGitPaths","kind":"calls","metadata":{"unresolvedName":"unstageGitPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(runner).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(runner).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(commitGitChanges(repoDir, { message: ' ' }, runner)).rejects.toThrow","kind":"calls","metadata":{"unresolvedName":"expect(commitGitChanges(repoDir, { message: ' ' }, runner)).rejects.toThrow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"symbol-name:commitGitChanges","kind":"calls","metadata":{"unresolvedName":"commitGitChanges"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(runner).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(runner).not.toHaveBeenCalled"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:createRunner","kind":"calls","metadata":{"unresolvedName":"createRunner"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:listGitBranches","kind":"calls","metadata":{"unresolvedName":"listGitBranches"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(result.current).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(result.branches).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(result.branches).toEqual"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:createRunner","kind":"calls","metadata":{"unresolvedName":"createRunner"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:getGitStatus","kind":"calls","metadata":{"unresolvedName":"getGitStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(status.branch).toBe","kind":"calls","metadata":{"unresolvedName":"expect(status.branch).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(status.upstream).toBe","kind":"calls","metadata":{"unresolvedName":"expect(status.upstream).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(status.ahead).toBe","kind":"calls","metadata":{"unresolvedName":"expect(status.ahead).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(status.behind).toBe","kind":"calls","metadata":{"unresolvedName":"expect(status.behind).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(status.dirty).toBe","kind":"calls","metadata":{"unresolvedName":"expect(status.dirty).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(status.files).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(status.files).toEqual"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:createRunner","kind":"calls","metadata":{"unresolvedName":"createRunner"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"symbol-name:checkoutGitBranch","kind":"calls","metadata":{"unresolvedName":"checkoutGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"symbol-name:createGitBranch","kind":"calls","metadata":{"unresolvedName":"createGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"symbol-name:stageGitPaths","kind":"calls","metadata":{"unresolvedName":"stageGitPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"symbol-name:unstageGitPaths","kind":"calls","metadata":{"unresolvedName":"unstageGitPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(runner).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(runner).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(commitGitChanges(repoDir, { message: ' ' }, runner)).rejects.toThrow","kind":"calls","metadata":{"unresolvedName":"expect(commitGitChanges(repoDir, { message: ' ' }, runner)).rejects.toThrow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"symbol-name:commitGitChanges","kind":"calls","metadata":{"unresolvedName":"commitGitChanges"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.test.ts:","to":"external:expect(runner).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(runner).not.toHaveBeenCalled"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"external:node:child_process","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:runGit","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:runGit","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:runGit","to":"symbol-name:spawn","kind":"calls","metadata":{"unresolvedName":"spawn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:runGit","to":"external:child.stdout.setEncoding","kind":"calls","metadata":{"unresolvedName":"child.stdout.setEncoding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:runGit","to":"external:child.stderr.setEncoding","kind":"calls","metadata":{"unresolvedName":"child.stderr.setEncoding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:runGit","to":"external:child.stdout.on","kind":"calls","metadata":{"unresolvedName":"child.stdout.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:runGit","to":"external:child.stderr.on","kind":"calls","metadata":{"unresolvedName":"child.stderr.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:runGit","to":"external:child.on","kind":"calls","metadata":{"unresolvedName":"child.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:runGit","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:runGit","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:runGit","to":"external:args.join","kind":"calls","metadata":{"unresolvedName":"args.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","to":"symbol-name:spawn","kind":"calls","metadata":{"unresolvedName":"spawn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","to":"external:child.stdout.setEncoding","kind":"calls","metadata":{"unresolvedName":"child.stdout.setEncoding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","to":"external:child.stderr.setEncoding","kind":"calls","metadata":{"unresolvedName":"child.stderr.setEncoding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","to":"external:child.stdout.on","kind":"calls","metadata":{"unresolvedName":"child.stdout.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","to":"external:child.stderr.on","kind":"calls","metadata":{"unresolvedName":"child.stderr.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","to":"external:child.on","kind":"calls","metadata":{"unresolvedName":"child.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","to":"external:args.join","kind":"calls","metadata":{"unresolvedName":"args.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","to":"external:args.join","kind":"calls","metadata":{"unresolvedName":"args.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:assertSafeRefName","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:assertSafeRefName","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:assertSafeRefName","to":"external:value.trim","kind":"calls","metadata":{"unresolvedName":"value.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:assertSafeRefName","to":"external:name.startsWith","kind":"calls","metadata":{"unresolvedName":"name.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:assertSafeRefName","to":"external:/\\s/.test","kind":"calls","metadata":{"unresolvedName":"/\\s/.test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:assertSafeRefName","to":"external:/[\\0~^:?*[\\]\\\\]/.test","kind":"calls","metadata":{"unresolvedName":"/[\\0~^:?*[\\]\\\\]/.test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:assertSafeRefName","to":"external:name.includes","kind":"calls","metadata":{"unresolvedName":"name.includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:assertSafePath","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:assertSafePath","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:assertSafePath","to":"external:value.trim","kind":"calls","metadata":{"unresolvedName":"value.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:assertSafePath","to":"external:filePath.includes","kind":"calls","metadata":{"unresolvedName":"filePath.includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:normalizeRemoteName","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:normalizeRemoteName","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:normalizeRemoteName","to":"external:name.replace","kind":"calls","metadata":{"unresolvedName":"name.replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:listGitBranches","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:listGitBranches","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:listGitBranches","to":"symbol-name:runner","kind":"calls","metadata":{"unresolvedName":"runner"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:listGitBranches","to":"external:stdout\n .split(/\\r?\\n/)\n .map(line => line.trim())\n .filter","kind":"calls","metadata":{"unresolvedName":"stdout\n .split(/\\r?\\n/)\n .map(line => line.trim())\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:listGitBranches","to":"external:stdout\n .split(/\\r?\\n/)\n .map","kind":"calls","metadata":{"unresolvedName":"stdout\n .split(/\\r?\\n/)\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:listGitBranches","to":"external:stdout\n .split","kind":"calls","metadata":{"unresolvedName":"stdout\n .split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:listGitBranches","to":"external:line.trim","kind":"calls","metadata":{"unresolvedName":"line.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:listGitBranches","to":"external:line.split","kind":"calls","metadata":{"unresolvedName":"line.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:listGitBranches","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:normalizeRemoteName","kind":"calls","metadata":{"unresolvedName":"normalizeRemoteName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:listGitBranches","to":"external:rawName.startsWith","kind":"calls","metadata":{"unresolvedName":"rawName.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:listGitBranches","to":"external:name.startsWith","kind":"calls","metadata":{"unresolvedName":"name.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:listGitBranches","to":"external:branches.find","kind":"calls","metadata":{"unresolvedName":"branches.find"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","to":"external:line.split","kind":"calls","metadata":{"unresolvedName":"line.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:normalizeRemoteName","kind":"calls","metadata":{"unresolvedName":"normalizeRemoteName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","to":"external:rawName.startsWith","kind":"calls","metadata":{"unresolvedName":"rawName.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:","to":"external:name.startsWith","kind":"calls","metadata":{"unresolvedName":"name.startsWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:parseStatusPath","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:parseStatusPath","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:parseStatusPath","to":"external:line.includes","kind":"calls","metadata":{"unresolvedName":"line.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:parseStatusPath","to":"external:line.split('\\t').pop","kind":"calls","metadata":{"unresolvedName":"line.split('\\t').pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:parseStatusPath","to":"external:line.split","kind":"calls","metadata":{"unresolvedName":"line.split"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:getGitStatus","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:getGitStatus","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:getGitStatus","to":"symbol-name:runner","kind":"calls","metadata":{"unresolvedName":"runner"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:getGitStatus","to":"external:stdout.split","kind":"calls","metadata":{"unresolvedName":"stdout.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:getGitStatus","to":"external:line.startsWith","kind":"calls","metadata":{"unresolvedName":"line.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:getGitStatus","to":"external:line.slice('# branch.head '.length).trim","kind":"calls","metadata":{"unresolvedName":"line.slice('# branch.head '.length).trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:getGitStatus","to":"external:line.slice","kind":"calls","metadata":{"unresolvedName":"line.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:getGitStatus","to":"external:line.slice('# branch.upstream '.length).trim","kind":"calls","metadata":{"unresolvedName":"line.slice('# branch.upstream '.length).trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:getGitStatus","to":"external:line.match","kind":"calls","metadata":{"unresolvedName":"line.match"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:getGitStatus","to":"symbol-name:Number","kind":"calls","metadata":{"unresolvedName":"Number"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:getGitStatus","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:parseStatusPath","kind":"calls","metadata":{"unresolvedName":"parseStatusPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:getGitStatus","to":"external:status.files.push","kind":"calls","metadata":{"unresolvedName":"status.files.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:getGitStatus","to":"external:line.slice(2).trim","kind":"calls","metadata":{"unresolvedName":"line.slice(2).trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:checkoutGitBranch","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:checkoutGitBranch","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:checkoutGitBranch","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:assertSafeRefName","kind":"calls","metadata":{"unresolvedName":"assertSafeRefName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:checkoutGitBranch","to":"symbol-name:runner","kind":"calls","metadata":{"unresolvedName":"runner"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:createGitBranch","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:createGitBranch","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:createGitBranch","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:assertSafeRefName","kind":"calls","metadata":{"unresolvedName":"assertSafeRefName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:createGitBranch","to":"symbol-name:runner","kind":"calls","metadata":{"unresolvedName":"runner"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:normalizePaths","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:normalizePaths","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:normalizePaths","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:normalizePaths","to":"external:request.paths.map","kind":"calls","metadata":{"unresolvedName":"request.paths.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:stageGitPaths","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:stageGitPaths","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:stageGitPaths","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:normalizePaths","kind":"calls","metadata":{"unresolvedName":"normalizePaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:stageGitPaths","to":"symbol-name:runner","kind":"calls","metadata":{"unresolvedName":"runner"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:unstageGitPaths","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:unstageGitPaths","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:unstageGitPaths","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:normalizePaths","kind":"calls","metadata":{"unresolvedName":"normalizePaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:unstageGitPaths","to":"symbol-name:runner","kind":"calls","metadata":{"unresolvedName":"runner"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:commitGitChanges","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:commitGitChanges","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:commitGitChanges","to":"external:request.message.trim","kind":"calls","metadata":{"unresolvedName":"request.message.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:commitGitChanges","to":"symbol-name:runner","kind":"calls","metadata":{"unresolvedName":"runner"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:pullGitBranch","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:pullGitBranch","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:pullGitBranch","to":"symbol-name:runner","kind":"calls","metadata":{"unresolvedName":"runner"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:pushGitBranch","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:pushGitBranch","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:pushGitBranch","to":"symbol-name:runner","kind":"calls","metadata":{"unresolvedName":"runner"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"module:./piagentui-server-core.js","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:describe","kind":"calls","metadata":{"unresolvedName":"describe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('localhost')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('localhost')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLoopbackHost","kind":"calls","metadata":{"unresolvedName":"isLoopbackHost"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('127.0.0.1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('127.0.0.1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('[::1]')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('[::1]')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('localhost:3000')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('localhost:3000')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('127.0.0.1:8080')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('127.0.0.1:8080')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('192.168.1.1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('192.168.1.1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('example.com')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('example.com')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('0.0.0.0')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('0.0.0.0')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('10.0.0.1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('10.0.0.1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateBearerToken(`Bearer ${sampleToken}`, sampleToken)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateBearerToken(`Bearer ${sampleToken}`, sampleToken)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateBearerToken","kind":"calls","metadata":{"unresolvedName":"validateBearerToken"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateBearerToken(`Bearer wrong-token`, sampleToken)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateBearerToken(`Bearer wrong-token`, sampleToken)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateBearerToken(`Basic ${sampleToken}`, sampleToken)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateBearerToken(`Basic ${sampleToken}`, sampleToken)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateBearerToken(sampleToken, sampleToken)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateBearerToken(sampleToken, sampleToken)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateBearerToken('', sampleToken)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateBearerToken('', sampleToken)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(preventPathTraversal(baseDir, 'index.html')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(preventPathTraversal(baseDir, 'index.html')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:preventPathTraversal","kind":"calls","metadata":{"unresolvedName":"preventPathTraversal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(preventPathTraversal(baseDir, 'assets/main.js')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(preventPathTraversal(baseDir, 'assets/main.js')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(preventPathTraversal(baseDir, '../index.html')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(preventPathTraversal(baseDir, '../index.html')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(preventPathTraversal(baseDir, '../../etc/passwd')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(preventPathTraversal(baseDir, '../../etc/passwd')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(preventPathTraversal(baseDir, 'assets/../../config.json')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(preventPathTraversal(baseDir, 'assets/../../config.json')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateHostAndOrigin('127.0.0.1', 'http://127.0.0.1:3000')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateHostAndOrigin('127.0.0.1', 'http://127.0.0.1:3000')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOrigin","kind":"calls","metadata":{"unresolvedName":"validateHostAndOrigin"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateHostAndOrigin('localhost', 'http://localhost')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateHostAndOrigin('localhost', 'http://localhost')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateHostAndOrigin('localhost:5000', '')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateHostAndOrigin('localhost:5000', '')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateHostAndOrigin('127.0.0.1', 'http://malicious.com')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateHostAndOrigin('127.0.0.1', 'http://malicious.com')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateHostAndOrigin('external.com', 'http://localhost')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateHostAndOrigin('external.com', 'http://localhost')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOriginForAccess","kind":"calls","metadata":{"unresolvedName":"validateHostAndOriginForAccess"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getLocalNetworkUrls","kind":"calls","metadata":{"unresolvedName":"getLocalNetworkUrls"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(urls).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(urls).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateSttBaseUrl('https://api.openai.com/v1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateSttBaseUrl('https://api.openai.com/v1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateSttBaseUrl","kind":"calls","metadata":{"unresolvedName":"validateSttBaseUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateSttBaseUrl('http://localhost:11434/v1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateSttBaseUrl('http://localhost:11434/v1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateSttBaseUrl('file:///tmp/key')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateSttBaseUrl('file:///tmp/key')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateSttBaseUrl('not a url')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateSttBaseUrl('not a url')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isRequestBodySizeAllowed('100')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isRequestBodySizeAllowed('100')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isRequestBodySizeAllowed","kind":"calls","metadata":{"unresolvedName":"isRequestBodySizeAllowed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isRequestBodySizeAllowed('1048576')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isRequestBodySizeAllowed('1048576')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isRequestBodySizeAllowed('20000000')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isRequestBodySizeAllowed('20000000')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('localhost')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('localhost')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLoopbackHost","kind":"calls","metadata":{"unresolvedName":"isLoopbackHost"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('127.0.0.1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('127.0.0.1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('[::1]')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('[::1]')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('localhost:3000')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('localhost:3000')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('127.0.0.1:8080')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('127.0.0.1:8080')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('192.168.1.1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('192.168.1.1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('example.com')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('example.com')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('0.0.0.0')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('0.0.0.0')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('10.0.0.1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('10.0.0.1')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('localhost')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('localhost')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLoopbackHost","kind":"calls","metadata":{"unresolvedName":"isLoopbackHost"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('127.0.0.1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('127.0.0.1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('[::1]')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('[::1]')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('localhost:3000')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('localhost:3000')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('127.0.0.1:8080')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('127.0.0.1:8080')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('192.168.1.1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('192.168.1.1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLoopbackHost","kind":"calls","metadata":{"unresolvedName":"isLoopbackHost"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('example.com')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('example.com')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('0.0.0.0')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('0.0.0.0')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isLoopbackHost('10.0.0.1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isLoopbackHost('10.0.0.1')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateBearerToken(`Bearer ${sampleToken}`, sampleToken)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateBearerToken(`Bearer ${sampleToken}`, sampleToken)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateBearerToken","kind":"calls","metadata":{"unresolvedName":"validateBearerToken"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateBearerToken(`Bearer wrong-token`, sampleToken)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateBearerToken(`Bearer wrong-token`, sampleToken)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateBearerToken(`Basic ${sampleToken}`, sampleToken)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateBearerToken(`Basic ${sampleToken}`, sampleToken)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateBearerToken(sampleToken, sampleToken)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateBearerToken(sampleToken, sampleToken)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateBearerToken('', sampleToken)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateBearerToken('', sampleToken)).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateBearerToken(`Bearer ${sampleToken}`, sampleToken)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateBearerToken(`Bearer ${sampleToken}`, sampleToken)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateBearerToken","kind":"calls","metadata":{"unresolvedName":"validateBearerToken"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateBearerToken(`Bearer wrong-token`, sampleToken)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateBearerToken(`Bearer wrong-token`, sampleToken)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateBearerToken","kind":"calls","metadata":{"unresolvedName":"validateBearerToken"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateBearerToken(`Basic ${sampleToken}`, sampleToken)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateBearerToken(`Basic ${sampleToken}`, sampleToken)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateBearerToken","kind":"calls","metadata":{"unresolvedName":"validateBearerToken"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateBearerToken(sampleToken, sampleToken)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateBearerToken(sampleToken, sampleToken)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateBearerToken('', sampleToken)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateBearerToken('', sampleToken)).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(preventPathTraversal(baseDir, 'index.html')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(preventPathTraversal(baseDir, 'index.html')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:preventPathTraversal","kind":"calls","metadata":{"unresolvedName":"preventPathTraversal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(preventPathTraversal(baseDir, 'assets/main.js')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(preventPathTraversal(baseDir, 'assets/main.js')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(preventPathTraversal(baseDir, '../index.html')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(preventPathTraversal(baseDir, '../index.html')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(preventPathTraversal(baseDir, '../../etc/passwd')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(preventPathTraversal(baseDir, '../../etc/passwd')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(preventPathTraversal(baseDir, 'assets/../../config.json')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(preventPathTraversal(baseDir, 'assets/../../config.json')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(preventPathTraversal(baseDir, 'index.html')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(preventPathTraversal(baseDir, 'index.html')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:preventPathTraversal","kind":"calls","metadata":{"unresolvedName":"preventPathTraversal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(preventPathTraversal(baseDir, 'assets/main.js')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(preventPathTraversal(baseDir, 'assets/main.js')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(preventPathTraversal(baseDir, '../index.html')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(preventPathTraversal(baseDir, '../index.html')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:preventPathTraversal","kind":"calls","metadata":{"unresolvedName":"preventPathTraversal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(preventPathTraversal(baseDir, '../../etc/passwd')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(preventPathTraversal(baseDir, '../../etc/passwd')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(preventPathTraversal(baseDir, 'assets/../../config.json')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(preventPathTraversal(baseDir, 'assets/../../config.json')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateHostAndOrigin('127.0.0.1', 'http://127.0.0.1:3000')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateHostAndOrigin('127.0.0.1', 'http://127.0.0.1:3000')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOrigin","kind":"calls","metadata":{"unresolvedName":"validateHostAndOrigin"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateHostAndOrigin('localhost', 'http://localhost')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateHostAndOrigin('localhost', 'http://localhost')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateHostAndOrigin('localhost:5000', '')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateHostAndOrigin('localhost:5000', '')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateHostAndOrigin('127.0.0.1', 'http://malicious.com')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateHostAndOrigin('127.0.0.1', 'http://malicious.com')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateHostAndOrigin('external.com', 'http://localhost')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateHostAndOrigin('external.com', 'http://localhost')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateHostAndOrigin('127.0.0.1', 'http://127.0.0.1:3000')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateHostAndOrigin('127.0.0.1', 'http://127.0.0.1:3000')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOrigin","kind":"calls","metadata":{"unresolvedName":"validateHostAndOrigin"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateHostAndOrigin('localhost', 'http://localhost')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateHostAndOrigin('localhost', 'http://localhost')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateHostAndOrigin('localhost:5000', '')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateHostAndOrigin('localhost:5000', '')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateHostAndOrigin('127.0.0.1', 'http://malicious.com')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateHostAndOrigin('127.0.0.1', 'http://malicious.com')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOrigin","kind":"calls","metadata":{"unresolvedName":"validateHostAndOrigin"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateHostAndOrigin('external.com', 'http://localhost')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateHostAndOrigin('external.com', 'http://localhost')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOriginForAccess","kind":"calls","metadata":{"unresolvedName":"validateHostAndOriginForAccess"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOriginForAccess","kind":"calls","metadata":{"unresolvedName":"validateHostAndOriginForAccess"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getLocalNetworkUrls","kind":"calls","metadata":{"unresolvedName":"getLocalNetworkUrls"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(urls).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(urls).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getLocalNetworkUrls","kind":"calls","metadata":{"unresolvedName":"getLocalNetworkUrls"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(urls).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(urls).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getLocalNetworkUrls","kind":"calls","metadata":{"unresolvedName":"getLocalNetworkUrls"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(urls).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(urls).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateSttBaseUrl('https://api.openai.com/v1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateSttBaseUrl('https://api.openai.com/v1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateSttBaseUrl","kind":"calls","metadata":{"unresolvedName":"validateSttBaseUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateSttBaseUrl('http://localhost:11434/v1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateSttBaseUrl('http://localhost:11434/v1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateSttBaseUrl('file:///tmp/key')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateSttBaseUrl('file:///tmp/key')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateSttBaseUrl('not a url')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateSttBaseUrl('not a url')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateSttBaseUrl('https://api.openai.com/v1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateSttBaseUrl('https://api.openai.com/v1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateSttBaseUrl","kind":"calls","metadata":{"unresolvedName":"validateSttBaseUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateSttBaseUrl('http://localhost:11434/v1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateSttBaseUrl('http://localhost:11434/v1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateSttBaseUrl('file:///tmp/key')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateSttBaseUrl('file:///tmp/key')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(validateSttBaseUrl('not a url')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(validateSttBaseUrl('not a url')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isRequestBodySizeAllowed('100')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isRequestBodySizeAllowed('100')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isRequestBodySizeAllowed","kind":"calls","metadata":{"unresolvedName":"isRequestBodySizeAllowed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isRequestBodySizeAllowed('1048576')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isRequestBodySizeAllowed('1048576')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isRequestBodySizeAllowed('20000000')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isRequestBodySizeAllowed('20000000')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isRequestBodySizeAllowed('100')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isRequestBodySizeAllowed('100')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isRequestBodySizeAllowed","kind":"calls","metadata":{"unresolvedName":"isRequestBodySizeAllowed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isRequestBodySizeAllowed('1048576')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isRequestBodySizeAllowed('1048576')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"external:expect(isRequestBodySizeAllowed('20000000')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isRequestBodySizeAllowed('20000000')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isRequestBodySizeAllowed","kind":"calls","metadata":{"unresolvedName":"isRequestBodySizeAllowed"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"external:node:path","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"external:node:os","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLoopbackHost","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLoopbackHost","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLoopbackHost","to":"external:host.startsWith","kind":"calls","metadata":{"unresolvedName":"host.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLoopbackHost","to":"external:host.indexOf","kind":"calls","metadata":{"unresolvedName":"host.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLoopbackHost","to":"external:host.slice","kind":"calls","metadata":{"unresolvedName":"host.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLoopbackHost","to":"external:host.lastIndexOf","kind":"calls","metadata":{"unresolvedName":"host.lastIndexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLoopbackHost","to":"external:host.match","kind":"calls","metadata":{"unresolvedName":"host.match"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLoopbackHost","to":"external:host.includes","kind":"calls","metadata":{"unresolvedName":"host.includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateBearerToken","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateBearerToken","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateBearerToken","to":"external:authHeader.startsWith","kind":"calls","metadata":{"unresolvedName":"authHeader.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateBearerToken","to":"external:authHeader.substring(7).trim","kind":"calls","metadata":{"unresolvedName":"authHeader.substring(7).trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateBearerToken","to":"external:authHeader.substring","kind":"calls","metadata":{"unresolvedName":"authHeader.substring"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:preventPathTraversal","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:preventPathTraversal","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:preventPathTraversal","to":"external:path.resolve","kind":"calls","metadata":{"unresolvedName":"path.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:preventPathTraversal","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:preventPathTraversal","to":"external:resolvedTarget.startsWith","kind":"calls","metadata":{"unresolvedName":"resolvedTarget.startsWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOrigin","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOrigin","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOrigin","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOriginForAccess","kind":"calls","metadata":{"unresolvedName":"validateHostAndOriginForAccess"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getHostname","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getHostname","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getHostname","to":"external:host.startsWith","kind":"calls","metadata":{"unresolvedName":"host.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getHostname","to":"external:host.indexOf","kind":"calls","metadata":{"unresolvedName":"host.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getHostname","to":"external:host.slice","kind":"calls","metadata":{"unresolvedName":"host.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getHostname","to":"external:host.lastIndexOf","kind":"calls","metadata":{"unresolvedName":"host.lastIndexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getHostname","to":"external:host.match","kind":"calls","metadata":{"unresolvedName":"host.match"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isAllowedLanHost","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isAllowedLanHost","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isAllowedLanHost","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getHostname","kind":"calls","metadata":{"unresolvedName":"getHostname"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isAllowedLanHost","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLoopbackHost","kind":"calls","metadata":{"unresolvedName":"isLoopbackHost"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isAllowedLanHost","to":"external:/^\\d{1,3}(?:\\.\\d{1,3}){3}$/.test","kind":"calls","metadata":{"unresolvedName":"/^\\d{1,3}(?:\\.\\d{1,3}){3}$/.test"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLikelyVirtualInterface","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLikelyVirtualInterface","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLikelyVirtualInterface","to":"external:name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"name.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLikelyVirtualInterface","to":"external:normalizedName.includes","kind":"calls","metadata":{"unresolvedName":"normalizedName.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLikelyVirtualInterface","to":"external:entry.mac.toLowerCase().startsWith","kind":"calls","metadata":{"unresolvedName":"entry.mac.toLowerCase().startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLikelyVirtualInterface","to":"external:entry.mac.toLowerCase","kind":"calls","metadata":{"unresolvedName":"entry.mac.toLowerCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOriginForAccess","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOriginForAccess","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOriginForAccess","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLoopbackHost","kind":"calls","metadata":{"unresolvedName":"isLoopbackHost"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOriginForAccess","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isAllowedLanHost","kind":"calls","metadata":{"unresolvedName":"isAllowedLanHost"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getLocalNetworkUrls","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getLocalNetworkUrls","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getLocalNetworkUrls","to":"external:Object.entries","kind":"calls","metadata":{"unresolvedName":"Object.entries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getLocalNetworkUrls","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isAllowedLanHost","kind":"calls","metadata":{"unresolvedName":"isAllowedLanHost"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getLocalNetworkUrls","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLikelyVirtualInterface","kind":"calls","metadata":{"unresolvedName":"isLikelyVirtualInterface"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getLocalNetworkUrls","to":"external:fallbackUrls.add","kind":"calls","metadata":{"unresolvedName":"fallbackUrls.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getLocalNetworkUrls","to":"external:physicalUrls.add","kind":"calls","metadata":{"unresolvedName":"physicalUrls.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getLocalNetworkUrls","to":"external:Array.from(urls).sort","kind":"calls","metadata":{"unresolvedName":"Array.from(urls).sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getLocalNetworkUrls","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateSttBaseUrl","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateSttBaseUrl","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isRequestBodySizeAllowed","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isRequestBodySizeAllowed","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isRequestBodySizeAllowed","to":"symbol-name:parseInt","kind":"calls","metadata":{"unresolvedName":"parseInt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isRequestBodySizeAllowed","to":"symbol-name:isNaN","kind":"calls","metadata":{"unresolvedName":"isNaN"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"external:node:os","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"external:node:path","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"external:node:fs","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"external:node:http","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"external:node:child_process","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"module:./piagentui-server.js","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:afterAll","kind":"calls","metadata":{"unresolvedName":"afterAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:fs.existsSync","kind":"calls","metadata":{"unresolvedName":"fs.existsSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:fs.rmSync","kind":"calls","metadata":{"unresolvedName":"fs.rmSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:serverInit","kind":"calls","metadata":{"unresolvedName":"serverInit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(listeners['session_start']).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(listeners['session_start']).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(listeners['session_shutdown']).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(listeners['session_shutdown']).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:fs.mkdirSync","kind":"calls","metadata":{"unresolvedName":"fs.mkdirSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:path.dirname","kind":"calls","metadata":{"unresolvedName":"path.dirname"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:fs.writeFileSync","kind":"calls","metadata":{"unresolvedName":"fs.writeFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:spawnSync","kind":"calls","metadata":{"unresolvedName":"spawnSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:new Date().toISOString","kind":"calls","metadata":{"unresolvedName":"new Date().toISOString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:listeners['session_shutdown']","kind":"calls","metadata":{"unresolvedName":"listeners['session_shutdown']"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:path\n .basename(sessionPath)\n .replace","kind":"calls","metadata":{"unresolvedName":"path\n .basename(sessionPath)\n .replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:path\n .basename","kind":"calls","metadata":{"unresolvedName":"path\n .basename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:options?.withSession","kind":"calls","metadata":{"unresolvedName":"options?.withSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:listeners['session_start']","kind":"calls","metadata":{"unresolvedName":"listeners['session_start']"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(mockContext.ui.setWidget).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(mockContext.ui.setWidget).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect.arrayContaining","kind":"calls","metadata":{"unresolvedName":"expect.arrayContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect.stringContaining","kind":"calls","metadata":{"unresolvedName":"expect.stringContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(fs.existsSync(discoveryPath)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(fs.existsSync(discoveryPath)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:fs.readFileSync","kind":"calls","metadata":{"unresolvedName":"fs.readFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(port).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(port).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(token).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(token).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:fetch","kind":"calls","metadata":{"unresolvedName":"fetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(healthRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(healthRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:healthRes.json","kind":"calls","metadata":{"unresolvedName":"healthRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(healthData).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(healthData).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(unauthRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(unauthRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(modelsRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(modelsRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:modelsRes.json","kind":"calls","metadata":{"unresolvedName":"modelsRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(modelsData.models).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(modelsData.models).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(modelsData.models[0].id).toBe","kind":"calls","metadata":{"unresolvedName":"expect(modelsData.models[0].id).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(modelsData.models[0].contextLimit).toBe","kind":"calls","metadata":{"unresolvedName":"expect(modelsData.models[0].contextLimit).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(modelsData.models[0].outputLimit).toBe","kind":"calls","metadata":{"unresolvedName":"expect(modelsData.models[0].outputLimit).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:modelsData.models.find","kind":"calls","metadata":{"unresolvedName":"modelsData.models.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(legacyModel.contextLimit).toBe","kind":"calls","metadata":{"unresolvedName":"expect(legacyModel.contextLimit).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(legacyModel.outputLimit).toBe","kind":"calls","metadata":{"unresolvedName":"expect(legacyModel.outputLimit).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(networkRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(networkRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:networkRes.json","kind":"calls","metadata":{"unresolvedName":"networkRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(networkData).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(networkData).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(Array.isArray(networkData.lanUrls)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(Array.isArray(networkData.lanUrls)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(networkEnableRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(networkEnableRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:networkEnableRes.json","kind":"calls","metadata":{"unresolvedName":"networkEnableRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(networkEnableData.lanAccessEnabled).toBe","kind":"calls","metadata":{"unresolvedName":"expect(networkEnableData.lanAccessEnabled).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(networkEnableData.browserLanUrl).toBe","kind":"calls","metadata":{"unresolvedName":"expect(networkEnableData.browserLanUrl).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(networkEnableData.browserLanUrl).not.toContain","kind":"calls","metadata":{"unresolvedName":"expect(networkEnableData.browserLanUrl).not.toContain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:nodeHttp.request","kind":"calls","metadata":{"unresolvedName":"nodeHttp.request"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:response.setEncoding","kind":"calls","metadata":{"unresolvedName":"response.setEncoding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:response.on","kind":"calls","metadata":{"unresolvedName":"response.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:req.on","kind":"calls","metadata":{"unresolvedName":"req.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:req.end","kind":"calls","metadata":{"unresolvedName":"req.end"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(lanModelsRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(lanModelsRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(lanPageRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(lanPageRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(lanPageRes.body).toContain","kind":"calls","metadata":{"unresolvedName":"expect(lanPageRes.body).toContain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(sttSettingsRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(sttSettingsRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:sttSettingsRes.json","kind":"calls","metadata":{"unresolvedName":"sttSettingsRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(initialSttSettings.apiKeyConfigured).toBe","kind":"calls","metadata":{"unresolvedName":"expect(initialSttSettings.apiKeyConfigured).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(initialSttSettings.apiKey).toBeUndefined","kind":"calls","metadata":{"unresolvedName":"expect(initialSttSettings.apiKey).toBeUndefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(saveSttRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(saveSttRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:saveSttRes.json","kind":"calls","metadata":{"unresolvedName":"saveSttRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(savedSttSettings.apiKeyConfigured).toBe","kind":"calls","metadata":{"unresolvedName":"expect(savedSttSettings.apiKeyConfigured).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(savedSttSettings.apiKey).toBeUndefined","kind":"calls","metadata":{"unresolvedName":"expect(savedSttSettings.apiKey).toBeUndefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(init?.method).toBe","kind":"calls","metadata":{"unresolvedName":"expect(init?.method).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect((init?.headers as Record).Authorization).toBe","kind":"calls","metadata":{"unresolvedName":"expect((init?.headers as Record).Authorization).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(body.get('model')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(body.get('model')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:body.get","kind":"calls","metadata":{"unresolvedName":"body.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(body.get('language')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(body.get('language')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(body.get('file')).toBeInstanceOf","kind":"calls","metadata":{"unresolvedName":"expect(body.get('file')).toBeInstanceOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:originalFetch.call","kind":"calls","metadata":{"unresolvedName":"originalFetch.call"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:Buffer.byteLength","kind":"calls","metadata":{"unresolvedName":"Buffer.byteLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(transcriptionRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(transcriptionRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:transcriptionRes.json","kind":"calls","metadata":{"unresolvedName":"transcriptionRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(transcriptionData).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(transcriptionData).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(providerFetch).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(providerFetch).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(keylessSttRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(keylessSttRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:keylessSttRes.json","kind":"calls","metadata":{"unresolvedName":"keylessSttRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(keylessSttSettings.apiKeyConfigured).toBe","kind":"calls","metadata":{"unresolvedName":"expect(keylessSttSettings.apiKeyConfigured).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(keylessSttSettings.apiKeyRequired).toBe","kind":"calls","metadata":{"unresolvedName":"expect(keylessSttSettings.apiKeyRequired).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(init?.headers).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(init?.headers).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(keylessTranscriptionRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(keylessTranscriptionRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(await keylessTranscriptionRes.json()).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(await keylessTranscriptionRes.json()).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:keylessTranscriptionRes.json","kind":"calls","metadata":{"unresolvedName":"keylessTranscriptionRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(saveTtsRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(saveTtsRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:saveTtsRes.json","kind":"calls","metadata":{"unresolvedName":"saveTtsRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(savedTtsSettings).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(savedTtsSettings).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(invalidSttRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(invalidSttRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(commandsRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(commandsRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:commandsRes.json","kind":"calls","metadata":{"unresolvedName":"commandsRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(commandsData.commands).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(commandsData.commands).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(commandsData.groups).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(commandsData.groups).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(skillsRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(skillsRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:skillsRes.json","kind":"calls","metadata":{"unresolvedName":"skillsRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:skillsData.skills.map","kind":"calls","metadata":{"unresolvedName":"skillsData.skills.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(skillsData.skills[0].content).toContain","kind":"calls","metadata":{"unresolvedName":"expect(skillsData.skills[0].content).toContain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(skillsData.groups).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(skillsData.groups).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(mcpRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(mcpRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:mcpRes.json","kind":"calls","metadata":{"unresolvedName":"mcpRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(mcpData.configPaths).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(mcpData.configPaths).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(mcpData.servers.context7).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(mcpData.servers.context7).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(mcpData.servers.localTool).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(mcpData.servers.localTool).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(extensionsRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(extensionsRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:extensionsRes.json","kind":"calls","metadata":{"unresolvedName":"extensionsRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(extensionsData.summary).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(extensionsData.summary).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(extensionsData.packages).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(extensionsData.packages).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:encodeURIComponent","kind":"calls","metadata":{"unresolvedName":"encodeURIComponent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(vcsStatusRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(vcsStatusRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:vcsStatusRes.json","kind":"calls","metadata":{"unresolvedName":"vcsStatusRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(vcsStatusData).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(vcsStatusData).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(vcsStatusData.files).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(vcsStatusData.files).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(vcsBranchesRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(vcsBranchesRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:vcsBranchesRes.json","kind":"calls","metadata":{"unresolvedName":"vcsBranchesRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(vcsBranchesData).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(vcsBranchesData).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(vcsBranchesData.branches).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(vcsBranchesData.branches).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(stageRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(stageRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(commitRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(commitRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(await commitRes.json()).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(await commitRes.json()).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:commitRes.json","kind":"calls","metadata":{"unresolvedName":"commitRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(contextRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(contextRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:contextRes.json","kind":"calls","metadata":{"unresolvedName":"contextRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(contextData).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(contextData).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(inactiveContextRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(inactiveContextRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:inactiveContextRes.json","kind":"calls","metadata":{"unresolvedName":"inactiveContextRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(inactiveContextData).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(inactiveContextData).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(getSessionsRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(getSessionsRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:getSessionsRes.json","kind":"calls","metadata":{"unresolvedName":"getSessionsRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(getSessionsData.sessions).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(getSessionsData.sessions).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(getSessionsData.sessions.map((session: any) => session.id)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(getSessionsData.sessions.map((session: any) => session.id)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:getSessionsData.sessions.map","kind":"calls","metadata":{"unresolvedName":"getSessionsData.sessions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(sessionsById.get(otherSessionId)?.title).toBe","kind":"calls","metadata":{"unresolvedName":"expect(sessionsById.get(otherSessionId)?.title).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:sessionsById.get","kind":"calls","metadata":{"unresolvedName":"sessionsById.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(sessionsById.get(namedSessionId)?.title).toBe","kind":"calls","metadata":{"unresolvedName":"expect(sessionsById.get(namedSessionId)?.title).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(sessionsById.get(noopSessionId)?.title).toBe","kind":"calls","metadata":{"unresolvedName":"expect(sessionsById.get(noopSessionId)?.title).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(createSessionRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(createSessionRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:createSessionRes.json","kind":"calls","metadata":{"unresolvedName":"createSessionRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(createSessionData.id).not.toBe","kind":"calls","metadata":{"unresolvedName":"expect(createSessionData.id).not.toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(createSessionData.title).toBe","kind":"calls","metadata":{"unresolvedName":"expect(createSessionData.title).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(createSessionData.directory).toBe","kind":"calls","metadata":{"unresolvedName":"expect(createSessionData.directory).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:fs\n .readdirSync(tempSessionDir)\n .filter","kind":"calls","metadata":{"unresolvedName":"fs\n .readdirSync(tempSessionDir)\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:fs\n .readdirSync","kind":"calls","metadata":{"unresolvedName":"fs\n .readdirSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:file.endsWith","kind":"calls","metadata":{"unresolvedName":"file.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(createdSessionFiles).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(createdSessionFiles).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(createdSessionContent).toContain","kind":"calls","metadata":{"unresolvedName":"expect(createdSessionContent).toContain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:projectDir.replace","kind":"calls","metadata":{"unresolvedName":"projectDir.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(switchSession).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(switchSession).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect.any","kind":"calls","metadata":{"unresolvedName":"expect.any"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:switchSession.mockClear","kind":"calls","metadata":{"unresolvedName":"switchSession.mockClear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(abortRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(abortRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:abortRes.json","kind":"calls","metadata":{"unresolvedName":"abortRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(abortData).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(abortData).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(mockContext.abort).toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(mockContext.abort).toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(sendRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(sendRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(mockPi.sendUserMessage).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(mockPi.sendUserMessage).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(switchSession).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(switchSession).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(sendOtherRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(sendOtherRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(replacedSetModel).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(replacedSetModel).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(replacedSendUserMessage).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(replacedSendUserMessage).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(missingSessionRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(missingSessionRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(replacedSendUserMessage).not.toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(replacedSendUserMessage).not.toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:switchSession.mockImplementationOnce","kind":"calls","metadata":{"unresolvedName":"switchSession.mockImplementationOnce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(sessionPath).toBe","kind":"calls","metadata":{"unresolvedName":"expect(sessionPath).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(noopSwitchRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(noopSwitchRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(cancelledSwitchRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(cancelledSwitchRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:fs.appendFileSync","kind":"calls","metadata":{"unresolvedName":"fs.appendFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(messagesRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(messagesRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:messagesRes.json","kind":"calls","metadata":{"unresolvedName":"messagesRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(messagesData.messages).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(messagesData.messages).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(messagesData.messages.length).toBe","kind":"calls","metadata":{"unresolvedName":"expect(messagesData.messages.length).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:messagesData.messages.every","kind":"calls","metadata":{"unresolvedName":"messagesData.messages.every"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:assistantMsg.parts.filter((p: any) => p.type === 'tool').map","kind":"calls","metadata":{"unresolvedName":"assistantMsg.parts.filter((p: any) => p.type === 'tool').map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:assistantMsg.parts.filter","kind":"calls","metadata":{"unresolvedName":"assistantMsg.parts.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:toolsById.get","kind":"calls","metadata":{"unresolvedName":"toolsById.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(toolPart).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(toolPart).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(toolPart.id).toBe","kind":"calls","metadata":{"unresolvedName":"expect(toolPart.id).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(toolPart.callID).toBe","kind":"calls","metadata":{"unresolvedName":"expect(toolPart.callID).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(toolPart.state.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(toolPart.state.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(toolPart.state.output).toBe","kind":"calls","metadata":{"unresolvedName":"expect(toolPart.state.output).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(chainedToolPart.state.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(chainedToolPart.state.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(chainedToolPart.state.output).toBe","kind":"calls","metadata":{"unresolvedName":"expect(chainedToolPart.state.output).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(failedChainedToolPart.state.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(failedChainedToolPart.state.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(failedChainedToolPart.state.output).toBe","kind":"calls","metadata":{"unresolvedName":"expect(failedChainedToolPart.state.output).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(failedChainedToolPart.state.error).toBe","kind":"calls","metadata":{"unresolvedName":"expect(failedChainedToolPart.state.error).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(eventsRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(eventsRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:eventsRes.body?.getReader","kind":"calls","metadata":{"unresolvedName":"eventsRes.body?.getReader"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(reader).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(reader).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:reader?.read","kind":"calls","metadata":{"unresolvedName":"reader?.read"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:new TextDecoder().decode","kind":"calls","metadata":{"unresolvedName":"new TextDecoder().decode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(text1).toContain","kind":"calls","metadata":{"unresolvedName":"expect(text1).toContain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(text2).toContain","kind":"calls","metadata":{"unresolvedName":"expect(text2).toContain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:listeners['agent_start']","kind":"calls","metadata":{"unresolvedName":"listeners['agent_start']"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(text3).toContain","kind":"calls","metadata":{"unresolvedName":"expect(text3).toContain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:reader?.cancel","kind":"calls","metadata":{"unresolvedName":"reader?.cancel"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:fs.existsSync","kind":"calls","metadata":{"unresolvedName":"fs.existsSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:fs.rmSync","kind":"calls","metadata":{"unresolvedName":"fs.rmSync"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:serverInit","kind":"calls","metadata":{"unresolvedName":"serverInit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(listeners['session_start']).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(listeners['session_start']).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(listeners['session_shutdown']).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(listeners['session_shutdown']).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:fs.mkdirSync","kind":"calls","metadata":{"unresolvedName":"fs.mkdirSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:path.dirname","kind":"calls","metadata":{"unresolvedName":"path.dirname"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:fs.writeFileSync","kind":"calls","metadata":{"unresolvedName":"fs.writeFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:spawnSync","kind":"calls","metadata":{"unresolvedName":"spawnSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:new Date().toISOString","kind":"calls","metadata":{"unresolvedName":"new Date().toISOString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:listeners['session_shutdown']","kind":"calls","metadata":{"unresolvedName":"listeners['session_shutdown']"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:path\n .basename(sessionPath)\n .replace","kind":"calls","metadata":{"unresolvedName":"path\n .basename(sessionPath)\n .replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:path\n .basename","kind":"calls","metadata":{"unresolvedName":"path\n .basename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:options?.withSession","kind":"calls","metadata":{"unresolvedName":"options?.withSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:listeners['session_start']","kind":"calls","metadata":{"unresolvedName":"listeners['session_start']"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(mockContext.ui.setWidget).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(mockContext.ui.setWidget).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect.arrayContaining","kind":"calls","metadata":{"unresolvedName":"expect.arrayContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect.stringContaining","kind":"calls","metadata":{"unresolvedName":"expect.stringContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(fs.existsSync(discoveryPath)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(fs.existsSync(discoveryPath)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:fs.existsSync","kind":"calls","metadata":{"unresolvedName":"fs.existsSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:fs.readFileSync","kind":"calls","metadata":{"unresolvedName":"fs.readFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(port).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(port).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(token).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(token).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:fetch","kind":"calls","metadata":{"unresolvedName":"fetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(healthRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(healthRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:healthRes.json","kind":"calls","metadata":{"unresolvedName":"healthRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(healthData).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(healthData).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(unauthRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(unauthRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(modelsRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(modelsRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:modelsRes.json","kind":"calls","metadata":{"unresolvedName":"modelsRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(modelsData.models).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(modelsData.models).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(modelsData.models[0].id).toBe","kind":"calls","metadata":{"unresolvedName":"expect(modelsData.models[0].id).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(modelsData.models[0].contextLimit).toBe","kind":"calls","metadata":{"unresolvedName":"expect(modelsData.models[0].contextLimit).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(modelsData.models[0].outputLimit).toBe","kind":"calls","metadata":{"unresolvedName":"expect(modelsData.models[0].outputLimit).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:modelsData.models.find","kind":"calls","metadata":{"unresolvedName":"modelsData.models.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(legacyModel.contextLimit).toBe","kind":"calls","metadata":{"unresolvedName":"expect(legacyModel.contextLimit).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(legacyModel.outputLimit).toBe","kind":"calls","metadata":{"unresolvedName":"expect(legacyModel.outputLimit).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(networkRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(networkRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:networkRes.json","kind":"calls","metadata":{"unresolvedName":"networkRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(networkData).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(networkData).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(Array.isArray(networkData.lanUrls)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(Array.isArray(networkData.lanUrls)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(networkEnableRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(networkEnableRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:networkEnableRes.json","kind":"calls","metadata":{"unresolvedName":"networkEnableRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(networkEnableData.lanAccessEnabled).toBe","kind":"calls","metadata":{"unresolvedName":"expect(networkEnableData.lanAccessEnabled).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(networkEnableData.browserLanUrl).toBe","kind":"calls","metadata":{"unresolvedName":"expect(networkEnableData.browserLanUrl).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(networkEnableData.browserLanUrl).not.toContain","kind":"calls","metadata":{"unresolvedName":"expect(networkEnableData.browserLanUrl).not.toContain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:nodeHttp.request","kind":"calls","metadata":{"unresolvedName":"nodeHttp.request"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:response.setEncoding","kind":"calls","metadata":{"unresolvedName":"response.setEncoding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:response.on","kind":"calls","metadata":{"unresolvedName":"response.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:req.on","kind":"calls","metadata":{"unresolvedName":"req.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:req.end","kind":"calls","metadata":{"unresolvedName":"req.end"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(lanModelsRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(lanModelsRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(lanPageRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(lanPageRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(lanPageRes.body).toContain","kind":"calls","metadata":{"unresolvedName":"expect(lanPageRes.body).toContain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(sttSettingsRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(sttSettingsRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:sttSettingsRes.json","kind":"calls","metadata":{"unresolvedName":"sttSettingsRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(initialSttSettings.apiKeyConfigured).toBe","kind":"calls","metadata":{"unresolvedName":"expect(initialSttSettings.apiKeyConfigured).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(initialSttSettings.apiKey).toBeUndefined","kind":"calls","metadata":{"unresolvedName":"expect(initialSttSettings.apiKey).toBeUndefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(saveSttRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(saveSttRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:saveSttRes.json","kind":"calls","metadata":{"unresolvedName":"saveSttRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(savedSttSettings.apiKeyConfigured).toBe","kind":"calls","metadata":{"unresolvedName":"expect(savedSttSettings.apiKeyConfigured).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(savedSttSettings.apiKey).toBeUndefined","kind":"calls","metadata":{"unresolvedName":"expect(savedSttSettings.apiKey).toBeUndefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(init?.method).toBe","kind":"calls","metadata":{"unresolvedName":"expect(init?.method).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect((init?.headers as Record).Authorization).toBe","kind":"calls","metadata":{"unresolvedName":"expect((init?.headers as Record).Authorization).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(body.get('model')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(body.get('model')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:body.get","kind":"calls","metadata":{"unresolvedName":"body.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(body.get('language')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(body.get('language')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(body.get('file')).toBeInstanceOf","kind":"calls","metadata":{"unresolvedName":"expect(body.get('file')).toBeInstanceOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:originalFetch.call","kind":"calls","metadata":{"unresolvedName":"originalFetch.call"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:Buffer.byteLength","kind":"calls","metadata":{"unresolvedName":"Buffer.byteLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(transcriptionRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(transcriptionRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:transcriptionRes.json","kind":"calls","metadata":{"unresolvedName":"transcriptionRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(transcriptionData).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(transcriptionData).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(providerFetch).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(providerFetch).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(keylessSttRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(keylessSttRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:keylessSttRes.json","kind":"calls","metadata":{"unresolvedName":"keylessSttRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(keylessSttSettings.apiKeyConfigured).toBe","kind":"calls","metadata":{"unresolvedName":"expect(keylessSttSettings.apiKeyConfigured).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(keylessSttSettings.apiKeyRequired).toBe","kind":"calls","metadata":{"unresolvedName":"expect(keylessSttSettings.apiKeyRequired).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(init?.headers).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(init?.headers).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(keylessTranscriptionRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(keylessTranscriptionRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(await keylessTranscriptionRes.json()).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(await keylessTranscriptionRes.json()).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:keylessTranscriptionRes.json","kind":"calls","metadata":{"unresolvedName":"keylessTranscriptionRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(saveTtsRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(saveTtsRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:saveTtsRes.json","kind":"calls","metadata":{"unresolvedName":"saveTtsRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(savedTtsSettings).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(savedTtsSettings).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(invalidSttRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(invalidSttRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(commandsRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(commandsRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:commandsRes.json","kind":"calls","metadata":{"unresolvedName":"commandsRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(commandsData.commands).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(commandsData.commands).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(commandsData.groups).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(commandsData.groups).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(skillsRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(skillsRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:skillsRes.json","kind":"calls","metadata":{"unresolvedName":"skillsRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:skillsData.skills.map","kind":"calls","metadata":{"unresolvedName":"skillsData.skills.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(skillsData.skills[0].content).toContain","kind":"calls","metadata":{"unresolvedName":"expect(skillsData.skills[0].content).toContain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(skillsData.groups).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(skillsData.groups).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(mcpRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(mcpRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:mcpRes.json","kind":"calls","metadata":{"unresolvedName":"mcpRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(mcpData.configPaths).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(mcpData.configPaths).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(mcpData.servers.context7).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(mcpData.servers.context7).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(mcpData.servers.localTool).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(mcpData.servers.localTool).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(extensionsRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(extensionsRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:extensionsRes.json","kind":"calls","metadata":{"unresolvedName":"extensionsRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(extensionsData.summary).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(extensionsData.summary).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(extensionsData.packages).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(extensionsData.packages).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:encodeURIComponent","kind":"calls","metadata":{"unresolvedName":"encodeURIComponent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(vcsStatusRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(vcsStatusRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:vcsStatusRes.json","kind":"calls","metadata":{"unresolvedName":"vcsStatusRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(vcsStatusData).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(vcsStatusData).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(vcsStatusData.files).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(vcsStatusData.files).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(vcsBranchesRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(vcsBranchesRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:vcsBranchesRes.json","kind":"calls","metadata":{"unresolvedName":"vcsBranchesRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(vcsBranchesData).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(vcsBranchesData).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(vcsBranchesData.branches).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(vcsBranchesData.branches).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(stageRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(stageRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(commitRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(commitRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(await commitRes.json()).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(await commitRes.json()).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:commitRes.json","kind":"calls","metadata":{"unresolvedName":"commitRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(contextRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(contextRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:contextRes.json","kind":"calls","metadata":{"unresolvedName":"contextRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(contextData).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(contextData).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(inactiveContextRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(inactiveContextRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:inactiveContextRes.json","kind":"calls","metadata":{"unresolvedName":"inactiveContextRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(inactiveContextData).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(inactiveContextData).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(getSessionsRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(getSessionsRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:getSessionsRes.json","kind":"calls","metadata":{"unresolvedName":"getSessionsRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(getSessionsData.sessions).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(getSessionsData.sessions).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(getSessionsData.sessions.map((session: any) => session.id)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(getSessionsData.sessions.map((session: any) => session.id)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:getSessionsData.sessions.map","kind":"calls","metadata":{"unresolvedName":"getSessionsData.sessions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(sessionsById.get(otherSessionId)?.title).toBe","kind":"calls","metadata":{"unresolvedName":"expect(sessionsById.get(otherSessionId)?.title).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:sessionsById.get","kind":"calls","metadata":{"unresolvedName":"sessionsById.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(sessionsById.get(namedSessionId)?.title).toBe","kind":"calls","metadata":{"unresolvedName":"expect(sessionsById.get(namedSessionId)?.title).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(sessionsById.get(noopSessionId)?.title).toBe","kind":"calls","metadata":{"unresolvedName":"expect(sessionsById.get(noopSessionId)?.title).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(createSessionRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(createSessionRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:createSessionRes.json","kind":"calls","metadata":{"unresolvedName":"createSessionRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(createSessionData.id).not.toBe","kind":"calls","metadata":{"unresolvedName":"expect(createSessionData.id).not.toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(createSessionData.title).toBe","kind":"calls","metadata":{"unresolvedName":"expect(createSessionData.title).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(createSessionData.directory).toBe","kind":"calls","metadata":{"unresolvedName":"expect(createSessionData.directory).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:fs\n .readdirSync(tempSessionDir)\n .filter","kind":"calls","metadata":{"unresolvedName":"fs\n .readdirSync(tempSessionDir)\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:fs\n .readdirSync","kind":"calls","metadata":{"unresolvedName":"fs\n .readdirSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:file.endsWith","kind":"calls","metadata":{"unresolvedName":"file.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(createdSessionFiles).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(createdSessionFiles).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(createdSessionContent).toContain","kind":"calls","metadata":{"unresolvedName":"expect(createdSessionContent).toContain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:projectDir.replace","kind":"calls","metadata":{"unresolvedName":"projectDir.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(switchSession).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(switchSession).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect.any","kind":"calls","metadata":{"unresolvedName":"expect.any"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:switchSession.mockClear","kind":"calls","metadata":{"unresolvedName":"switchSession.mockClear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(abortRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(abortRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:abortRes.json","kind":"calls","metadata":{"unresolvedName":"abortRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(abortData).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(abortData).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(mockContext.abort).toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(mockContext.abort).toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(sendRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(sendRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(mockPi.sendUserMessage).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(mockPi.sendUserMessage).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(switchSession).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(switchSession).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(sendOtherRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(sendOtherRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(replacedSetModel).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(replacedSetModel).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(replacedSendUserMessage).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(replacedSendUserMessage).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(missingSessionRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(missingSessionRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(replacedSendUserMessage).not.toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(replacedSendUserMessage).not.toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:switchSession.mockImplementationOnce","kind":"calls","metadata":{"unresolvedName":"switchSession.mockImplementationOnce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(sessionPath).toBe","kind":"calls","metadata":{"unresolvedName":"expect(sessionPath).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(noopSwitchRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(noopSwitchRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(cancelledSwitchRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(cancelledSwitchRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:fs.appendFileSync","kind":"calls","metadata":{"unresolvedName":"fs.appendFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(messagesRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(messagesRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:messagesRes.json","kind":"calls","metadata":{"unresolvedName":"messagesRes.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(messagesData.messages).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(messagesData.messages).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(messagesData.messages.length).toBe","kind":"calls","metadata":{"unresolvedName":"expect(messagesData.messages.length).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:messagesData.messages.every","kind":"calls","metadata":{"unresolvedName":"messagesData.messages.every"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:assistantMsg.parts.filter((p: any) => p.type === 'tool').map","kind":"calls","metadata":{"unresolvedName":"assistantMsg.parts.filter((p: any) => p.type === 'tool').map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:assistantMsg.parts.filter","kind":"calls","metadata":{"unresolvedName":"assistantMsg.parts.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:toolsById.get","kind":"calls","metadata":{"unresolvedName":"toolsById.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(toolPart).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(toolPart).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(toolPart.id).toBe","kind":"calls","metadata":{"unresolvedName":"expect(toolPart.id).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(toolPart.callID).toBe","kind":"calls","metadata":{"unresolvedName":"expect(toolPart.callID).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(toolPart.state.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(toolPart.state.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(toolPart.state.output).toBe","kind":"calls","metadata":{"unresolvedName":"expect(toolPart.state.output).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(chainedToolPart.state.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(chainedToolPart.state.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(chainedToolPart.state.output).toBe","kind":"calls","metadata":{"unresolvedName":"expect(chainedToolPart.state.output).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(failedChainedToolPart.state.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(failedChainedToolPart.state.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(failedChainedToolPart.state.output).toBe","kind":"calls","metadata":{"unresolvedName":"expect(failedChainedToolPart.state.output).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(failedChainedToolPart.state.error).toBe","kind":"calls","metadata":{"unresolvedName":"expect(failedChainedToolPart.state.error).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(eventsRes.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(eventsRes.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:eventsRes.body?.getReader","kind":"calls","metadata":{"unresolvedName":"eventsRes.body?.getReader"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(reader).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(reader).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:reader?.read","kind":"calls","metadata":{"unresolvedName":"reader?.read"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:new TextDecoder().decode","kind":"calls","metadata":{"unresolvedName":"new TextDecoder().decode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(text1).toContain","kind":"calls","metadata":{"unresolvedName":"expect(text1).toContain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(text2).toContain","kind":"calls","metadata":{"unresolvedName":"expect(text2).toContain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:listeners['agent_start']","kind":"calls","metadata":{"unresolvedName":"listeners['agent_start']"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(text3).toContain","kind":"calls","metadata":{"unresolvedName":"expect(text3).toContain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:reader?.cancel","kind":"calls","metadata":{"unresolvedName":"reader?.cancel"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:on","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:on","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:listeners['session_shutdown']","kind":"calls","metadata":{"unresolvedName":"listeners['session_shutdown']"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:path\n .basename(sessionPath)\n .replace","kind":"calls","metadata":{"unresolvedName":"path\n .basename(sessionPath)\n .replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:path\n .basename","kind":"calls","metadata":{"unresolvedName":"path\n .basename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:options?.withSession","kind":"calls","metadata":{"unresolvedName":"options?.withSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:nodeHttp.request","kind":"calls","metadata":{"unresolvedName":"nodeHttp.request"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:response.setEncoding","kind":"calls","metadata":{"unresolvedName":"response.setEncoding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:response.on","kind":"calls","metadata":{"unresolvedName":"response.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:req.on","kind":"calls","metadata":{"unresolvedName":"req.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:req.end","kind":"calls","metadata":{"unresolvedName":"req.end"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:response.setEncoding","kind":"calls","metadata":{"unresolvedName":"response.setEncoding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:response.on","kind":"calls","metadata":{"unresolvedName":"response.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:nodeHttp.request","kind":"calls","metadata":{"unresolvedName":"nodeHttp.request"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:response.setEncoding","kind":"calls","metadata":{"unresolvedName":"response.setEncoding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:response.on","kind":"calls","metadata":{"unresolvedName":"response.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:req.on","kind":"calls","metadata":{"unresolvedName":"req.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:req.end","kind":"calls","metadata":{"unresolvedName":"req.end"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:response.setEncoding","kind":"calls","metadata":{"unresolvedName":"response.setEncoding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:response.on","kind":"calls","metadata":{"unresolvedName":"response.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(init?.method).toBe","kind":"calls","metadata":{"unresolvedName":"expect(init?.method).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect((init?.headers as Record).Authorization).toBe","kind":"calls","metadata":{"unresolvedName":"expect((init?.headers as Record).Authorization).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(body.get('model')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(body.get('model')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:body.get","kind":"calls","metadata":{"unresolvedName":"body.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(body.get('language')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(body.get('language')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(body.get('file')).toBeInstanceOf","kind":"calls","metadata":{"unresolvedName":"expect(body.get('file')).toBeInstanceOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:originalFetch.call","kind":"calls","metadata":{"unresolvedName":"originalFetch.call"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(init?.headers).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(init?.headers).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:originalFetch.call","kind":"calls","metadata":{"unresolvedName":"originalFetch.call"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(sessionPath).toBe","kind":"calls","metadata":{"unresolvedName":"expect(sessionPath).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"external:expect(sessionPath).toBe","kind":"calls","metadata":{"unresolvedName":"expect(sessionPath).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"external:@mariozechner/pi-coding-agent","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"external:ws","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"external:node:http","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"external:node:fs","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"external:node:path","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"external:node:crypto","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"module:./piagentui-server-core.js","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"module:./piagentui-settings-store.js","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"module:./piagentui-extension-manager.js","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"module:./piagentui-git-manager.js","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageId","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageId","to":"external:Math.random().toString(36).substring","kind":"calls","metadata":{"unresolvedName":"Math.random().toString(36).substring"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageId","to":"external:Math.random().toString","kind":"calls","metadata":{"unresolvedName":"Math.random().toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageId","to":"external:Math.random","kind":"calls","metadata":{"unresolvedName":"Math.random"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageId","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageId","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageId","to":"external:messageIds.get","kind":"calls","metadata":{"unresolvedName":"messageIds.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageId","to":"external:messageIds.set","kind":"calls","metadata":{"unresolvedName":"messageIds.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:isVisibleChatRole","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:isVisibleChatRole","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageText","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageText","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageText","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageText","to":"external:message.content\n .filter((c: any) => c && c.type === 'text')\n .map","kind":"calls","metadata":{"unresolvedName":"message.content\n .filter((c: any) => c && c.type === 'text')\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageText","to":"external:message.content\n .filter","kind":"calls","metadata":{"unresolvedName":"message.content\n .filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeCommandApiSource","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeCommandApiSource","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:categoryForCommandSource","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:categoryForCommandSource","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getAvailableCommands","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getAvailableCommands","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getAvailableCommands","to":"external:pi.getCommands","kind":"calls","metadata":{"unresolvedName":"pi.getCommands"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getAvailableCommands","to":"external:commands.set","kind":"calls","metadata":{"unresolvedName":"commands.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getAvailableCommands","to":"external:commands.has","kind":"calls","metadata":{"unresolvedName":"commands.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getAvailableCommands","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeCommandApiSource","kind":"calls","metadata":{"unresolvedName":"normalizeCommandApiSource"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getAvailableCommands","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:categoryForCommandSource","kind":"calls","metadata":{"unresolvedName":"categoryForCommandSource"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getAvailableCommands","to":"external:[...commands.values()].sort","kind":"calls","metadata":{"unresolvedName":"[...commands.values()].sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getAvailableCommands","to":"external:commands.values","kind":"calls","metadata":{"unresolvedName":"commands.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getAvailableCommands","to":"external:a.name.localeCompare","kind":"calls","metadata":{"unresolvedName":"a.name.localeCompare"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:countCommandsBySource","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:countCommandsBySource","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:countCommandsBySource","to":"external:commands.reduce","kind":"calls","metadata":{"unresolvedName":"commands.reduce"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:decodeXml","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:decodeXml","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:decodeXml","to":"external:text\n .replace(/'/g, \"'\")\n .replace(/"/g, '\"')\n .replace","kind":"calls","metadata":{"unresolvedName":"text\n .replace(/'/g, \"'\")\n .replace(/"/g, '\"')\n .replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:decodeXml","to":"external:text\n .replace(/'/g, \"'\")\n .replace","kind":"calls","metadata":{"unresolvedName":"text\n .replace(/'/g, \"'\")\n .replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:decodeXml","to":"external:text\n .replace","kind":"calls","metadata":{"unresolvedName":"text\n .replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeComparablePath","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeComparablePath","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeComparablePath","to":"external:path\n .resolve(value || '')\n .replace(/\\\\/g, '/')\n .toLowerCase","kind":"calls","metadata":{"unresolvedName":"path\n .resolve(value || '')\n .replace(/\\\\/g, '/')\n .toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeComparablePath","to":"external:path\n .resolve(value || '')\n .replace","kind":"calls","metadata":{"unresolvedName":"path\n .resolve(value || '')\n .replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeComparablePath","to":"external:path\n .resolve","kind":"calls","metadata":{"unresolvedName":"path\n .resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:classifySkillSource","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:classifySkillSource","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:classifySkillSource","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeComparablePath","kind":"calls","metadata":{"unresolvedName":"normalizeComparablePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:classifySkillSource","to":"external:normalizedLocation.includes","kind":"calls","metadata":{"unresolvedName":"normalizedLocation.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:classifySkillSource","to":"external:normalizedLocation.startsWith","kind":"calls","metadata":{"unresolvedName":"normalizedLocation.startsWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:parseSkillsFromSystemPrompt","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:parseSkillsFromSystemPrompt","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:parseSkillsFromSystemPrompt","to":"external:prompt.matchAll","kind":"calls","metadata":{"unresolvedName":"prompt.matchAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:parseSkillsFromSystemPrompt","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:decodeXml","kind":"calls","metadata":{"unresolvedName":"decodeXml"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:parseSkillsFromSystemPrompt","to":"external:match[3]?.trim","kind":"calls","metadata":{"unresolvedName":"match[3]?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:parseSkillsFromSystemPrompt","to":"external:fs.existsSync","kind":"calls","metadata":{"unresolvedName":"fs.existsSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:parseSkillsFromSystemPrompt","to":"external:fs.readFileSync","kind":"calls","metadata":{"unresolvedName":"fs.readFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:parseSkillsFromSystemPrompt","to":"external:skills.push","kind":"calls","metadata":{"unresolvedName":"skills.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:parseSkillsFromSystemPrompt","to":"external:match[1]?.trim","kind":"calls","metadata":{"unresolvedName":"match[1]?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:parseSkillsFromSystemPrompt","to":"external:match[2]?.trim","kind":"calls","metadata":{"unresolvedName":"match[2]?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:parseSkillsFromSystemPrompt","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:classifySkillSource","kind":"calls","metadata":{"unresolvedName":"classifySkillSource"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:countSkillsBySource","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:countSkillsBySource","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:countSkillsBySource","to":"external:skills.reduce","kind":"calls","metadata":{"unresolvedName":"skills.reduce"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getHomeDir","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getHomeDir","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readJsonFile","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readJsonFile","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readJsonFile","to":"external:fs.existsSync","kind":"calls","metadata":{"unresolvedName":"fs.existsSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readJsonFile","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readJsonFile","to":"external:fs.readFileSync","kind":"calls","metadata":{"unresolvedName":"fs.readFileSync"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMcpConfigCandidates","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMcpConfigCandidates","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMcpConfigCandidates","to":"symbol-name:getHomeDir","kind":"calls","metadata":{"unresolvedName":"getHomeDir"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMcpConfigCandidates","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMcpConfigCandidates","to":"symbol-name:Boolean","kind":"calls","metadata":{"unresolvedName":"Boolean"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeMcpTransport","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeMcpTransport","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeMcpServer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeMcpServer","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeMcpServer","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeMcpServer","to":"external:config.args.map","kind":"calls","metadata":{"unresolvedName":"config.args.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeMcpServer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeMcpTransport","kind":"calls","metadata":{"unresolvedName":"normalizeMcpTransport"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:loadMcpStatus","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:loadMcpStatus","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:loadMcpStatus","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMcpConfigCandidates","kind":"calls","metadata":{"unresolvedName":"getMcpConfigCandidates"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:loadMcpStatus","to":"symbol-name:readJsonFile","kind":"calls","metadata":{"unresolvedName":"readJsonFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:loadMcpStatus","to":"external:configPaths.push","kind":"calls","metadata":{"unresolvedName":"configPaths.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:loadMcpStatus","to":"external:Object.entries","kind":"calls","metadata":{"unresolvedName":"Object.entries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:loadMcpStatus","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeMcpServer","kind":"calls","metadata":{"unresolvedName":"normalizeMcpServer"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:sendQueue.catch(() => undefined).then","kind":"calls","metadata":{"unresolvedName":"sendQueue.catch(() => undefined).then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:sendQueue.catch","kind":"calls","metadata":{"unresolvedName":"sendQueue.catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:run.then","kind":"calls","metadata":{"unresolvedName":"run.then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:latestCtx?.sessionManager?.getSessionId","kind":"calls","metadata":{"unresolvedName":"latestCtx?.sessionManager?.getSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:latestCtx?.sessionManager?.getSessionDir","kind":"calls","metadata":{"unresolvedName":"latestCtx?.sessionManager?.getSessionDir"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:fs.existsSync","kind":"calls","metadata":{"unresolvedName":"fs.existsSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:fs.readdirSync(sessionDir).filter","kind":"calls","metadata":{"unresolvedName":"fs.readdirSync(sessionDir).filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:fs.readdirSync","kind":"calls","metadata":{"unresolvedName":"fs.readdirSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:f.endsWith","kind":"calls","metadata":{"unresolvedName":"f.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:files.find","kind":"calls","metadata":{"unresolvedName":"files.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:sessionId.slice","kind":"calls","metadata":{"unresolvedName":"sessionId.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:randomUUID","kind":"calls","metadata":{"unresolvedName":"randomUUID"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:randomUUID().slice","kind":"calls","metadata":{"unresolvedName":"randomUUID().slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:fs.mkdirSync","kind":"calls","metadata":{"unresolvedName":"fs.mkdirSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createSessionId","kind":"calls","metadata":{"unresolvedName":"createSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:new Date().toISOString","kind":"calls","metadata":{"unresolvedName":"new Date().toISOString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:timestamp.replace","kind":"calls","metadata":{"unresolvedName":"timestamp.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:process.cwd","kind":"calls","metadata":{"unresolvedName":"process.cwd"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeSessionTitle","kind":"calls","metadata":{"unresolvedName":"normalizeSessionTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:entries.push","kind":"calls","metadata":{"unresolvedName":"entries.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createSessionEntryId","kind":"calls","metadata":{"unresolvedName":"createSessionEntryId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:fs.writeFileSync","kind":"calls","metadata":{"unresolvedName":"fs.writeFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:entries.join","kind":"calls","metadata":{"unresolvedName":"entries.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createRealSessionFile","kind":"calls","metadata":{"unresolvedName":"createRealSessionFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:latestCtx.switchSession","kind":"calls","metadata":{"unresolvedName":"latestCtx.switchSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata","kind":"calls","metadata":{"unresolvedName":"readSessionMetadata"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:getSessionInfo","kind":"calls","metadata":{"unresolvedName":"getSessionInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:path\n .basename(sessionFile)\n .replace","kind":"calls","metadata":{"unresolvedName":"path\n .basename(sessionFile)\n .replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:path\n .basename","kind":"calls","metadata":{"unresolvedName":"path\n .basename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:title\n .split('')\n .map","kind":"calls","metadata":{"unresolvedName":"title\n .split('')\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:title\n .split","kind":"calls","metadata":{"unresolvedName":"title\n .split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:char.charCodeAt","kind":"calls","metadata":{"unresolvedName":"char.charCodeAt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:fs.readFileSync","kind":"calls","metadata":{"unresolvedName":"fs.readFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:content.trim().split('\\n').filter","kind":"calls","metadata":{"unresolvedName":"content.trim().split('\\n').filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:content.trim().split","kind":"calls","metadata":{"unresolvedName":"content.trim().split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:content.trim","kind":"calls","metadata":{"unresolvedName":"content.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:lines.slice","kind":"calls","metadata":{"unresolvedName":"lines.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:getMessageText","kind":"calls","metadata":{"unresolvedName":"getMessageText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:fs.statSync","kind":"calls","metadata":{"unresolvedName":"fs.statSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:new Date(header.timestamp).getTime","kind":"calls","metadata":{"unresolvedName":"new Date(header.timestamp).getTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getFallbackSessionTitle","kind":"calls","metadata":{"unresolvedName":"getFallbackSessionTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Number.isNaN","kind":"calls","metadata":{"unresolvedName":"Number.isNaN"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:ctx.modelRegistry?.find","kind":"calls","metadata":{"unresolvedName":"ctx.modelRegistry?.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:ctx.setModel","kind":"calls","metadata":{"unresolvedName":"ctx.setModel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:pi.setModel","kind":"calls","metadata":{"unresolvedName":"pi.setModel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:console.error","kind":"calls","metadata":{"unresolvedName":"console.error"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getCurrentSessionId","kind":"calls","metadata":{"unresolvedName":"getCurrentSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setRequestedModel","kind":"calls","metadata":{"unresolvedName":"setRequestedModel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:pi.sendUserMessage","kind":"calls","metadata":{"unresolvedName":"pi.sendUserMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:p.catch","kind":"calls","metadata":{"unresolvedName":"p.catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionFileForId","kind":"calls","metadata":{"unresolvedName":"getSessionFileForId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:replacedCtx.sendUserMessage","kind":"calls","metadata":{"unresolvedName":"replacedCtx.sendUserMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:latestCtx.isIdle","kind":"calls","metadata":{"unresolvedName":"latestCtx.isIdle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE","kind":"calls","metadata":{"unresolvedName":"broadcastSSE"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Math.random().toString(36).substring","kind":"calls","metadata":{"unresolvedName":"Math.random().toString(36).substring"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Math.random().toString","kind":"calls","metadata":{"unresolvedName":"Math.random().toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Math.random","kind":"calls","metadata":{"unresolvedName":"Math.random"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:res.write","kind":"calls","metadata":{"unresolvedName":"res.write"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Array.from({ length: 4 }, () => Math.random().toString(36).substring(2)).join","kind":"calls","metadata":{"unresolvedName":"Array.from({ length: 4 }, () => Math.random().toString(36).substring(2)).join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:createPiAgentUiSettingsStore","kind":"calls","metadata":{"unresolvedName":"createPiAgentUiSettingsStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:resolvePiAgentUiSettingsPaths","kind":"calls","metadata":{"unresolvedName":"resolvePiAgentUiSettingsPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:settingsStore.getSettings","kind":"calls","metadata":{"unresolvedName":"settingsStore.getSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:settingsStore.saveSettings","kind":"calls","metadata":{"unresolvedName":"settingsStore.saveSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getLocalSettings","kind":"calls","metadata":{"unresolvedName":"getLocalSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getLocalNetworkUrls","kind":"calls","metadata":{"unresolvedName":"getLocalNetworkUrls"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:buildBrowserUrl","kind":"calls","metadata":{"unresolvedName":"buildBrowserUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getEffectiveSttSettings","kind":"calls","metadata":{"unresolvedName":"getEffectiveSttSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:req.on","kind":"calls","metadata":{"unresolvedName":"req.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:body.trim","kind":"calls","metadata":{"unresolvedName":"body.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateSttBaseUrl","kind":"calls","metadata":{"unresolvedName":"validateSttBaseUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:update.baseUrl.replace","kind":"calls","metadata":{"unresolvedName":"update.baseUrl.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:update.transcriptionEndpoint.startsWith","kind":"calls","metadata":{"unresolvedName":"update.transcriptionEndpoint.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:update.transcriptionModel.trim","kind":"calls","metadata":{"unresolvedName":"update.transcriptionModel.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:update.language.trim","kind":"calls","metadata":{"unresolvedName":"update.language.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Object.prototype.hasOwnProperty.call","kind":"calls","metadata":{"unresolvedName":"Object.prototype.hasOwnProperty.call"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:update.apiKey.trim","kind":"calls","metadata":{"unresolvedName":"update.apiKey.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:saveLocalSettings","kind":"calls","metadata":{"unresolvedName":"saveLocalSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sanitizeSttSettings","kind":"calls","metadata":{"unresolvedName":"sanitizeSttSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getEffectiveTtsSettings","kind":"calls","metadata":{"unresolvedName":"getEffectiveTtsSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:isTtsResponseFormat","kind":"calls","metadata":{"unresolvedName":"isTtsResponseFormat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:update.speechEndpoint.startsWith","kind":"calls","metadata":{"unresolvedName":"update.speechEndpoint.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:update.model.trim","kind":"calls","metadata":{"unresolvedName":"update.model.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:update.voice.trim","kind":"calls","metadata":{"unresolvedName":"update.voice.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sanitizeTtsSettings","kind":"calls","metadata":{"unresolvedName":"sanitizeTtsSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:chunks.push","kind":"calls","metadata":{"unresolvedName":"chunks.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Buffer.isBuffer","kind":"calls","metadata":{"unresolvedName":"Buffer.isBuffer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Buffer.from","kind":"calls","metadata":{"unresolvedName":"Buffer.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Buffer.concat","kind":"calls","metadata":{"unresolvedName":"Buffer.concat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:contentType?.match","kind":"calls","metadata":{"unresolvedName":"contentType?.match"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:body.toString","kind":"calls","metadata":{"unresolvedName":"body.toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:rawBody.split","kind":"calls","metadata":{"unresolvedName":"rawBody.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:rawPart.replace","kind":"calls","metadata":{"unresolvedName":"rawPart.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:part.indexOf","kind":"calls","metadata":{"unresolvedName":"part.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:part.slice","kind":"calls","metadata":{"unresolvedName":"part.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:part\n .slice(headerEnd + 4)\n .replace","kind":"calls","metadata":{"unresolvedName":"part\n .slice(headerEnd + 4)\n .replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:part\n .slice","kind":"calls","metadata":{"unresolvedName":"part\n .slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:rawHeaders.match","kind":"calls","metadata":{"unresolvedName":"rawHeaders.match"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:disposition.match","kind":"calls","metadata":{"unresolvedName":"disposition.match"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:rawHeaders.match(/content-type:\\s*([^\\r\\n]+)/i)?.[1]?.trim","kind":"calls","metadata":{"unresolvedName":"rawHeaders.match(/content-type:\\s*([^\\r\\n]+)/i)?.[1]?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:form.set","kind":"calls","metadata":{"unresolvedName":"form.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isRequestBodySizeAllowed","kind":"calls","metadata":{"unresolvedName":"isRequestBodySizeAllowed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readRequestBuffer","kind":"calls","metadata":{"unresolvedName":"readRequestBuffer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readMultipartFormData","kind":"calls","metadata":{"unresolvedName":"readMultipartFormData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:inputForm.get","kind":"calls","metadata":{"unresolvedName":"inputForm.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:providerForm.set","kind":"calls","metadata":{"unresolvedName":"providerForm.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:(settings.baseUrl || 'https://api.openai.com/v1').replace","kind":"calls","metadata":{"unresolvedName":"(settings.baseUrl || 'https://api.openai.com/v1').replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:fetch","kind":"calls","metadata":{"unresolvedName":"fetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:providerRes.text","kind":"calls","metadata":{"unresolvedName":"providerRes.text"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readJsonBody","kind":"calls","metadata":{"unresolvedName":"readJsonBody"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:requestBody.input.trim","kind":"calls","metadata":{"unresolvedName":"requestBody.input.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:providerRes.arrayBuffer","kind":"calls","metadata":{"unresolvedName":"providerRes.arrayBuffer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:providerRes.headers.get","kind":"calls","metadata":{"unresolvedName":"providerRes.headers.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:path.resolve","kind":"calls","metadata":{"unresolvedName":"path.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:preventPathTraversal","kind":"calls","metadata":{"unresolvedName":"preventPathTraversal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:res.writeHead","kind":"calls","metadata":{"unresolvedName":"res.writeHead"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:res.end","kind":"calls","metadata":{"unresolvedName":"res.end"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:fs.statSync(filePath).isDirectory","kind":"calls","metadata":{"unresolvedName":"fs.statSync(filePath).isDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:path.extname(targetFile).toLowerCase","kind":"calls","metadata":{"unresolvedName":"path.extname(targetFile).toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:path.extname","kind":"calls","metadata":{"unresolvedName":"path.extname"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:serveIndexHtml","kind":"calls","metadata":{"unresolvedName":"serveIndexHtml"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:path.extname(filePath).toLowerCase","kind":"calls","metadata":{"unresolvedName":"path.extname(filePath).toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:fs.createReadStream(filePath).pipe","kind":"calls","metadata":{"unresolvedName":"fs.createReadStream(filePath).pipe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:fs.createReadStream","kind":"calls","metadata":{"unresolvedName":"fs.createReadStream"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLoopbackHost","kind":"calls","metadata":{"unresolvedName":"isLoopbackHost"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:content.includes","kind":"calls","metadata":{"unresolvedName":"content.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:content.replace","kind":"calls","metadata":{"unresolvedName":"content.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateBearerToken","kind":"calls","metadata":{"unresolvedName":"validateBearerToken"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOriginForAccess","kind":"calls","metadata":{"unresolvedName":"validateHostAndOriginForAccess"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:checkAuth","kind":"calls","metadata":{"unresolvedName":"checkAuth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:setInterval","kind":"calls","metadata":{"unresolvedName":"setInterval"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:clearInterval","kind":"calls","metadata":{"unresolvedName":"clearInterval"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:sseClients.delete","kind":"calls","metadata":{"unresolvedName":"sseClients.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:sseClients.add","kind":"calls","metadata":{"unresolvedName":"sseClients.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:pathname.split('/').filter","kind":"calls","metadata":{"unresolvedName":"pathname.split('/').filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:pathname.split","kind":"calls","metadata":{"unresolvedName":"pathname.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getNetworkAccessInfo","kind":"calls","metadata":{"unresolvedName":"getNetworkAccessInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:updateSttSettings","kind":"calls","metadata":{"unresolvedName":"updateSttSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:updateTtsSettings","kind":"calls","metadata":{"unresolvedName":"updateTtsSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:parsedUrl.searchParams.get","kind":"calls","metadata":{"unresolvedName":"parsedUrl.searchParams.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","kind":"calls","metadata":{"unresolvedName":"buildExtensionCatalog"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:executeExtensionInstallCommand","kind":"calls","metadata":{"unresolvedName":"executeExtensionInstallCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:executeExtensionPackageRemoval","kind":"calls","metadata":{"unresolvedName":"executeExtensionPackageRemoval"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:transcribeAudio","kind":"calls","metadata":{"unresolvedName":"transcribeAudio"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:synthesizeSpeech","kind":"calls","metadata":{"unresolvedName":"synthesizeSpeech"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:parseSkillsFromSystemPrompt","kind":"calls","metadata":{"unresolvedName":"parseSkillsFromSystemPrompt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:latestCtx?.getSystemPrompt","kind":"calls","metadata":{"unresolvedName":"latestCtx?.getSystemPrompt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:countSkillsBySource","kind":"calls","metadata":{"unresolvedName":"countSkillsBySource"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:loadMcpStatus","kind":"calls","metadata":{"unresolvedName":"loadMcpStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:latestCtx?.modelRegistry?.getAvailable","kind":"calls","metadata":{"unresolvedName":"latestCtx?.modelRegistry?.getAvailable"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:latestCtx?.modelRegistry?.getAll","kind":"calls","metadata":{"unresolvedName":"latestCtx?.modelRegistry?.getAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:m.input?.includes","kind":"calls","metadata":{"unresolvedName":"m.input?.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:registryModels.map","kind":"calls","metadata":{"unresolvedName":"registryModels.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:registryModels.find","kind":"calls","metadata":{"unresolvedName":"registryModels.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:mapModel","kind":"calls","metadata":{"unresolvedName":"mapModel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:models.filter","kind":"calls","metadata":{"unresolvedName":"models.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:models.unshift","kind":"calls","metadata":{"unresolvedName":"models.unshift"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:latestCtx.abort","kind":"calls","metadata":{"unresolvedName":"latestCtx.abort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createAndSwitchToRealSession","kind":"calls","metadata":{"unresolvedName":"createAndSwitchToRealSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:latestCtx.getContextUsage","kind":"calls","metadata":{"unresolvedName":"latestCtx.getContextUsage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:files.map","kind":"calls","metadata":{"unresolvedName":"files.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:filesWithTime.sort","kind":"calls","metadata":{"unresolvedName":"filesWithTime.sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:line.trim","kind":"calls","metadata":{"unresolvedName":"line.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:isVisibleChatRole","kind":"calls","metadata":{"unresolvedName":"isVisibleChatRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:messageMap.has","kind":"calls","metadata":{"unresolvedName":"messageMap.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:new Date(entry.timestamp).getTime","kind":"calls","metadata":{"unresolvedName":"new Date(entry.timestamp).getTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:messageMap.set","kind":"calls","metadata":{"unresolvedName":"messageMap.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:orderedMessageIds.push","kind":"calls","metadata":{"unresolvedName":"orderedMessageIds.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:messageMap.get","kind":"calls","metadata":{"unresolvedName":"messageMap.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:msgObj.parts.push","kind":"calls","metadata":{"unresolvedName":"msgObj.parts.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:toolCallMessageIds.set","kind":"calls","metadata":{"unresolvedName":"toolCallMessageIds.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:toolCallMessageIds.get","kind":"calls","metadata":{"unresolvedName":"toolCallMessageIds.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:parentMsg.parts.find","kind":"calls","metadata":{"unresolvedName":"parentMsg.parts.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:entry.message.content\n .filter","kind":"calls","metadata":{"unresolvedName":"entry.message.content\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:parentMsg.parts.push","kind":"calls","metadata":{"unresolvedName":"parentMsg.parts.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:orderedMessageIds.map","kind":"calls","metadata":{"unresolvedName":"orderedMessageIds.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:msgObj.parts\n .filter","kind":"calls","metadata":{"unresolvedName":"msgObj.parts\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:sessions.push","kind":"calls","metadata":{"unresolvedName":"sessions.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:sessions.sort","kind":"calls","metadata":{"unresolvedName":"sessions.sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:enqueueSessionSend","kind":"calls","metadata":{"unresolvedName":"enqueueSessionSend"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendUserMessageToRequestedSession","kind":"calls","metadata":{"unresolvedName":"sendUserMessageToRequestedSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getAvailableCommands","kind":"calls","metadata":{"unresolvedName":"getAvailableCommands"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:countCommandsBySource","kind":"calls","metadata":{"unresolvedName":"countCommandsBySource"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","kind":"calls","metadata":{"unresolvedName":"action"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendGitAction","kind":"calls","metadata":{"unresolvedName":"sendGitAction"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:getGitStatus","kind":"calls","metadata":{"unresolvedName":"getGitStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:listGitBranches","kind":"calls","metadata":{"unresolvedName":"listGitBranches"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:checkoutGitBranch","kind":"calls","metadata":{"unresolvedName":"checkoutGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:createGitBranch","kind":"calls","metadata":{"unresolvedName":"createGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:stageGitPaths","kind":"calls","metadata":{"unresolvedName":"stageGitPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:unstageGitPaths","kind":"calls","metadata":{"unresolvedName":"unstageGitPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:commitGitChanges","kind":"calls","metadata":{"unresolvedName":"commitGitChanges"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:pullGitBranch","kind":"calls","metadata":{"unresolvedName":"pullGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:pushGitBranch","kind":"calls","metadata":{"unresolvedName":"pushGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:entries.map","kind":"calls","metadata":{"unresolvedName":"entries.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:path.relative(targetDir, fullEntryPath).replace","kind":"calls","metadata":{"unresolvedName":"path.relative(targetDir, fullEntryPath).replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:path.relative","kind":"calls","metadata":{"unresolvedName":"path.relative"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:entry.isFile","kind":"calls","metadata":{"unresolvedName":"entry.isFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:entry.isDirectory","kind":"calls","metadata":{"unresolvedName":"entry.isDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:http.createServer","kind":"calls","metadata":{"unresolvedName":"http.createServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:probe.once","kind":"calls","metadata":{"unresolvedName":"probe.once"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:probe.close","kind":"calls","metadata":{"unresolvedName":"probe.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:probe.listen","kind":"calls","metadata":{"unresolvedName":"probe.listen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:canReserveLoopbackPort","kind":"calls","metadata":{"unresolvedName":"canReserveLoopbackPort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:tryListen","kind":"calls","metadata":{"unresolvedName":"tryListen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:srv.removeListener","kind":"calls","metadata":{"unresolvedName":"srv.removeListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:srv.once","kind":"calls","metadata":{"unresolvedName":"srv.once"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:srv.listen","kind":"calls","metadata":{"unresolvedName":"srv.listen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:ctx.ui.setWidget","kind":"calls","metadata":{"unresolvedName":"ctx.ui.setWidget"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setWebLinkWidget","kind":"calls","metadata":{"unresolvedName":"setWebLinkWidget"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:generateBearerToken","kind":"calls","metadata":{"unresolvedName":"generateBearerToken"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:urlPath.startsWith","kind":"calls","metadata":{"unresolvedName":"urlPath.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:handleApiRequest(req, res).catch","kind":"calls","metadata":{"unresolvedName":"handleApiRequest(req, res).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","kind":"calls","metadata":{"unresolvedName":"handleApiRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile","kind":"calls","metadata":{"unresolvedName":"handleStaticFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:server.on","kind":"calls","metadata":{"unresolvedName":"server.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:socket.write","kind":"calls","metadata":{"unresolvedName":"socket.write"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:socket.destroy","kind":"calls","metadata":{"unresolvedName":"socket.destroy"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:wss!.handleUpgrade","kind":"calls","metadata":{"unresolvedName":"wss!.handleUpgrade"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:wss!.emit","kind":"calls","metadata":{"unresolvedName":"wss!.emit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:wss.on","kind":"calls","metadata":{"unresolvedName":"wss.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:clients.add","kind":"calls","metadata":{"unresolvedName":"clients.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:ws.send","kind":"calls","metadata":{"unresolvedName":"ws.send"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:ws.on","kind":"calls","metadata":{"unresolvedName":"ws.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:clients.delete","kind":"calls","metadata":{"unresolvedName":"clients.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:listenOnAvailablePort(server, DEFAULT_PORT, '0.0.0.0')\n .then","kind":"calls","metadata":{"unresolvedName":"listenOnAvailablePort(server, DEFAULT_PORT, '0.0.0.0')\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:listenOnAvailablePort","kind":"calls","metadata":{"unresolvedName":"listenOnAvailablePort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:latestCtx.ui.setWidget","kind":"calls","metadata":{"unresolvedName":"latestCtx.ui.setWidget"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:fs.unlinkSync","kind":"calls","metadata":{"unresolvedName":"fs.unlinkSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:sseClients.clear","kind":"calls","metadata":{"unresolvedName":"sseClients.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:createdParts.clear","kind":"calls","metadata":{"unresolvedName":"createdParts.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:client.close","kind":"calls","metadata":{"unresolvedName":"client.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:clients.clear","kind":"calls","metadata":{"unresolvedName":"clients.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:wss.close","kind":"calls","metadata":{"unresolvedName":"wss.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:server.close","kind":"calls","metadata":{"unresolvedName":"server.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:pi.on","kind":"calls","metadata":{"unresolvedName":"pi.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","kind":"calls","metadata":{"unresolvedName":"startServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:ctx.sessionManager?.getSessionId","kind":"calls","metadata":{"unresolvedName":"ctx.sessionManager?.getSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:stopServer","kind":"calls","metadata":{"unresolvedName":"stopServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSessionUpdated","kind":"calls","metadata":{"unresolvedName":"broadcastSessionUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageId","kind":"calls","metadata":{"unresolvedName":"getMessageId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:createdParts.has","kind":"calls","metadata":{"unresolvedName":"createdParts.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:createdParts.add","kind":"calls","metadata":{"unresolvedName":"createdParts.add"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:enqueueSessionSend","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:enqueueSessionSend","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:enqueueSessionSend","to":"external:sendQueue.catch(() => undefined).then","kind":"calls","metadata":{"unresolvedName":"sendQueue.catch(() => undefined).then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:enqueueSessionSend","to":"external:sendQueue.catch","kind":"calls","metadata":{"unresolvedName":"sendQueue.catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:enqueueSessionSend","to":"external:run.then","kind":"calls","metadata":{"unresolvedName":"run.then"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getCurrentSessionId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getCurrentSessionId","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getCurrentSessionId","to":"external:latestCtx?.sessionManager?.getSessionId","kind":"calls","metadata":{"unresolvedName":"latestCtx?.sessionManager?.getSessionId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionFileForId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionFileForId","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionFileForId","to":"external:latestCtx?.sessionManager?.getSessionDir","kind":"calls","metadata":{"unresolvedName":"latestCtx?.sessionManager?.getSessionDir"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionFileForId","to":"external:fs.existsSync","kind":"calls","metadata":{"unresolvedName":"fs.existsSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionFileForId","to":"external:fs.readdirSync(sessionDir).filter","kind":"calls","metadata":{"unresolvedName":"fs.readdirSync(sessionDir).filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionFileForId","to":"external:fs.readdirSync","kind":"calls","metadata":{"unresolvedName":"fs.readdirSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionFileForId","to":"external:f.endsWith","kind":"calls","metadata":{"unresolvedName":"f.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionFileForId","to":"external:files.find","kind":"calls","metadata":{"unresolvedName":"files.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionFileForId","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getFallbackSessionTitle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getFallbackSessionTitle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getFallbackSessionTitle","to":"external:sessionId.slice","kind":"calls","metadata":{"unresolvedName":"sessionId.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createSessionId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createSessionId","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createSessionId","to":"symbol-name:randomUUID","kind":"calls","metadata":{"unresolvedName":"randomUUID"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createSessionEntryId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createSessionEntryId","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createSessionEntryId","to":"external:randomUUID().slice","kind":"calls","metadata":{"unresolvedName":"randomUUID().slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createSessionEntryId","to":"symbol-name:randomUUID","kind":"calls","metadata":{"unresolvedName":"randomUUID"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createRealSessionFile","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createRealSessionFile","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createRealSessionFile","to":"external:latestCtx?.sessionManager?.getSessionDir","kind":"calls","metadata":{"unresolvedName":"latestCtx?.sessionManager?.getSessionDir"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createRealSessionFile","to":"external:fs.mkdirSync","kind":"calls","metadata":{"unresolvedName":"fs.mkdirSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createRealSessionFile","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createSessionId","kind":"calls","metadata":{"unresolvedName":"createSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createRealSessionFile","to":"external:new Date().toISOString","kind":"calls","metadata":{"unresolvedName":"new Date().toISOString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createRealSessionFile","to":"external:timestamp.replace","kind":"calls","metadata":{"unresolvedName":"timestamp.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createRealSessionFile","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createRealSessionFile","to":"external:process.cwd","kind":"calls","metadata":{"unresolvedName":"process.cwd"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createRealSessionFile","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createRealSessionFile","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeSessionTitle","kind":"calls","metadata":{"unresolvedName":"normalizeSessionTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createRealSessionFile","to":"external:entries.push","kind":"calls","metadata":{"unresolvedName":"entries.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createRealSessionFile","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createSessionEntryId","kind":"calls","metadata":{"unresolvedName":"createSessionEntryId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createRealSessionFile","to":"external:fs.writeFileSync","kind":"calls","metadata":{"unresolvedName":"fs.writeFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createRealSessionFile","to":"external:entries.join","kind":"calls","metadata":{"unresolvedName":"entries.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createAndSwitchToRealSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createAndSwitchToRealSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createAndSwitchToRealSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createRealSessionFile","kind":"calls","metadata":{"unresolvedName":"createRealSessionFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createAndSwitchToRealSession","to":"external:latestCtx.switchSession","kind":"calls","metadata":{"unresolvedName":"latestCtx.switchSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createAndSwitchToRealSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata","kind":"calls","metadata":{"unresolvedName":"readSessionMetadata"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createAndSwitchToRealSession","to":"symbol-name:getSessionInfo","kind":"calls","metadata":{"unresolvedName":"getSessionInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createAndSwitchToRealSession","to":"external:path\n .basename(sessionFile)\n .replace","kind":"calls","metadata":{"unresolvedName":"path\n .basename(sessionFile)\n .replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createAndSwitchToRealSession","to":"external:path\n .basename","kind":"calls","metadata":{"unresolvedName":"path\n .basename"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:withSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:withSession","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeSessionTitle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeSessionTitle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeSessionTitle","to":"external:title\n .split('')\n .map","kind":"calls","metadata":{"unresolvedName":"title\n .split('')\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeSessionTitle","to":"external:title\n .split","kind":"calls","metadata":{"unresolvedName":"title\n .split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeSessionTitle","to":"external:char.charCodeAt","kind":"calls","metadata":{"unresolvedName":"char.charCodeAt"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:char.charCodeAt","kind":"calls","metadata":{"unresolvedName":"char.charCodeAt"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata","to":"external:fs.readFileSync","kind":"calls","metadata":{"unresolvedName":"fs.readFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata","to":"external:content.trim().split('\\n').filter","kind":"calls","metadata":{"unresolvedName":"content.trim().split('\\n').filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata","to":"external:content.trim().split","kind":"calls","metadata":{"unresolvedName":"content.trim().split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata","to":"external:content.trim","kind":"calls","metadata":{"unresolvedName":"content.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata","to":"external:lines.slice","kind":"calls","metadata":{"unresolvedName":"lines.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:normalizeSessionTitle","kind":"calls","metadata":{"unresolvedName":"normalizeSessionTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata","to":"symbol-name:getMessageText","kind":"calls","metadata":{"unresolvedName":"getMessageText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata","to":"external:fs.statSync","kind":"calls","metadata":{"unresolvedName":"fs.statSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata","to":"external:new Date(header.timestamp).getTime","kind":"calls","metadata":{"unresolvedName":"new Date(header.timestamp).getTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getFallbackSessionTitle","kind":"calls","metadata":{"unresolvedName":"getFallbackSessionTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata","to":"external:process.cwd","kind":"calls","metadata":{"unresolvedName":"process.cwd"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata","to":"external:Number.isNaN","kind":"calls","metadata":{"unresolvedName":"Number.isNaN"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setRequestedModel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setRequestedModel","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setRequestedModel","to":"external:ctx.modelRegistry?.find","kind":"calls","metadata":{"unresolvedName":"ctx.modelRegistry?.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setRequestedModel","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setRequestedModel","to":"external:ctx.setModel","kind":"calls","metadata":{"unresolvedName":"ctx.setModel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setRequestedModel","to":"external:pi.setModel","kind":"calls","metadata":{"unresolvedName":"pi.setModel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setRequestedModel","to":"external:console.error","kind":"calls","metadata":{"unresolvedName":"console.error"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendUserMessageToRequestedSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendUserMessageToRequestedSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendUserMessageToRequestedSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getCurrentSessionId","kind":"calls","metadata":{"unresolvedName":"getCurrentSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendUserMessageToRequestedSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setRequestedModel","kind":"calls","metadata":{"unresolvedName":"setRequestedModel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendUserMessageToRequestedSession","to":"external:pi.sendUserMessage","kind":"calls","metadata":{"unresolvedName":"pi.sendUserMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendUserMessageToRequestedSession","to":"external:p.catch","kind":"calls","metadata":{"unresolvedName":"p.catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendUserMessageToRequestedSession","to":"external:console.error","kind":"calls","metadata":{"unresolvedName":"console.error"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendUserMessageToRequestedSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionFileForId","kind":"calls","metadata":{"unresolvedName":"getSessionFileForId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendUserMessageToRequestedSession","to":"external:latestCtx.switchSession","kind":"calls","metadata":{"unresolvedName":"latestCtx.switchSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendUserMessageToRequestedSession","to":"external:replacedCtx.sendUserMessage","kind":"calls","metadata":{"unresolvedName":"replacedCtx.sendUserMessage"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:console.error","kind":"calls","metadata":{"unresolvedName":"console.error"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:withSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:withSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:withSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setRequestedModel","kind":"calls","metadata":{"unresolvedName":"setRequestedModel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:withSession","to":"external:replacedCtx.sendUserMessage","kind":"calls","metadata":{"unresolvedName":"replacedCtx.sendUserMessage"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionInfo","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionInfo","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionInfo","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionFileForId","kind":"calls","metadata":{"unresolvedName":"getSessionFileForId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionInfo","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata","kind":"calls","metadata":{"unresolvedName":"readSessionMetadata"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionInfo","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getFallbackSessionTitle","kind":"calls","metadata":{"unresolvedName":"getFallbackSessionTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionInfo","to":"external:process.cwd","kind":"calls","metadata":{"unresolvedName":"process.cwd"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionInfo","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getSessionInfo","to":"external:latestCtx.isIdle","kind":"calls","metadata":{"unresolvedName":"latestCtx.isIdle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSessionUpdated","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSessionUpdated","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSessionUpdated","to":"symbol-name:getSessionInfo","kind":"calls","metadata":{"unresolvedName":"getSessionInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSessionUpdated","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE","kind":"calls","metadata":{"unresolvedName":"broadcastSSE"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSessionUpdated","to":"external:console.error","kind":"calls","metadata":{"unresolvedName":"console.error"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE","to":"external:Math.random().toString(36).substring","kind":"calls","metadata":{"unresolvedName":"Math.random().toString(36).substring"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE","to":"external:Math.random().toString","kind":"calls","metadata":{"unresolvedName":"Math.random().toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE","to":"external:Math.random","kind":"calls","metadata":{"unresolvedName":"Math.random"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE","to":"external:res.write","kind":"calls","metadata":{"unresolvedName":"res.write"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:generateBearerToken","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:generateBearerToken","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:generateBearerToken","to":"external:Array.from({ length: 4 }, () => Math.random().toString(36).substring(2)).join","kind":"calls","metadata":{"unresolvedName":"Array.from({ length: 4 }, () => Math.random().toString(36).substring(2)).join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:generateBearerToken","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:generateBearerToken","to":"external:Math.random().toString(36).substring","kind":"calls","metadata":{"unresolvedName":"Math.random().toString(36).substring"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:generateBearerToken","to":"external:Math.random().toString","kind":"calls","metadata":{"unresolvedName":"Math.random().toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:generateBearerToken","to":"external:Math.random","kind":"calls","metadata":{"unresolvedName":"Math.random"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getLocalSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getLocalSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getLocalSettings","to":"external:settingsStore.getSettings","kind":"calls","metadata":{"unresolvedName":"settingsStore.getSettings"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:saveLocalSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:saveLocalSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:saveLocalSettings","to":"external:settingsStore.saveSettings","kind":"calls","metadata":{"unresolvedName":"settingsStore.saveSettings"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:buildBrowserUrl","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:buildBrowserUrl","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getNetworkAccessInfo","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getNetworkAccessInfo","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getNetworkAccessInfo","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getLocalSettings","kind":"calls","metadata":{"unresolvedName":"getLocalSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getNetworkAccessInfo","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:getLocalNetworkUrls","kind":"calls","metadata":{"unresolvedName":"getLocalNetworkUrls"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getNetworkAccessInfo","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:buildBrowserUrl","kind":"calls","metadata":{"unresolvedName":"buildBrowserUrl"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getEffectiveSttSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getEffectiveSttSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getEffectiveSttSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getLocalSettings","kind":"calls","metadata":{"unresolvedName":"getLocalSettings"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sanitizeSttSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sanitizeSttSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sanitizeSttSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getEffectiveSttSettings","kind":"calls","metadata":{"unresolvedName":"getEffectiveSttSettings"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readJsonBody","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readJsonBody","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readJsonBody","to":"external:req.on","kind":"calls","metadata":{"unresolvedName":"req.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readJsonBody","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readJsonBody","to":"external:body.trim","kind":"calls","metadata":{"unresolvedName":"body.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readJsonBody","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readJsonBody","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:req.on","kind":"calls","metadata":{"unresolvedName":"req.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:body.trim","kind":"calls","metadata":{"unresolvedName":"body.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:body.trim","kind":"calls","metadata":{"unresolvedName":"body.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateSttSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateSttSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateSttSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getLocalSettings","kind":"calls","metadata":{"unresolvedName":"getLocalSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateSttSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateSttBaseUrl","kind":"calls","metadata":{"unresolvedName":"validateSttBaseUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateSttSettings","to":"external:update.baseUrl.replace","kind":"calls","metadata":{"unresolvedName":"update.baseUrl.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateSttSettings","to":"external:update.transcriptionEndpoint.startsWith","kind":"calls","metadata":{"unresolvedName":"update.transcriptionEndpoint.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateSttSettings","to":"external:update.transcriptionModel.trim","kind":"calls","metadata":{"unresolvedName":"update.transcriptionModel.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateSttSettings","to":"external:update.language.trim","kind":"calls","metadata":{"unresolvedName":"update.language.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateSttSettings","to":"external:Object.prototype.hasOwnProperty.call","kind":"calls","metadata":{"unresolvedName":"Object.prototype.hasOwnProperty.call"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateSttSettings","to":"external:update.apiKey.trim","kind":"calls","metadata":{"unresolvedName":"update.apiKey.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateSttSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:saveLocalSettings","kind":"calls","metadata":{"unresolvedName":"saveLocalSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateSttSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sanitizeSttSettings","kind":"calls","metadata":{"unresolvedName":"sanitizeSttSettings"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getEffectiveTtsSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getEffectiveTtsSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getEffectiveTtsSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getLocalSettings","kind":"calls","metadata":{"unresolvedName":"getLocalSettings"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sanitizeTtsSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sanitizeTtsSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sanitizeTtsSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getEffectiveTtsSettings","kind":"calls","metadata":{"unresolvedName":"getEffectiveTtsSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sanitizeTtsSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:isTtsResponseFormat","kind":"calls","metadata":{"unresolvedName":"isTtsResponseFormat"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:isTtsResponseFormat","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:isTtsResponseFormat","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateTtsSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateTtsSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateTtsSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getLocalSettings","kind":"calls","metadata":{"unresolvedName":"getLocalSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateTtsSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateSttBaseUrl","kind":"calls","metadata":{"unresolvedName":"validateSttBaseUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateTtsSettings","to":"external:update.baseUrl.replace","kind":"calls","metadata":{"unresolvedName":"update.baseUrl.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateTtsSettings","to":"external:update.speechEndpoint.startsWith","kind":"calls","metadata":{"unresolvedName":"update.speechEndpoint.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateTtsSettings","to":"external:update.model.trim","kind":"calls","metadata":{"unresolvedName":"update.model.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateTtsSettings","to":"external:update.voice.trim","kind":"calls","metadata":{"unresolvedName":"update.voice.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateTtsSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:isTtsResponseFormat","kind":"calls","metadata":{"unresolvedName":"isTtsResponseFormat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateTtsSettings","to":"external:Object.prototype.hasOwnProperty.call","kind":"calls","metadata":{"unresolvedName":"Object.prototype.hasOwnProperty.call"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateTtsSettings","to":"external:update.apiKey.trim","kind":"calls","metadata":{"unresolvedName":"update.apiKey.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateTtsSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:saveLocalSettings","kind":"calls","metadata":{"unresolvedName":"saveLocalSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:updateTtsSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sanitizeTtsSettings","kind":"calls","metadata":{"unresolvedName":"sanitizeTtsSettings"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readRequestBuffer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readRequestBuffer","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readRequestBuffer","to":"external:req.on","kind":"calls","metadata":{"unresolvedName":"req.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readRequestBuffer","to":"external:chunks.push","kind":"calls","metadata":{"unresolvedName":"chunks.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readRequestBuffer","to":"external:Buffer.isBuffer","kind":"calls","metadata":{"unresolvedName":"Buffer.isBuffer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readRequestBuffer","to":"external:Buffer.from","kind":"calls","metadata":{"unresolvedName":"Buffer.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readRequestBuffer","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readRequestBuffer","to":"external:Buffer.concat","kind":"calls","metadata":{"unresolvedName":"Buffer.concat"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:req.on","kind":"calls","metadata":{"unresolvedName":"req.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:chunks.push","kind":"calls","metadata":{"unresolvedName":"chunks.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Buffer.isBuffer","kind":"calls","metadata":{"unresolvedName":"Buffer.isBuffer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Buffer.from","kind":"calls","metadata":{"unresolvedName":"Buffer.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Buffer.concat","kind":"calls","metadata":{"unresolvedName":"Buffer.concat"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readMultipartFormData","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readMultipartFormData","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readMultipartFormData","to":"external:contentType?.match","kind":"calls","metadata":{"unresolvedName":"contentType?.match"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readMultipartFormData","to":"external:body.toString","kind":"calls","metadata":{"unresolvedName":"body.toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readMultipartFormData","to":"external:rawBody.split","kind":"calls","metadata":{"unresolvedName":"rawBody.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readMultipartFormData","to":"external:rawPart.replace","kind":"calls","metadata":{"unresolvedName":"rawPart.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readMultipartFormData","to":"external:part.indexOf","kind":"calls","metadata":{"unresolvedName":"part.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readMultipartFormData","to":"external:part.slice","kind":"calls","metadata":{"unresolvedName":"part.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readMultipartFormData","to":"external:part\n .slice(headerEnd + 4)\n .replace","kind":"calls","metadata":{"unresolvedName":"part\n .slice(headerEnd + 4)\n .replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readMultipartFormData","to":"external:part\n .slice","kind":"calls","metadata":{"unresolvedName":"part\n .slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readMultipartFormData","to":"external:rawHeaders.match","kind":"calls","metadata":{"unresolvedName":"rawHeaders.match"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readMultipartFormData","to":"external:disposition.match","kind":"calls","metadata":{"unresolvedName":"disposition.match"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readMultipartFormData","to":"external:rawHeaders.match(/content-type:\\s*([^\\r\\n]+)/i)?.[1]?.trim","kind":"calls","metadata":{"unresolvedName":"rawHeaders.match(/content-type:\\s*([^\\r\\n]+)/i)?.[1]?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readMultipartFormData","to":"external:form.set","kind":"calls","metadata":{"unresolvedName":"form.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readMultipartFormData","to":"external:Buffer.from","kind":"calls","metadata":{"unresolvedName":"Buffer.from"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:transcribeAudio","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:transcribeAudio","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:transcribeAudio","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isRequestBodySizeAllowed","kind":"calls","metadata":{"unresolvedName":"isRequestBodySizeAllowed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:transcribeAudio","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getEffectiveSttSettings","kind":"calls","metadata":{"unresolvedName":"getEffectiveSttSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:transcribeAudio","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateSttBaseUrl","kind":"calls","metadata":{"unresolvedName":"validateSttBaseUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:transcribeAudio","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:transcribeAudio","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readRequestBuffer","kind":"calls","metadata":{"unresolvedName":"readRequestBuffer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:transcribeAudio","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readMultipartFormData","kind":"calls","metadata":{"unresolvedName":"readMultipartFormData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:transcribeAudio","to":"external:inputForm.get","kind":"calls","metadata":{"unresolvedName":"inputForm.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:transcribeAudio","to":"external:providerForm.set","kind":"calls","metadata":{"unresolvedName":"providerForm.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:transcribeAudio","to":"external:(settings.baseUrl || 'https://api.openai.com/v1').replace","kind":"calls","metadata":{"unresolvedName":"(settings.baseUrl || 'https://api.openai.com/v1').replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:transcribeAudio","to":"symbol-name:fetch","kind":"calls","metadata":{"unresolvedName":"fetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:transcribeAudio","to":"external:providerRes.text","kind":"calls","metadata":{"unresolvedName":"providerRes.text"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:transcribeAudio","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:transcribeAudio","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:synthesizeSpeech","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:synthesizeSpeech","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:synthesizeSpeech","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isRequestBodySizeAllowed","kind":"calls","metadata":{"unresolvedName":"isRequestBodySizeAllowed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:synthesizeSpeech","to":"external:Buffer.from","kind":"calls","metadata":{"unresolvedName":"Buffer.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:synthesizeSpeech","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:synthesizeSpeech","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getEffectiveTtsSettings","kind":"calls","metadata":{"unresolvedName":"getEffectiveTtsSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:synthesizeSpeech","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateSttBaseUrl","kind":"calls","metadata":{"unresolvedName":"validateSttBaseUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:synthesizeSpeech","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readJsonBody","kind":"calls","metadata":{"unresolvedName":"readJsonBody"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:synthesizeSpeech","to":"external:requestBody.input.trim","kind":"calls","metadata":{"unresolvedName":"requestBody.input.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:synthesizeSpeech","to":"external:(settings.baseUrl || 'https://api.openai.com/v1').replace","kind":"calls","metadata":{"unresolvedName":"(settings.baseUrl || 'https://api.openai.com/v1').replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:synthesizeSpeech","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:isTtsResponseFormat","kind":"calls","metadata":{"unresolvedName":"isTtsResponseFormat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:synthesizeSpeech","to":"symbol-name:fetch","kind":"calls","metadata":{"unresolvedName":"fetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:synthesizeSpeech","to":"external:providerRes.arrayBuffer","kind":"calls","metadata":{"unresolvedName":"providerRes.arrayBuffer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:synthesizeSpeech","to":"external:providerRes.headers.get","kind":"calls","metadata":{"unresolvedName":"providerRes.headers.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile","to":"external:path.resolve","kind":"calls","metadata":{"unresolvedName":"path.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:preventPathTraversal","kind":"calls","metadata":{"unresolvedName":"preventPathTraversal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile","to":"external:res.writeHead","kind":"calls","metadata":{"unresolvedName":"res.writeHead"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile","to":"external:res.end","kind":"calls","metadata":{"unresolvedName":"res.end"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile","to":"external:fs.existsSync","kind":"calls","metadata":{"unresolvedName":"fs.existsSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile","to":"external:fs.statSync(filePath).isDirectory","kind":"calls","metadata":{"unresolvedName":"fs.statSync(filePath).isDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile","to":"external:fs.statSync","kind":"calls","metadata":{"unresolvedName":"fs.statSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile","to":"external:path.extname(targetFile).toLowerCase","kind":"calls","metadata":{"unresolvedName":"path.extname(targetFile).toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile","to":"external:path.extname","kind":"calls","metadata":{"unresolvedName":"path.extname"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:serveIndexHtml","kind":"calls","metadata":{"unresolvedName":"serveIndexHtml"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile","to":"external:path.extname(filePath).toLowerCase","kind":"calls","metadata":{"unresolvedName":"path.extname(filePath).toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile","to":"external:fs.createReadStream(filePath).pipe","kind":"calls","metadata":{"unresolvedName":"fs.createReadStream(filePath).pipe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile","to":"external:fs.createReadStream","kind":"calls","metadata":{"unresolvedName":"fs.createReadStream"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:serveIndexHtml","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:serveIndexHtml","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:serveIndexHtml","to":"external:fs.readFileSync","kind":"calls","metadata":{"unresolvedName":"fs.readFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:serveIndexHtml","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLoopbackHost","kind":"calls","metadata":{"unresolvedName":"isLoopbackHost"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:serveIndexHtml","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:serveIndexHtml","to":"external:content.includes","kind":"calls","metadata":{"unresolvedName":"content.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:serveIndexHtml","to":"external:content.replace","kind":"calls","metadata":{"unresolvedName":"content.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:serveIndexHtml","to":"external:res.writeHead","kind":"calls","metadata":{"unresolvedName":"res.writeHead"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:serveIndexHtml","to":"external:res.end","kind":"calls","metadata":{"unresolvedName":"res.end"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:checkAuth","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:checkAuth","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:checkAuth","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateBearerToken","kind":"calls","metadata":{"unresolvedName":"validateBearerToken"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:checkAuth","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getLocalSettings","kind":"calls","metadata":{"unresolvedName":"getLocalSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:checkAuth","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isLoopbackHost","kind":"calls","metadata":{"unresolvedName":"isLoopbackHost"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:checkAuth","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOriginForAccess","kind":"calls","metadata":{"unresolvedName":"validateHostAndOriginForAccess"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:res.writeHead","kind":"calls","metadata":{"unresolvedName":"res.writeHead"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:res.end","kind":"calls","metadata":{"unresolvedName":"res.end"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:checkAuth","kind":"calls","metadata":{"unresolvedName":"checkAuth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:Math.random().toString(36).substring","kind":"calls","metadata":{"unresolvedName":"Math.random().toString(36).substring"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:Math.random().toString","kind":"calls","metadata":{"unresolvedName":"Math.random().toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:Math.random","kind":"calls","metadata":{"unresolvedName":"Math.random"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:res.write","kind":"calls","metadata":{"unresolvedName":"res.write"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"symbol-name:setInterval","kind":"calls","metadata":{"unresolvedName":"setInterval"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"symbol-name:clearInterval","kind":"calls","metadata":{"unresolvedName":"clearInterval"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:sseClients.delete","kind":"calls","metadata":{"unresolvedName":"sseClients.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:sseClients.add","kind":"calls","metadata":{"unresolvedName":"sseClients.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:req.on","kind":"calls","metadata":{"unresolvedName":"req.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:pathname.split('/').filter","kind":"calls","metadata":{"unresolvedName":"pathname.split('/').filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:pathname.split","kind":"calls","metadata":{"unresolvedName":"pathname.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getNetworkAccessInfo","kind":"calls","metadata":{"unresolvedName":"getNetworkAccessInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:body.trim","kind":"calls","metadata":{"unresolvedName":"body.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getLocalSettings","kind":"calls","metadata":{"unresolvedName":"getLocalSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:saveLocalSettings","kind":"calls","metadata":{"unresolvedName":"saveLocalSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sanitizeSttSettings","kind":"calls","metadata":{"unresolvedName":"sanitizeSttSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readJsonBody","kind":"calls","metadata":{"unresolvedName":"readJsonBody"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"symbol-name:updateSttSettings","kind":"calls","metadata":{"unresolvedName":"updateSttSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sanitizeTtsSettings","kind":"calls","metadata":{"unresolvedName":"sanitizeTtsSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"symbol-name:updateTtsSettings","kind":"calls","metadata":{"unresolvedName":"updateTtsSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:parsedUrl.searchParams.get","kind":"calls","metadata":{"unresolvedName":"parsedUrl.searchParams.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:process.cwd","kind":"calls","metadata":{"unresolvedName":"process.cwd"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:buildExtensionCatalog","kind":"calls","metadata":{"unresolvedName":"buildExtensionCatalog"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:executeExtensionInstallCommand","kind":"calls","metadata":{"unresolvedName":"executeExtensionInstallCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-extension-manager.ts:executeExtensionPackageRemoval","kind":"calls","metadata":{"unresolvedName":"executeExtensionPackageRemoval"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"symbol-name:transcribeAudio","kind":"calls","metadata":{"unresolvedName":"transcribeAudio"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"symbol-name:synthesizeSpeech","kind":"calls","metadata":{"unresolvedName":"synthesizeSpeech"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:parseSkillsFromSystemPrompt","kind":"calls","metadata":{"unresolvedName":"parseSkillsFromSystemPrompt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:latestCtx?.getSystemPrompt","kind":"calls","metadata":{"unresolvedName":"latestCtx?.getSystemPrompt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:countSkillsBySource","kind":"calls","metadata":{"unresolvedName":"countSkillsBySource"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:loadMcpStatus","kind":"calls","metadata":{"unresolvedName":"loadMcpStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:latestCtx?.modelRegistry?.getAvailable","kind":"calls","metadata":{"unresolvedName":"latestCtx?.modelRegistry?.getAvailable"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:latestCtx?.modelRegistry?.getAll","kind":"calls","metadata":{"unresolvedName":"latestCtx?.modelRegistry?.getAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:m.input?.includes","kind":"calls","metadata":{"unresolvedName":"m.input?.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:registryModels.map","kind":"calls","metadata":{"unresolvedName":"registryModels.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:registryModels.find","kind":"calls","metadata":{"unresolvedName":"registryModels.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"symbol-name:mapModel","kind":"calls","metadata":{"unresolvedName":"mapModel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:models.filter","kind":"calls","metadata":{"unresolvedName":"models.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:models.unshift","kind":"calls","metadata":{"unresolvedName":"models.unshift"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:latestCtx.abort","kind":"calls","metadata":{"unresolvedName":"latestCtx.abort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createAndSwitchToRealSession","kind":"calls","metadata":{"unresolvedName":"createAndSwitchToRealSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getCurrentSessionId","kind":"calls","metadata":{"unresolvedName":"getCurrentSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:latestCtx.getContextUsage","kind":"calls","metadata":{"unresolvedName":"latestCtx.getContextUsage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:latestCtx?.sessionManager?.getSessionDir","kind":"calls","metadata":{"unresolvedName":"latestCtx?.sessionManager?.getSessionDir"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:fs.existsSync","kind":"calls","metadata":{"unresolvedName":"fs.existsSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:fs.readdirSync(sessionDir).filter","kind":"calls","metadata":{"unresolvedName":"fs.readdirSync(sessionDir).filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:fs.readdirSync","kind":"calls","metadata":{"unresolvedName":"fs.readdirSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:f.endsWith","kind":"calls","metadata":{"unresolvedName":"f.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:files.find","kind":"calls","metadata":{"unresolvedName":"files.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:files.map","kind":"calls","metadata":{"unresolvedName":"files.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:fs.statSync","kind":"calls","metadata":{"unresolvedName":"fs.statSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:filesWithTime.sort","kind":"calls","metadata":{"unresolvedName":"filesWithTime.sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:fs.readFileSync","kind":"calls","metadata":{"unresolvedName":"fs.readFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:content.trim().split","kind":"calls","metadata":{"unresolvedName":"content.trim().split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:content.trim","kind":"calls","metadata":{"unresolvedName":"content.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:line.trim","kind":"calls","metadata":{"unresolvedName":"line.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"symbol-name:isVisibleChatRole","kind":"calls","metadata":{"unresolvedName":"isVisibleChatRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:messageMap.has","kind":"calls","metadata":{"unresolvedName":"messageMap.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:new Date(entry.timestamp).getTime","kind":"calls","metadata":{"unresolvedName":"new Date(entry.timestamp).getTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:messageMap.set","kind":"calls","metadata":{"unresolvedName":"messageMap.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:orderedMessageIds.push","kind":"calls","metadata":{"unresolvedName":"orderedMessageIds.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:messageMap.get","kind":"calls","metadata":{"unresolvedName":"messageMap.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:msgObj.parts.push","kind":"calls","metadata":{"unresolvedName":"msgObj.parts.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:toolCallMessageIds.set","kind":"calls","metadata":{"unresolvedName":"toolCallMessageIds.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:toolCallMessageIds.get","kind":"calls","metadata":{"unresolvedName":"toolCallMessageIds.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:parentMsg.parts.find","kind":"calls","metadata":{"unresolvedName":"parentMsg.parts.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:entry.message.content\n .filter","kind":"calls","metadata":{"unresolvedName":"entry.message.content\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:parentMsg.parts.push","kind":"calls","metadata":{"unresolvedName":"parentMsg.parts.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:orderedMessageIds.map","kind":"calls","metadata":{"unresolvedName":"orderedMessageIds.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:msgObj.parts\n .filter","kind":"calls","metadata":{"unresolvedName":"msgObj.parts\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:readSessionMetadata","kind":"calls","metadata":{"unresolvedName":"readSessionMetadata"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:sessions.push","kind":"calls","metadata":{"unresolvedName":"sessions.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:sessions.sort","kind":"calls","metadata":{"unresolvedName":"sessions.sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:enqueueSessionSend","kind":"calls","metadata":{"unresolvedName":"enqueueSessionSend"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendUserMessageToRequestedSession","kind":"calls","metadata":{"unresolvedName":"sendUserMessageToRequestedSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getAvailableCommands","kind":"calls","metadata":{"unresolvedName":"getAvailableCommands"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:countCommandsBySource","kind":"calls","metadata":{"unresolvedName":"countCommandsBySource"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","kind":"calls","metadata":{"unresolvedName":"action"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendGitAction","kind":"calls","metadata":{"unresolvedName":"sendGitAction"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:getGitStatus","kind":"calls","metadata":{"unresolvedName":"getGitStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:listGitBranches","kind":"calls","metadata":{"unresolvedName":"listGitBranches"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"symbol-name:checkoutGitBranch","kind":"calls","metadata":{"unresolvedName":"checkoutGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"symbol-name:createGitBranch","kind":"calls","metadata":{"unresolvedName":"createGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"symbol-name:stageGitPaths","kind":"calls","metadata":{"unresolvedName":"stageGitPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"symbol-name:unstageGitPaths","kind":"calls","metadata":{"unresolvedName":"unstageGitPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"symbol-name:commitGitChanges","kind":"calls","metadata":{"unresolvedName":"commitGitChanges"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"symbol-name:pullGitBranch","kind":"calls","metadata":{"unresolvedName":"pullGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"symbol-name:pushGitBranch","kind":"calls","metadata":{"unresolvedName":"pushGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:preventPathTraversal","kind":"calls","metadata":{"unresolvedName":"preventPathTraversal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:path.resolve","kind":"calls","metadata":{"unresolvedName":"path.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:entries.map","kind":"calls","metadata":{"unresolvedName":"entries.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:path.relative(targetDir, fullEntryPath).replace","kind":"calls","metadata":{"unresolvedName":"path.relative(targetDir, fullEntryPath).replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:path.relative","kind":"calls","metadata":{"unresolvedName":"path.relative"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:entry.isFile","kind":"calls","metadata":{"unresolvedName":"entry.isFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","to":"external:entry.isDirectory","kind":"calls","metadata":{"unresolvedName":"entry.isDirectory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:res.write","kind":"calls","metadata":{"unresolvedName":"res.write"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:clearInterval","kind":"calls","metadata":{"unresolvedName":"clearInterval"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:sseClients.delete","kind":"calls","metadata":{"unresolvedName":"sseClients.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:clearInterval","kind":"calls","metadata":{"unresolvedName":"clearInterval"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:sseClients.delete","kind":"calls","metadata":{"unresolvedName":"sseClients.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:body.trim","kind":"calls","metadata":{"unresolvedName":"body.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getLocalSettings","kind":"calls","metadata":{"unresolvedName":"getLocalSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:saveLocalSettings","kind":"calls","metadata":{"unresolvedName":"saveLocalSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:res.writeHead","kind":"calls","metadata":{"unresolvedName":"res.writeHead"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:res.end","kind":"calls","metadata":{"unresolvedName":"res.end"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getNetworkAccessInfo","kind":"calls","metadata":{"unresolvedName":"getNetworkAccessInfo"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:body.trim","kind":"calls","metadata":{"unresolvedName":"body.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:createAndSwitchToRealSession","kind":"calls","metadata":{"unresolvedName":"createAndSwitchToRealSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:res.writeHead","kind":"calls","metadata":{"unresolvedName":"res.writeHead"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:res.end","kind":"calls","metadata":{"unresolvedName":"res.end"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:fs.statSync","kind":"calls","metadata":{"unresolvedName":"fs.statSync"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:messageMap.get","kind":"calls","metadata":{"unresolvedName":"messageMap.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:msgObj.parts\n .filter","kind":"calls","metadata":{"unresolvedName":"msgObj.parts\n .filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:enqueueSessionSend","kind":"calls","metadata":{"unresolvedName":"enqueueSessionSend"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendUserMessageToRequestedSession","kind":"calls","metadata":{"unresolvedName":"sendUserMessageToRequestedSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:res.writeHead","kind":"calls","metadata":{"unresolvedName":"res.writeHead"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:res.end","kind":"calls","metadata":{"unresolvedName":"res.end"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Math.random().toString(36).substring","kind":"calls","metadata":{"unresolvedName":"Math.random().toString(36).substring"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Math.random().toString","kind":"calls","metadata":{"unresolvedName":"Math.random().toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Math.random","kind":"calls","metadata":{"unresolvedName":"Math.random"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendGitAction","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendGitAction","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendGitAction","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","kind":"calls","metadata":{"unresolvedName":"action"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendGitAction","to":"external:res.writeHead","kind":"calls","metadata":{"unresolvedName":"res.writeHead"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendGitAction","to":"external:res.end","kind":"calls","metadata":{"unresolvedName":"res.end"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:sendGitAction","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-git-manager.ts:getGitStatus","kind":"calls","metadata":{"unresolvedName":"getGitStatus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:path.relative(targetDir, fullEntryPath).replace","kind":"calls","metadata":{"unresolvedName":"path.relative(targetDir, fullEntryPath).replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:path.relative","kind":"calls","metadata":{"unresolvedName":"path.relative"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:entry.isFile","kind":"calls","metadata":{"unresolvedName":"entry.isFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:fs.statSync","kind":"calls","metadata":{"unresolvedName":"fs.statSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:entry.isDirectory","kind":"calls","metadata":{"unresolvedName":"entry.isDirectory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:listenOnAvailablePort","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:listenOnAvailablePort","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:listenOnAvailablePort","to":"external:http.createServer","kind":"calls","metadata":{"unresolvedName":"http.createServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:listenOnAvailablePort","to":"external:probe.once","kind":"calls","metadata":{"unresolvedName":"probe.once"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:listenOnAvailablePort","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:listenOnAvailablePort","to":"external:probe.close","kind":"calls","metadata":{"unresolvedName":"probe.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:listenOnAvailablePort","to":"external:probe.listen","kind":"calls","metadata":{"unresolvedName":"probe.listen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:listenOnAvailablePort","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:canReserveLoopbackPort","kind":"calls","metadata":{"unresolvedName":"canReserveLoopbackPort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:listenOnAvailablePort","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:tryListen","kind":"calls","metadata":{"unresolvedName":"tryListen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:listenOnAvailablePort","to":"external:srv.removeListener","kind":"calls","metadata":{"unresolvedName":"srv.removeListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:listenOnAvailablePort","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:listenOnAvailablePort","to":"external:srv.once","kind":"calls","metadata":{"unresolvedName":"srv.once"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:listenOnAvailablePort","to":"external:srv.listen","kind":"calls","metadata":{"unresolvedName":"srv.listen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:canReserveLoopbackPort","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:canReserveLoopbackPort","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:canReserveLoopbackPort","to":"external:http.createServer","kind":"calls","metadata":{"unresolvedName":"http.createServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:canReserveLoopbackPort","to":"external:probe.once","kind":"calls","metadata":{"unresolvedName":"probe.once"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:canReserveLoopbackPort","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:canReserveLoopbackPort","to":"external:probe.close","kind":"calls","metadata":{"unresolvedName":"probe.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:canReserveLoopbackPort","to":"external:probe.listen","kind":"calls","metadata":{"unresolvedName":"probe.listen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:http.createServer","kind":"calls","metadata":{"unresolvedName":"http.createServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:probe.once","kind":"calls","metadata":{"unresolvedName":"probe.once"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:probe.close","kind":"calls","metadata":{"unresolvedName":"probe.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:probe.listen","kind":"calls","metadata":{"unresolvedName":"probe.listen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:probe.close","kind":"calls","metadata":{"unresolvedName":"probe.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:canReserveLoopbackPort","kind":"calls","metadata":{"unresolvedName":"canReserveLoopbackPort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:tryListen","kind":"calls","metadata":{"unresolvedName":"tryListen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:srv.removeListener","kind":"calls","metadata":{"unresolvedName":"srv.removeListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:srv.once","kind":"calls","metadata":{"unresolvedName":"srv.once"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:srv.listen","kind":"calls","metadata":{"unresolvedName":"srv.listen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:tryListen","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:tryListen","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:tryListen","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:canReserveLoopbackPort","kind":"calls","metadata":{"unresolvedName":"canReserveLoopbackPort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:tryListen","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:tryListen","kind":"calls","metadata":{"unresolvedName":"tryListen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:tryListen","to":"external:srv.removeListener","kind":"calls","metadata":{"unresolvedName":"srv.removeListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:tryListen","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:tryListen","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:tryListen","to":"external:srv.once","kind":"calls","metadata":{"unresolvedName":"srv.once"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:tryListen","to":"external:srv.listen","kind":"calls","metadata":{"unresolvedName":"srv.listen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:onError","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:onError","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:onError","to":"external:srv.removeListener","kind":"calls","metadata":{"unresolvedName":"srv.removeListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:onError","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:tryListen","kind":"calls","metadata":{"unresolvedName":"tryListen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:onError","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:onListening","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:onListening","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:onListening","to":"external:srv.removeListener","kind":"calls","metadata":{"unresolvedName":"srv.removeListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:onListening","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setWebLinkWidget","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setWebLinkWidget","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setWebLinkWidget","to":"external:ctx.ui.setWidget","kind":"calls","metadata":{"unresolvedName":"ctx.ui.setWidget"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setWebLinkWidget","to":"external:console.error","kind":"calls","metadata":{"unresolvedName":"console.error"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setWebLinkWidget","kind":"calls","metadata":{"unresolvedName":"setWebLinkWidget"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:generateBearerToken","kind":"calls","metadata":{"unresolvedName":"generateBearerToken"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:http.createServer","kind":"calls","metadata":{"unresolvedName":"http.createServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOriginForAccess","kind":"calls","metadata":{"unresolvedName":"validateHostAndOriginForAccess"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getLocalSettings","kind":"calls","metadata":{"unresolvedName":"getLocalSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:res.writeHead","kind":"calls","metadata":{"unresolvedName":"res.writeHead"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:res.end","kind":"calls","metadata":{"unresolvedName":"res.end"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isRequestBodySizeAllowed","kind":"calls","metadata":{"unresolvedName":"isRequestBodySizeAllowed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:urlPath.startsWith","kind":"calls","metadata":{"unresolvedName":"urlPath.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:handleApiRequest(req, res).catch","kind":"calls","metadata":{"unresolvedName":"handleApiRequest(req, res).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","kind":"calls","metadata":{"unresolvedName":"handleApiRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile","kind":"calls","metadata":{"unresolvedName":"handleStaticFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:server.on","kind":"calls","metadata":{"unresolvedName":"server.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:socket.write","kind":"calls","metadata":{"unresolvedName":"socket.write"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:socket.destroy","kind":"calls","metadata":{"unresolvedName":"socket.destroy"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:wss!.handleUpgrade","kind":"calls","metadata":{"unresolvedName":"wss!.handleUpgrade"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:wss!.emit","kind":"calls","metadata":{"unresolvedName":"wss!.emit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:wss.on","kind":"calls","metadata":{"unresolvedName":"wss.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:clients.add","kind":"calls","metadata":{"unresolvedName":"clients.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:ws.send","kind":"calls","metadata":{"unresolvedName":"ws.send"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:ws.on","kind":"calls","metadata":{"unresolvedName":"ws.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:clients.delete","kind":"calls","metadata":{"unresolvedName":"clients.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:listenOnAvailablePort(server, DEFAULT_PORT, '0.0.0.0')\n .then","kind":"calls","metadata":{"unresolvedName":"listenOnAvailablePort(server, DEFAULT_PORT, '0.0.0.0')\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:listenOnAvailablePort","kind":"calls","metadata":{"unresolvedName":"listenOnAvailablePort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:fs.existsSync","kind":"calls","metadata":{"unresolvedName":"fs.existsSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:fs.mkdirSync","kind":"calls","metadata":{"unresolvedName":"fs.mkdirSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:fs.writeFileSync","kind":"calls","metadata":{"unresolvedName":"fs.writeFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","to":"external:console.error","kind":"calls","metadata":{"unresolvedName":"console.error"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOriginForAccess","kind":"calls","metadata":{"unresolvedName":"validateHostAndOriginForAccess"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getLocalSettings","kind":"calls","metadata":{"unresolvedName":"getLocalSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:res.writeHead","kind":"calls","metadata":{"unresolvedName":"res.writeHead"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:res.end","kind":"calls","metadata":{"unresolvedName":"res.end"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:isRequestBodySizeAllowed","kind":"calls","metadata":{"unresolvedName":"isRequestBodySizeAllowed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:urlPath.startsWith","kind":"calls","metadata":{"unresolvedName":"urlPath.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:handleApiRequest(req, res).catch","kind":"calls","metadata":{"unresolvedName":"handleApiRequest(req, res).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleApiRequest","kind":"calls","metadata":{"unresolvedName":"handleApiRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:handleStaticFile","kind":"calls","metadata":{"unresolvedName":"handleStaticFile"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:res.writeHead","kind":"calls","metadata":{"unresolvedName":"res.writeHead"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:res.end","kind":"calls","metadata":{"unresolvedName":"res.end"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server-core.ts:validateHostAndOriginForAccess","kind":"calls","metadata":{"unresolvedName":"validateHostAndOriginForAccess"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getLocalSettings","kind":"calls","metadata":{"unresolvedName":"getLocalSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:socket.write","kind":"calls","metadata":{"unresolvedName":"socket.write"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:socket.destroy","kind":"calls","metadata":{"unresolvedName":"socket.destroy"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:wss!.handleUpgrade","kind":"calls","metadata":{"unresolvedName":"wss!.handleUpgrade"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:wss!.emit","kind":"calls","metadata":{"unresolvedName":"wss!.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:wss!.emit","kind":"calls","metadata":{"unresolvedName":"wss!.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:clients.add","kind":"calls","metadata":{"unresolvedName":"clients.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:ws.send","kind":"calls","metadata":{"unresolvedName":"ws.send"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:ws.on","kind":"calls","metadata":{"unresolvedName":"ws.on"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:clients.delete","kind":"calls","metadata":{"unresolvedName":"clients.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:clients.delete","kind":"calls","metadata":{"unresolvedName":"clients.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:clients.delete","kind":"calls","metadata":{"unresolvedName":"clients.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:setWebLinkWidget","kind":"calls","metadata":{"unresolvedName":"setWebLinkWidget"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:fs.existsSync","kind":"calls","metadata":{"unresolvedName":"fs.existsSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:fs.mkdirSync","kind":"calls","metadata":{"unresolvedName":"fs.mkdirSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:fs.writeFileSync","kind":"calls","metadata":{"unresolvedName":"fs.writeFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:console.error","kind":"calls","metadata":{"unresolvedName":"console.error"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:console.error","kind":"calls","metadata":{"unresolvedName":"console.error"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:stopServer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:stopServer","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:stopServer","to":"external:latestCtx.ui.setWidget","kind":"calls","metadata":{"unresolvedName":"latestCtx.ui.setWidget"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:stopServer","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:stopServer","to":"external:fs.existsSync","kind":"calls","metadata":{"unresolvedName":"fs.existsSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:stopServer","to":"external:fs.unlinkSync","kind":"calls","metadata":{"unresolvedName":"fs.unlinkSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:stopServer","to":"external:res.end","kind":"calls","metadata":{"unresolvedName":"res.end"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:stopServer","to":"external:sseClients.clear","kind":"calls","metadata":{"unresolvedName":"sseClients.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:stopServer","to":"external:createdParts.clear","kind":"calls","metadata":{"unresolvedName":"createdParts.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:stopServer","to":"external:client.close","kind":"calls","metadata":{"unresolvedName":"client.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:stopServer","to":"external:clients.clear","kind":"calls","metadata":{"unresolvedName":"clients.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:stopServer","to":"external:wss.close","kind":"calls","metadata":{"unresolvedName":"wss.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:stopServer","to":"external:server.close","kind":"calls","metadata":{"unresolvedName":"server.close"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:startServer","kind":"calls","metadata":{"unresolvedName":"startServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:ctx.sessionManager?.getSessionId","kind":"calls","metadata":{"unresolvedName":"ctx.sessionManager?.getSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:getSessionInfo","kind":"calls","metadata":{"unresolvedName":"getSessionInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE","kind":"calls","metadata":{"unresolvedName":"broadcastSSE"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:stopServer","kind":"calls","metadata":{"unresolvedName":"stopServer"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getCurrentSessionId","kind":"calls","metadata":{"unresolvedName":"getCurrentSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE","kind":"calls","metadata":{"unresolvedName":"broadcastSSE"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSessionUpdated","kind":"calls","metadata":{"unresolvedName":"broadcastSessionUpdated"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getCurrentSessionId","kind":"calls","metadata":{"unresolvedName":"getCurrentSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE","kind":"calls","metadata":{"unresolvedName":"broadcastSSE"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSessionUpdated","kind":"calls","metadata":{"unresolvedName":"broadcastSessionUpdated"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getCurrentSessionId","kind":"calls","metadata":{"unresolvedName":"getCurrentSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE","kind":"calls","metadata":{"unresolvedName":"broadcastSSE"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSessionUpdated","kind":"calls","metadata":{"unresolvedName":"broadcastSessionUpdated"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getCurrentSessionId","kind":"calls","metadata":{"unresolvedName":"getCurrentSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageId","kind":"calls","metadata":{"unresolvedName":"getMessageId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:createdParts.clear","kind":"calls","metadata":{"unresolvedName":"createdParts.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE","kind":"calls","metadata":{"unresolvedName":"broadcastSSE"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getCurrentSessionId","kind":"calls","metadata":{"unresolvedName":"getCurrentSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageId","kind":"calls","metadata":{"unresolvedName":"getMessageId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:createdParts.has","kind":"calls","metadata":{"unresolvedName":"createdParts.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE","kind":"calls","metadata":{"unresolvedName":"broadcastSSE"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:createdParts.add","kind":"calls","metadata":{"unresolvedName":"createdParts.add"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getCurrentSessionId","kind":"calls","metadata":{"unresolvedName":"getCurrentSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:isVisibleChatRole","kind":"calls","metadata":{"unresolvedName":"isVisibleChatRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE","kind":"calls","metadata":{"unresolvedName":"broadcastSSE"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getMessageId","kind":"calls","metadata":{"unresolvedName":"getMessageId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:getMessageText","kind":"calls","metadata":{"unresolvedName":"getMessageText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSessionUpdated","kind":"calls","metadata":{"unresolvedName":"broadcastSessionUpdated"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getCurrentSessionId","kind":"calls","metadata":{"unresolvedName":"getCurrentSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE","kind":"calls","metadata":{"unresolvedName":"broadcastSSE"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:getCurrentSessionId","kind":"calls","metadata":{"unresolvedName":"getCurrentSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:broadcastSSE","kind":"calls","metadata":{"unresolvedName":"broadcastSSE"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-server.ts:","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts","to":"external:node:fs","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts","to":"external:node:os","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts","to":"external:node:path","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts","to":"module:./piagentui-settings-store.js","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:makeTempHome","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:makeTempHome","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:makeTempHome","to":"external:fs.mkdtempSync","kind":"calls","metadata":{"unresolvedName":"fs.mkdtempSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:makeTempHome","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:makeTempHome","to":"external:os.tmpdir","kind":"calls","metadata":{"unresolvedName":"os.tmpdir"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:makeTempHome","to":"external:tempDirs.push","kind":"calls","metadata":{"unresolvedName":"tempDirs.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:tempDirs.splice","kind":"calls","metadata":{"unresolvedName":"tempDirs.splice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:fs.rmSync","kind":"calls","metadata":{"unresolvedName":"fs.rmSync"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:makeTempHome","kind":"calls","metadata":{"unresolvedName":"makeTempHome"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:resolvePiAgentUiSettingsPaths","kind":"calls","metadata":{"unresolvedName":"resolvePiAgentUiSettingsPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:createPiAgentUiSettingsStore","kind":"calls","metadata":{"unresolvedName":"createPiAgentUiSettingsStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:first.saveSettings","kind":"calls","metadata":{"unresolvedName":"first.saveSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:first.close","kind":"calls","metadata":{"unresolvedName":"first.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:expect(fs.existsSync(paths.databasePath)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(fs.existsSync(paths.databasePath)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:fs.existsSync","kind":"calls","metadata":{"unresolvedName":"fs.existsSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:expect(second.getSettings()).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(second.getSettings()).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:second.getSettings","kind":"calls","metadata":{"unresolvedName":"second.getSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:second.close","kind":"calls","metadata":{"unresolvedName":"second.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:fs.mkdirSync","kind":"calls","metadata":{"unresolvedName":"fs.mkdirSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:path.dirname","kind":"calls","metadata":{"unresolvedName":"path.dirname"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:fs.writeFileSync","kind":"calls","metadata":{"unresolvedName":"fs.writeFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:expect(store.getSettings()).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(store.getSettings()).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:store.getSettings","kind":"calls","metadata":{"unresolvedName":"store.getSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:expect(store.getMeta('legacy_json_imported_at')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(store.getMeta('legacy_json_imported_at')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:store.getMeta","kind":"calls","metadata":{"unresolvedName":"store.getMeta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:expect.any","kind":"calls","metadata":{"unresolvedName":"expect.any"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:store.close","kind":"calls","metadata":{"unresolvedName":"store.close"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:makeTempHome","kind":"calls","metadata":{"unresolvedName":"makeTempHome"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:resolvePiAgentUiSettingsPaths","kind":"calls","metadata":{"unresolvedName":"resolvePiAgentUiSettingsPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:createPiAgentUiSettingsStore","kind":"calls","metadata":{"unresolvedName":"createPiAgentUiSettingsStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:first.saveSettings","kind":"calls","metadata":{"unresolvedName":"first.saveSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:first.close","kind":"calls","metadata":{"unresolvedName":"first.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:expect(fs.existsSync(paths.databasePath)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(fs.existsSync(paths.databasePath)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:fs.existsSync","kind":"calls","metadata":{"unresolvedName":"fs.existsSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:expect(second.getSettings()).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(second.getSettings()).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:second.getSettings","kind":"calls","metadata":{"unresolvedName":"second.getSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:second.close","kind":"calls","metadata":{"unresolvedName":"second.close"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:makeTempHome","kind":"calls","metadata":{"unresolvedName":"makeTempHome"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:resolvePiAgentUiSettingsPaths","kind":"calls","metadata":{"unresolvedName":"resolvePiAgentUiSettingsPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:fs.mkdirSync","kind":"calls","metadata":{"unresolvedName":"fs.mkdirSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:path.dirname","kind":"calls","metadata":{"unresolvedName":"path.dirname"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:fs.writeFileSync","kind":"calls","metadata":{"unresolvedName":"fs.writeFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:createPiAgentUiSettingsStore","kind":"calls","metadata":{"unresolvedName":"createPiAgentUiSettingsStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:expect(store.getSettings()).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(store.getSettings()).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:store.getSettings","kind":"calls","metadata":{"unresolvedName":"store.getSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:expect(store.getMeta('legacy_json_imported_at')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(store.getMeta('legacy_json_imported_at')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:store.getMeta","kind":"calls","metadata":{"unresolvedName":"store.getMeta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:expect.any","kind":"calls","metadata":{"unresolvedName":"expect.any"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.test.ts:","to":"external:store.close","kind":"calls","metadata":{"unresolvedName":"store.close"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"external:node:fs","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"external:node:path","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"external:node:module","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:resolvePiAgentUiSettingsPaths","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:resolvePiAgentUiSettingsPaths","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:resolvePiAgentUiSettingsPaths","to":"external:path.join","kind":"calls","metadata":{"unresolvedName":"path.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:isObject","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:isObject","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:isObject","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:parseJsonObject","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:parseJsonObject","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:parseJsonObject","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:parseJsonObject","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:isObject","kind":"calls","metadata":{"unresolvedName":"isObject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:normalizeSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:normalizeSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:normalizeSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:isObject","kind":"calls","metadata":{"unresolvedName":"isObject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:readLegacyJsonSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:readLegacyJsonSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:readLegacyJsonSettings","to":"external:fs.existsSync","kind":"calls","metadata":{"unresolvedName":"fs.existsSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:readLegacyJsonSettings","to":"symbol-name:normalizeSettings","kind":"calls","metadata":{"unresolvedName":"normalizeSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:readLegacyJsonSettings","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:readLegacyJsonSettings","to":"external:fs.readFileSync","kind":"calls","metadata":{"unresolvedName":"fs.readFileSync"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:close","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:close","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:close","to":"external:this.db.close","kind":"calls","metadata":{"unresolvedName":"this.db.close"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:getMeta","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:getMeta","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:getMeta","to":"external:this.db.prepare('SELECT value FROM app_meta WHERE key = ?').get","kind":"calls","metadata":{"unresolvedName":"this.db.prepare('SELECT value FROM app_meta WHERE key = ?').get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:getMeta","to":"external:this.db.prepare","kind":"calls","metadata":{"unresolvedName":"this.db.prepare"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:setMeta","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:setMeta","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:setMeta","to":"external:this.db\n .prepare","kind":"calls","metadata":{"unresolvedName":"this.db\n .prepare"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:setMeta","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:getSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:getSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:getSettings","to":"external:this.getNamespace","kind":"calls","metadata":{"unresolvedName":"this.getNamespace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:saveSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:saveSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:saveSettings","to":"symbol-name:normalizeSettings","kind":"calls","metadata":{"unresolvedName":"normalizeSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:saveSettings","to":"external:this.db.exec","kind":"calls","metadata":{"unresolvedName":"this.db.exec"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:saveSettings","to":"external:this.setNamespace","kind":"calls","metadata":{"unresolvedName":"this.setNamespace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:saveSettings","to":"external:this.setMeta","kind":"calls","metadata":{"unresolvedName":"this.setMeta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:saveSettings","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:initialize","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:initialize","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:initialize","to":"external:this.db.exec","kind":"calls","metadata":{"unresolvedName":"this.db.exec"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:initialize","to":"external:this.setMeta","kind":"calls","metadata":{"unresolvedName":"this.setMeta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:initialize","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:importLegacyJsonOnce","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:importLegacyJsonOnce","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:importLegacyJsonOnce","to":"external:this.getMeta","kind":"calls","metadata":{"unresolvedName":"this.getMeta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:importLegacyJsonOnce","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:readLegacyJsonSettings","kind":"calls","metadata":{"unresolvedName":"readLegacyJsonSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:importLegacyJsonOnce","to":"external:this.saveSettings","kind":"calls","metadata":{"unresolvedName":"this.saveSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:importLegacyJsonOnce","to":"external:this.setMeta","kind":"calls","metadata":{"unresolvedName":"this.setMeta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:importLegacyJsonOnce","to":"external:new Date().toISOString","kind":"calls","metadata":{"unresolvedName":"new Date().toISOString"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:getNamespace","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:getNamespace","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:getNamespace","to":"external:this.db\n .prepare","kind":"calls","metadata":{"unresolvedName":"this.db\n .prepare"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:getNamespace","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:parseJsonObject","kind":"calls","metadata":{"unresolvedName":"parseJsonObject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:setNamespace","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:setNamespace","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:setNamespace","to":"external:this.db\n .prepare","kind":"calls","metadata":{"unresolvedName":"this.db\n .prepare"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:setNamespace","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:setNamespace","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:createPiAgentUiSettingsStore","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/extensions/piagentui-settings-store.ts:createPiAgentUiSettingsStore","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js:","to":"external:event.notification.close","kind":"calls","metadata":{"unresolvedName":"event.notification.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js:","to":"external:event.waitUntil","kind":"calls","metadata":{"unresolvedName":"event.waitUntil"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js:","to":"external:clients.matchAll({ type: 'window', includeUncontrolled: true }).then","kind":"calls","metadata":{"unresolvedName":"clients.matchAll({ type: 'window', includeUncontrolled: true }).then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js:","to":"external:clients.matchAll","kind":"calls","metadata":{"unresolvedName":"clients.matchAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js:","to":"external:client.url.startsWith","kind":"calls","metadata":{"unresolvedName":"client.url.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js:","to":"external:client.postMessage","kind":"calls","metadata":{"unresolvedName":"client.postMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js:","to":"external:client.focus","kind":"calls","metadata":{"unresolvedName":"client.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js:","to":"external:clients.openWindow","kind":"calls","metadata":{"unresolvedName":"clients.openWindow"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js:","to":"external:client.url.startsWith","kind":"calls","metadata":{"unresolvedName":"client.url.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js:","to":"external:client.postMessage","kind":"calls","metadata":{"unresolvedName":"client.postMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js:","to":"external:client.focus","kind":"calls","metadata":{"unresolvedName":"client.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/public/notification-sw.js:","to":"external:clients.openWindow","kind":"calls","metadata":{"unresolvedName":"clients.openWindow"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs","to":"external:fs","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs","to":"external:child_process","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs","to":"external:path","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs","to":"external:url","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:formatWithPrettier","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:formatWithPrettier","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:formatWithPrettier","to":"symbol-name:execSync","kind":"calls","metadata":{"unresolvedName":"execSync"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:replaceCargoPackageVersion","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:replaceCargoPackageVersion","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:replaceCargoPackageVersion","to":"external:lockContent.split","kind":"calls","metadata":{"unresolvedName":"lockContent.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:replaceCargoPackageVersion","to":"external:packageBlocks.map","kind":"calls","metadata":{"unresolvedName":"packageBlocks.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:replaceCargoPackageVersion","to":"external:block.includes","kind":"calls","metadata":{"unresolvedName":"block.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:replaceCargoPackageVersion","to":"external:block.replace","kind":"calls","metadata":{"unresolvedName":"block.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:replaceCargoPackageVersion","to":"external:updatedBlocks.join","kind":"calls","metadata":{"unresolvedName":"updatedBlocks.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:","to":"external:block.includes","kind":"calls","metadata":{"unresolvedName":"block.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:","to":"external:block.replace","kind":"calls","metadata":{"unresolvedName":"block.replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:getReleaseBaseTag","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:getReleaseBaseTag","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:getReleaseBaseTag","to":"symbol-name:execSync","kind":"calls","metadata":{"unresolvedName":"execSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:getReleaseBaseTag","to":"external:tag.trim","kind":"calls","metadata":{"unresolvedName":"tag.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:getReleaseBaseTag","to":"external:mergedTags.find","kind":"calls","metadata":{"unresolvedName":"mergedTags.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/bump-version.mjs:getReleaseBaseTag","to":"external:stableTagRe.test","kind":"calls","metadata":{"unresolvedName":"stableTagRe.test"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/copy-material-icons.mjs","to":"external:fs","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/copy-material-icons.mjs","to":"external:path","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/copy-material-icons.mjs","to":"external:url","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs","to":"external:child_process","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs","to":"external:path","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs","to":"external:url","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs:run","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs:run","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs:run","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs:run","to":"symbol-name:execSync","kind":"calls","metadata":{"unresolvedName":"execSync"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs:read","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs:read","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/scripts/prepare-release.mjs:read","to":"symbol-name:execSync","kind":"calls","metadata":{"unresolvedName":"execSync"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts:getAgents","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts:getAgents","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts:getAgents","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts:getSelectableAgents","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts:getSelectableAgents","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts:getSelectableAgents","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts:getAgents","kind":"calls","metadata":{"unresolvedName":"getAgents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts:getSelectableAgents","to":"external:agents.filter","kind":"calls","metadata":{"unresolvedName":"agents.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"external:vi.mocked(piClient.get).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"external:vi.mocked(piClient.get).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getActiveModels","kind":"calls","metadata":{"unresolvedName":"getActiveModels"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"external:expect(models).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(models).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"external:expect(models[0]).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(models[0]).toMatchObject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"external:vi.mocked(piClient.get).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"external:vi.mocked(piClient.get).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getActiveModels","kind":"calls","metadata":{"unresolvedName":"getActiveModels"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"external:expect(models).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(models).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"external:expect(models[0]).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(models[0]).toMatchObject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"external:vi.mocked(piClient.get).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getActiveModels","kind":"calls","metadata":{"unresolvedName":"getActiveModels"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"external:expect(models[0]).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(models[0]).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getActiveModels","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getActiveModels","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getActiveModels","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getActiveModels","to":"external:data.models.map","kind":"calls","metadata":{"unresolvedName":"data.models.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getActiveModels","to":"external:model.input?.includes","kind":"calls","metadata":{"unresolvedName":"model.input?.includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getDefaultModels","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getDefaultModels","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getCurrentProject","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getCurrentProject","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getCurrentProject","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getProjects","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getProjects","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getProjects","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:initGitProject","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:initGitProject","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:initGitProject","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:updateProject","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:updateProject","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:updateProject","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getPath","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getPath","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"external:vi.mocked(piClient.get).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"external:vi.mocked(piClient.get).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands","kind":"calls","metadata":{"unresolvedName":"getCommands"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"external:expect(commands).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(commands).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"external:vi.mocked(piClient.get).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"external:vi.mocked(piClient.get).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands","kind":"calls","metadata":{"unresolvedName":"getCommands"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"external:expect(commands).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(commands).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"external:vi.mocked(piClient.get).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands","kind":"calls","metadata":{"unresolvedName":"getCommands"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"external:expect(commands).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(commands).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"external:vi.mocked(piClient.get).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands","kind":"calls","metadata":{"unresolvedName":"getCommands"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"external:expect(commands).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(commands).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/i18n.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getFrontendCommands","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getFrontendCommands","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getFrontendCommands","to":"external:i18n.t","kind":"calls","metadata":{"unresolvedName":"i18n.t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommandCacheKey","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommandCacheKey","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommandCacheKey","to":"external:serverStore.getActiveServerId","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveServerId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommandCacheKey","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:fetchCommands","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:fetchCommands","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:fetchCommands","to":"symbol-name:encodeURIComponent","kind":"calls","metadata":{"unresolvedName":"encodeURIComponent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:fetchCommands","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:fetchCommands","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:fetchCommands","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getFrontendCommands","kind":"calls","metadata":{"unresolvedName":"getFrontendCommands"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:fetchCommands","to":"external:frontendCommands.map","kind":"calls","metadata":{"unresolvedName":"frontendCommands.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:fetchCommands","to":"external:apiCommands\n .map","kind":"calls","metadata":{"unresolvedName":"apiCommands\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:fetchCommands","to":"external:frontendNames.has","kind":"calls","metadata":{"unresolvedName":"frontendNames.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:fetchCommands","to":"external:commandsFromApi.map","kind":"calls","metadata":{"unresolvedName":"commandsFromApi.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:fetchCommands","to":"external:frontendCommands.filter","kind":"calls","metadata":{"unresolvedName":"frontendCommands.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:fetchCommands","to":"external:apiNames.has","kind":"calls","metadata":{"unresolvedName":"apiNames.has"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommandCacheKey","kind":"calls","metadata":{"unresolvedName":"getCommandCacheKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands","to":"external:commandCache.get","kind":"calls","metadata":{"unresolvedName":"commandCache.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands","to":"external:commandInflight.get","kind":"calls","metadata":{"unresolvedName":"commandInflight.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands","to":"external:fetchCommands(directory)\n .then","kind":"calls","metadata":{"unresolvedName":"fetchCommands(directory)\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:fetchCommands","kind":"calls","metadata":{"unresolvedName":"fetchCommands"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands","to":"external:commandCache.set","kind":"calls","metadata":{"unresolvedName":"commandCache.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands","to":"external:commandInflight.delete","kind":"calls","metadata":{"unresolvedName":"commandInflight.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands","to":"external:commandInflight.set","kind":"calls","metadata":{"unresolvedName":"commandInflight.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:","to":"external:commandCache.set","kind":"calls","metadata":{"unresolvedName":"commandCache.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:","to":"external:commandInflight.delete","kind":"calls","metadata":{"unresolvedName":"commandInflight.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:prefetchCommands","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:prefetchCommands","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:prefetchCommands","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands","kind":"calls","metadata":{"unresolvedName":"getCommands"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:executeCommand","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:executeCommand","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:executeCommand","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:executeCommand","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/config.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/model.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts:getConfig","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts:getConfig","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts:updateConfig","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts:updateConfig","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts:getProviderConfigs","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/config.ts:getProviderConfigs","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/event.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:concatBytes","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:concatBytes","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:concatBytes","to":"external:parts.reduce","kind":"calls","metadata":{"unresolvedName":"parts.reduce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:concatBytes","to":"external:result.set","kind":"calls","metadata":{"unresolvedName":"result.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunks","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunks","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunks","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunks","to":"external:raw.split","kind":"calls","metadata":{"unresolvedName":"raw.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunks","to":"external:encoder.encode","kind":"calls","metadata":{"unresolvedName":"encoder.encode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunks","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:concatBytes","kind":"calls","metadata":{"unresolvedName":"concatBytes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunks","to":"external:deltaBytes.slice","kind":"calls","metadata":{"unresolvedName":"deltaBytes.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createStream","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createStream","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createStream","to":"external:controller.enqueue","kind":"calls","metadata":{"unresolvedName":"controller.enqueue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createStream","to":"external:controller.close","kind":"calls","metadata":{"unresolvedName":"controller.close"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:start","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:start","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:start","to":"external:controller.enqueue","kind":"calls","metadata":{"unresolvedName":"controller.enqueue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:start","to":"external:controller.close","kind":"calls","metadata":{"unresolvedName":"controller.close"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createFetchResponse","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createFetchResponse","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createFetchResponse","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createStream","kind":"calls","metadata":{"unresolvedName":"createStream"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createDeferred","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createDeferred","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunk","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunk","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunk","to":"external:encoder.encode","kind":"calls","metadata":{"unresolvedName":"encoder.encode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunk","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.resetModules","kind":"calls","metadata":{"unresolvedName":"vi.resetModules"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.unstubAllGlobals","kind":"calls","metadata":{"unresolvedName":"vi.unstubAllGlobals"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.fn().mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.fn().mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createFetchResponse","kind":"calls","metadata":{"unresolvedName":"createFetchResponse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunks","kind":"calls","metadata":{"unresolvedName":"createEventChunks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.stubGlobal","kind":"calls","metadata":{"unresolvedName":"vi.stubGlobal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:expect(received).toBe","kind":"calls","metadata":{"unresolvedName":"expect(received).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunk","kind":"calls","metadata":{"unresolvedName":"createEventChunk"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:expect(received).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(received).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:createDeferred","kind":"calls","metadata":{"unresolvedName":"createDeferred"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi\n .fn()\n .mockImplementationOnce","kind":"calls","metadata":{"unresolvedName":"vi\n .fn()\n .mockImplementationOnce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi\n .fn","kind":"calls","metadata":{"unresolvedName":"vi\n .fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:received.push","kind":"calls","metadata":{"unresolvedName":"received.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:reconnectSSE","kind":"calls","metadata":{"unresolvedName":"reconnectSSE"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:secondFetch.resolve","kind":"calls","metadata":{"unresolvedName":"secondFetch.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.waitFor","kind":"calls","metadata":{"unresolvedName":"vi.waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:expect(received).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(received).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:firstFetch.resolve","kind":"calls","metadata":{"unresolvedName":"firstFetch.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:firstFetch.reject","kind":"calls","metadata":{"unresolvedName":"firstFetch.reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:expect(onError).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(onError).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:expect(getConnectionInfo().state).toBe","kind":"calls","metadata":{"unresolvedName":"expect(getConnectionInfo().state).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:getConnectionInfo","kind":"calls","metadata":{"unresolvedName":"getConnectionInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:secondFetch.reject","kind":"calls","metadata":{"unresolvedName":"secondFetch.reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:Object.assign","kind":"calls","metadata":{"unresolvedName":"Object.assign"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.resetModules","kind":"calls","metadata":{"unresolvedName":"vi.resetModules"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.unstubAllGlobals","kind":"calls","metadata":{"unresolvedName":"vi.unstubAllGlobals"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.fn().mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.fn().mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createFetchResponse","kind":"calls","metadata":{"unresolvedName":"createFetchResponse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunks","kind":"calls","metadata":{"unresolvedName":"createEventChunks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.stubGlobal","kind":"calls","metadata":{"unresolvedName":"vi.stubGlobal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:expect(received).toBe","kind":"calls","metadata":{"unresolvedName":"expect(received).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onPartDelta","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onPartDelta","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onPartDelta","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onPartDelta","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.fn().mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.fn().mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createFetchResponse","kind":"calls","metadata":{"unresolvedName":"createFetchResponse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunks","kind":"calls","metadata":{"unresolvedName":"createEventChunks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.stubGlobal","kind":"calls","metadata":{"unresolvedName":"vi.stubGlobal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:expect(received).toBe","kind":"calls","metadata":{"unresolvedName":"expect(received).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onPartDelta","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onPartDelta","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onPartDelta","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onPartDelta","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.fn().mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.fn().mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createFetchResponse","kind":"calls","metadata":{"unresolvedName":"createFetchResponse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunk","kind":"calls","metadata":{"unresolvedName":"createEventChunk"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.stubGlobal","kind":"calls","metadata":{"unresolvedName":"vi.stubGlobal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:expect(received).toBe","kind":"calls","metadata":{"unresolvedName":"expect(received).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onServerConnected","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onServerConnected","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onServerConnected","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onServerConnected","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.fn().mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.fn().mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createFetchResponse","kind":"calls","metadata":{"unresolvedName":"createFetchResponse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunk","kind":"calls","metadata":{"unresolvedName":"createEventChunk"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.stubGlobal","kind":"calls","metadata":{"unresolvedName":"vi.stubGlobal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:expect(received).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(received).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onMessageUpdated","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onMessageUpdated","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onMessageUpdated","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onMessageUpdated","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.fn().mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.fn().mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createFetchResponse","kind":"calls","metadata":{"unresolvedName":"createFetchResponse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunk","kind":"calls","metadata":{"unresolvedName":"createEventChunk"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.stubGlobal","kind":"calls","metadata":{"unresolvedName":"vi.stubGlobal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:expect(received).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(received).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onPartUpdated","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onPartUpdated","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onPartUpdated","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onPartUpdated","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onError","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:createDeferred","kind":"calls","metadata":{"unresolvedName":"createDeferred"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi\n .fn()\n .mockImplementationOnce","kind":"calls","metadata":{"unresolvedName":"vi\n .fn()\n .mockImplementationOnce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi\n .fn","kind":"calls","metadata":{"unresolvedName":"vi\n .fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.stubGlobal","kind":"calls","metadata":{"unresolvedName":"vi.stubGlobal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:received.push","kind":"calls","metadata":{"unresolvedName":"received.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:reconnectSSE","kind":"calls","metadata":{"unresolvedName":"reconnectSSE"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:secondFetch.resolve","kind":"calls","metadata":{"unresolvedName":"secondFetch.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createFetchResponse","kind":"calls","metadata":{"unresolvedName":"createFetchResponse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:createEventChunk","kind":"calls","metadata":{"unresolvedName":"createEventChunk"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.waitFor","kind":"calls","metadata":{"unresolvedName":"vi.waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:expect(received).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(received).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:firstFetch.resolve","kind":"calls","metadata":{"unresolvedName":"firstFetch.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onServerConnected","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onServerConnected","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:onServerConnected","to":"external:received.push","kind":"calls","metadata":{"unresolvedName":"received.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:expect(received).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(received).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:createDeferred","kind":"calls","metadata":{"unresolvedName":"createDeferred"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi\n .fn()\n .mockImplementationOnce","kind":"calls","metadata":{"unresolvedName":"vi\n .fn()\n .mockImplementationOnce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi\n .fn","kind":"calls","metadata":{"unresolvedName":"vi\n .fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.stubGlobal","kind":"calls","metadata":{"unresolvedName":"vi.stubGlobal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:reconnectSSE","kind":"calls","metadata":{"unresolvedName":"reconnectSSE"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:firstFetch.reject","kind":"calls","metadata":{"unresolvedName":"firstFetch.reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:expect(onError).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(onError).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:expect(getConnectionInfo().state).toBe","kind":"calls","metadata":{"unresolvedName":"expect(getConnectionInfo().state).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:getConnectionInfo","kind":"calls","metadata":{"unresolvedName":"getConnectionInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:secondFetch.reject","kind":"calls","metadata":{"unresolvedName":"secondFetch.reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"external:Object.assign","kind":"calls","metadata":{"unresolvedName":"Object.assign"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.test.ts:","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/event.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","to":"external:connectionListeners.forEach","kind":"calls","metadata":{"unresolvedName":"connectionListeners.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:getConnectionInfo","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:getConnectionInfo","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToConnectionState","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToConnectionState","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToConnectionState","to":"external:connectionListeners.add","kind":"calls","metadata":{"unresolvedName":"connectionListeners.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToConnectionState","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToConnectionState","to":"external:connectionListeners.delete","kind":"calls","metadata":{"unresolvedName":"connectionListeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:finalizeConnectionAttempt","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:finalizeConnectionAttempt","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastReconnected","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastReconnected","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastReconnected","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastReconnected","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastReconnected","to":"external:allSubscribers.forEach","kind":"calls","metadata":{"unresolvedName":"allSubscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastReconnected","to":"external:cb.onReconnected","kind":"calls","metadata":{"unresolvedName":"cb.onReconnected"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:cb.onReconnected","kind":"calls","metadata":{"unresolvedName":"cb.onReconnected"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectTauri","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectTauri","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectTauri","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectTauri","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectTauri","to":"external:pendingDisconnect.then","kind":"calls","metadata":{"unresolvedName":"pendingDisconnect.then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectTauri","to":"external:import('@tauri-apps/api/core')\n .then","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/api/core')\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectTauri","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectTauri","to":"external:invoke('bridge_disconnect', { args: { bridgeId: 'sse' } }).then","kind":"calls","metadata":{"unresolvedName":"invoke('bridge_disconnect', { args: { bridgeId: 'sse' } }).then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectTauri","to":"symbol-name:invoke","kind":"calls","metadata":{"unresolvedName":"invoke"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:resetHeartbeat","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:resetHeartbeat","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:resetHeartbeat","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:resetHeartbeat","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","kind":"calls","metadata":{"unresolvedName":"updateConnectionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:resetHeartbeat","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:resetHeartbeat","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:resetHeartbeat","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:resetHeartbeat","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:forceReconnectNow","kind":"calls","metadata":{"unresolvedName":"forceReconnectNow"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","kind":"calls","metadata":{"unresolvedName":"updateConnectionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:forceReconnectNow","kind":"calls","metadata":{"unresolvedName":"forceReconnectNow"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:scheduleReconnect","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:scheduleReconnect","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:scheduleReconnect","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:scheduleReconnect","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:scheduleReconnect","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:scheduleReconnect","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:scheduleReconnect","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","kind":"calls","metadata":{"unresolvedName":"updateConnectionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:scheduleReconnect","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton","kind":"calls","metadata":{"unresolvedName":"connectSingleton"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","kind":"calls","metadata":{"unresolvedName":"updateConnectionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton","kind":"calls","metadata":{"unresolvedName":"connectSingleton"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectTauri","kind":"calls","metadata":{"unresolvedName":"disconnectTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton","to":"external:singletonController.abort","kind":"calls","metadata":{"unresolvedName":"singletonController.abort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","kind":"calls","metadata":{"unresolvedName":"updateConnectionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:registerLifecycleListeners","kind":"calls","metadata":{"unresolvedName":"registerLifecycleListeners"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","kind":"calls","metadata":{"unresolvedName":"connectViaTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","kind":"calls","metadata":{"unresolvedName":"connectViaBrowser"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:getApiBaseUrl","kind":"calls","metadata":{"unresolvedName":"getApiBaseUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:getAuthHeader","kind":"calls","metadata":{"unresolvedName":"getAuthHeader"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:createSseTextParser","kind":"calls","metadata":{"unresolvedName":"createSseTextParser"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","kind":"calls","metadata":{"unresolvedName":"updateConnectionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:resetHeartbeat","kind":"calls","metadata":{"unresolvedName":"resetHeartbeat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastReconnected","kind":"calls","metadata":{"unresolvedName":"broadcastReconnected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","to":"external:sseParser.push","kind":"calls","metadata":{"unresolvedName":"sseParser.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:parseGlobalEvent","kind":"calls","metadata":{"unresolvedName":"parseGlobalEvent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastEvent","kind":"calls","metadata":{"unresolvedName":"broadcastEvent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:scheduleReconnect","kind":"calls","metadata":{"unresolvedName":"scheduleReconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","to":"external:allSubscribers.forEach","kind":"calls","metadata":{"unresolvedName":"allSubscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","to":"external:cb.onError","kind":"calls","metadata":{"unresolvedName":"cb.onError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","to":"symbol-name:invoke","kind":"calls","metadata":{"unresolvedName":"invoke"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:finalizeConnectionAttempt","kind":"calls","metadata":{"unresolvedName":"finalizeConnectionAttempt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaTauri","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","kind":"calls","metadata":{"unresolvedName":"updateConnectionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:resetHeartbeat","kind":"calls","metadata":{"unresolvedName":"resetHeartbeat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastReconnected","kind":"calls","metadata":{"unresolvedName":"broadcastReconnected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:sseParser.push","kind":"calls","metadata":{"unresolvedName":"sseParser.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:parseGlobalEvent","kind":"calls","metadata":{"unresolvedName":"parseGlobalEvent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastEvent","kind":"calls","metadata":{"unresolvedName":"broadcastEvent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:scheduleReconnect","kind":"calls","metadata":{"unresolvedName":"scheduleReconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:allSubscribers.forEach","kind":"calls","metadata":{"unresolvedName":"allSubscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:cb.onError","kind":"calls","metadata":{"unresolvedName":"cb.onError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:cb.onError","kind":"calls","metadata":{"unresolvedName":"cb.onError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:finalizeConnectionAttempt","kind":"calls","metadata":{"unresolvedName":"finalizeConnectionAttempt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","kind":"calls","metadata":{"unresolvedName":"updateConnectionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:allSubscribers.forEach","kind":"calls","metadata":{"unresolvedName":"allSubscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:cb.onError","kind":"calls","metadata":{"unresolvedName":"cb.onError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:scheduleReconnect","kind":"calls","metadata":{"unresolvedName":"scheduleReconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:cb.onError","kind":"calls","metadata":{"unresolvedName":"cb.onError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"symbol-name:fetch","kind":"calls","metadata":{"unresolvedName":"fetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:getApiBaseUrl","kind":"calls","metadata":{"unresolvedName":"getApiBaseUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:getAuthHeader","kind":"calls","metadata":{"unresolvedName":"getAuthHeader"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"external:response.body?.cancel?.().catch","kind":"calls","metadata":{"unresolvedName":"response.body?.cancel?.().catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"external:response.body?.cancel","kind":"calls","metadata":{"unresolvedName":"response.body?.cancel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:finalizeConnectionAttempt","kind":"calls","metadata":{"unresolvedName":"finalizeConnectionAttempt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","kind":"calls","metadata":{"unresolvedName":"updateConnectionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:resetHeartbeat","kind":"calls","metadata":{"unresolvedName":"resetHeartbeat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastReconnected","kind":"calls","metadata":{"unresolvedName":"broadcastReconnected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"external:response.body?.getReader","kind":"calls","metadata":{"unresolvedName":"response.body?.getReader"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:createSseTextParser","kind":"calls","metadata":{"unresolvedName":"createSseTextParser"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"external:reader.cancel().catch","kind":"calls","metadata":{"unresolvedName":"reader.cancel().catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"external:reader.cancel","kind":"calls","metadata":{"unresolvedName":"reader.cancel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"external:reader.read","kind":"calls","metadata":{"unresolvedName":"reader.read"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:scheduleReconnect","kind":"calls","metadata":{"unresolvedName":"scheduleReconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"external:sseParser.push","kind":"calls","metadata":{"unresolvedName":"sseParser.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"external:decoder.decode","kind":"calls","metadata":{"unresolvedName":"decoder.decode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:parseGlobalEvent","kind":"calls","metadata":{"unresolvedName":"parseGlobalEvent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastEvent","kind":"calls","metadata":{"unresolvedName":"broadcastEvent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"external:allSubscribers.forEach","kind":"calls","metadata":{"unresolvedName":"allSubscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectViaBrowser","to":"external:cb.onError","kind":"calls","metadata":{"unresolvedName":"cb.onError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:response.body?.cancel?.().catch","kind":"calls","metadata":{"unresolvedName":"response.body?.cancel?.().catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:response.body?.cancel","kind":"calls","metadata":{"unresolvedName":"response.body?.cancel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:finalizeConnectionAttempt","kind":"calls","metadata":{"unresolvedName":"finalizeConnectionAttempt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","kind":"calls","metadata":{"unresolvedName":"updateConnectionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:resetHeartbeat","kind":"calls","metadata":{"unresolvedName":"resetHeartbeat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastReconnected","kind":"calls","metadata":{"unresolvedName":"broadcastReconnected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:response.body?.getReader","kind":"calls","metadata":{"unresolvedName":"response.body?.getReader"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:createSseTextParser","kind":"calls","metadata":{"unresolvedName":"createSseTextParser"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:reader.cancel().catch","kind":"calls","metadata":{"unresolvedName":"reader.cancel().catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:reader.cancel","kind":"calls","metadata":{"unresolvedName":"reader.cancel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:reader.read","kind":"calls","metadata":{"unresolvedName":"reader.read"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:scheduleReconnect","kind":"calls","metadata":{"unresolvedName":"scheduleReconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:sseParser.push","kind":"calls","metadata":{"unresolvedName":"sseParser.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:decoder.decode","kind":"calls","metadata":{"unresolvedName":"decoder.decode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:parseGlobalEvent","kind":"calls","metadata":{"unresolvedName":"parseGlobalEvent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastEvent","kind":"calls","metadata":{"unresolvedName":"broadcastEvent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:finalizeConnectionAttempt","kind":"calls","metadata":{"unresolvedName":"finalizeConnectionAttempt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","kind":"calls","metadata":{"unresolvedName":"updateConnectionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:allSubscribers.forEach","kind":"calls","metadata":{"unresolvedName":"allSubscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:cb.onError","kind":"calls","metadata":{"unresolvedName":"cb.onError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:scheduleReconnect","kind":"calls","metadata":{"unresolvedName":"scheduleReconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:cb.onError","kind":"calls","metadata":{"unresolvedName":"cb.onError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:parseGlobalEvent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:parseGlobalEvent","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:parseGlobalEvent","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:parseGlobalEvent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isGlobalEvent","kind":"calls","metadata":{"unresolvedName":"isGlobalEvent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:parseGlobalEvent","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isGlobalEvent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isGlobalEvent","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isGlobalEvent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isRecord","kind":"calls","metadata":{"unresolvedName":"isRecord"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isGlobalEvent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isEventType","kind":"calls","metadata":{"unresolvedName":"isEventType"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isEventType","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isEventType","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isEventType","to":"external:EVENT_TYPE_SET.has","kind":"calls","metadata":{"unresolvedName":"EVENT_TYPE_SET.has"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isRecord","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isRecord","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:getMessageInfo","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:getMessageInfo","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:getMessageInfo","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isRecord","kind":"calls","metadata":{"unresolvedName":"isRecord"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:startBackgroundKeepalive","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:startBackgroundKeepalive","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:startBackgroundKeepalive","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:stopBackgroundKeepalive","kind":"calls","metadata":{"unresolvedName":"stopBackgroundKeepalive"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:startBackgroundKeepalive","to":"symbol-name:setInterval","kind":"calls","metadata":{"unresolvedName":"setInterval"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:startBackgroundKeepalive","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:startBackgroundKeepalive","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:startBackgroundKeepalive","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:startBackgroundKeepalive","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:startBackgroundKeepalive","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectTauri","kind":"calls","metadata":{"unresolvedName":"disconnectTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:startBackgroundKeepalive","to":"external:singletonController.abort","kind":"calls","metadata":{"unresolvedName":"singletonController.abort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:startBackgroundKeepalive","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","kind":"calls","metadata":{"unresolvedName":"updateConnectionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:startBackgroundKeepalive","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:scheduleReconnect","kind":"calls","metadata":{"unresolvedName":"scheduleReconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:startBackgroundKeepalive","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton","kind":"calls","metadata":{"unresolvedName":"connectSingleton"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectTauri","kind":"calls","metadata":{"unresolvedName":"disconnectTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:singletonController.abort","kind":"calls","metadata":{"unresolvedName":"singletonController.abort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","kind":"calls","metadata":{"unresolvedName":"updateConnectionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:scheduleReconnect","kind":"calls","metadata":{"unresolvedName":"scheduleReconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton","kind":"calls","metadata":{"unresolvedName":"connectSingleton"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:stopBackgroundKeepalive","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:stopBackgroundKeepalive","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:stopBackgroundKeepalive","to":"symbol-name:clearInterval","kind":"calls","metadata":{"unresolvedName":"clearInterval"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectSingleton","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectSingleton","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectSingleton","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectSingleton","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:stopBackgroundKeepalive","kind":"calls","metadata":{"unresolvedName":"stopBackgroundKeepalive"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectSingleton","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectTauri","kind":"calls","metadata":{"unresolvedName":"disconnectTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectSingleton","to":"external:singletonController.abort","kind":"calls","metadata":{"unresolvedName":"singletonController.abort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectSingleton","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","kind":"calls","metadata":{"unresolvedName":"updateConnectionState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleVisibilityChange","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleVisibilityChange","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleVisibilityChange","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:stopBackgroundKeepalive","kind":"calls","metadata":{"unresolvedName":"stopBackgroundKeepalive"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleVisibilityChange","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleVisibilityChange","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleVisibilityChange","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleVisibilityChange","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:forceReconnectNow","kind":"calls","metadata":{"unresolvedName":"forceReconnectNow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleVisibilityChange","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleVisibilityChange","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:resetHeartbeat","kind":"calls","metadata":{"unresolvedName":"resetHeartbeat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleVisibilityChange","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:startBackgroundKeepalive","kind":"calls","metadata":{"unresolvedName":"startBackgroundKeepalive"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:forceReconnectNow","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:forceReconnectNow","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:forceReconnectNow","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:forceReconnectNow","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","kind":"calls","metadata":{"unresolvedName":"updateConnectionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:forceReconnectNow","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectTauri","kind":"calls","metadata":{"unresolvedName":"disconnectTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:forceReconnectNow","to":"external:singletonController.abort","kind":"calls","metadata":{"unresolvedName":"singletonController.abort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:forceReconnectNow","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton","kind":"calls","metadata":{"unresolvedName":"connectSingleton"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleOnline","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleOnline","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleOnline","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleOnline","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:forceReconnectNow","kind":"calls","metadata":{"unresolvedName":"forceReconnectNow"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleOffline","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleOffline","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleOffline","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleOffline","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectTauri","kind":"calls","metadata":{"unresolvedName":"disconnectTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleOffline","to":"external:singletonController.abort","kind":"calls","metadata":{"unresolvedName":"singletonController.abort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleOffline","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleOffline","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:stopBackgroundKeepalive","kind":"calls","metadata":{"unresolvedName":"stopBackgroundKeepalive"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleOffline","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","kind":"calls","metadata":{"unresolvedName":"updateConnectionState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:registerLifecycleListeners","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:registerLifecycleListeners","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:registerLifecycleListeners","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:registerLifecycleListeners","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:unregisterLifecycleListeners","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:unregisterLifecycleListeners","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:unregisterLifecycleListeners","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:unregisterLifecycleListeners","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:shouldLogSseEvents","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:shouldLogSseEvents","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:shouldLogSseEvents","to":"external:window.localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"window.localStorage.getItem"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastEvent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastEvent","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastEvent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:shouldLogSseEvents","kind":"calls","metadata":{"unresolvedName":"shouldLogSseEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastEvent","to":"external:console.debug","kind":"calls","metadata":{"unresolvedName":"console.debug"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastEvent","to":"external:allSubscribers.forEach","kind":"calls","metadata":{"unresolvedName":"allSubscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:broadcastEvent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","kind":"calls","metadata":{"unresolvedName":"handleEventForSubscriber"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","kind":"calls","metadata":{"unresolvedName":"handleEventForSubscriber"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:getMessageInfo","kind":"calls","metadata":{"unresolvedName":"getMessageInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isRecord","kind":"calls","metadata":{"unresolvedName":"isRecord"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onMessageUpdated","kind":"calls","metadata":{"unresolvedName":"callbacks.onMessageUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onPartUpdated","kind":"calls","metadata":{"unresolvedName":"callbacks.onPartUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onPartDelta","kind":"calls","metadata":{"unresolvedName":"callbacks.onPartDelta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onPartRemoved","kind":"calls","metadata":{"unresolvedName":"callbacks.onPartRemoved"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onSessionUpdated","kind":"calls","metadata":{"unresolvedName":"callbacks.onSessionUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onSessionCreated","kind":"calls","metadata":{"unresolvedName":"callbacks.onSessionCreated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onSessionDeleted","kind":"calls","metadata":{"unresolvedName":"callbacks.onSessionDeleted"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onProjectUpdated","kind":"calls","metadata":{"unresolvedName":"callbacks.onProjectUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onSessionError","kind":"calls","metadata":{"unresolvedName":"callbacks.onSessionError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:normalizeSessionError","kind":"calls","metadata":{"unresolvedName":"normalizeSessionError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onSessionIdle","kind":"calls","metadata":{"unresolvedName":"callbacks.onSessionIdle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onSessionStatus","kind":"calls","metadata":{"unresolvedName":"callbacks.onSessionStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onPermissionAsked","kind":"calls","metadata":{"unresolvedName":"callbacks.onPermissionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onPermissionReplied","kind":"calls","metadata":{"unresolvedName":"callbacks.onPermissionReplied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onQuestionAsked","kind":"calls","metadata":{"unresolvedName":"callbacks.onQuestionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onQuestionReplied","kind":"calls","metadata":{"unresolvedName":"callbacks.onQuestionReplied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onQuestionRejected","kind":"calls","metadata":{"unresolvedName":"callbacks.onQuestionRejected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onWorktreeReady","kind":"calls","metadata":{"unresolvedName":"callbacks.onWorktreeReady"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onWorktreeFailed","kind":"calls","metadata":{"unresolvedName":"callbacks.onWorktreeFailed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onVcsBranchUpdated","kind":"calls","metadata":{"unresolvedName":"callbacks.onVcsBranchUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onTodoUpdated","kind":"calls","metadata":{"unresolvedName":"callbacks.onTodoUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoItems","kind":"calls","metadata":{"unresolvedName":"normalizeTodoItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"external:callbacks.onServerConnected","kind":"calls","metadata":{"unresolvedName":"callbacks.onServerConnected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:handleEventForSubscriber","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:normalizeServerConnected","kind":"calls","metadata":{"unresolvedName":"normalizeServerConnected"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:normalizeServerConnected","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:normalizeServerConnected","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:normalizeServerConnected","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isRecord","kind":"calls","metadata":{"unresolvedName":"isRecord"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:normalizeSessionError","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:normalizeSessionError","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:normalizeSessionError","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:isRecord","kind":"calls","metadata":{"unresolvedName":"isRecord"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:reconnectSSE","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:reconnectSSE","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:reconnectSSE","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:reconnectSSE","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:reconnectSSE","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:stopBackgroundKeepalive","kind":"calls","metadata":{"unresolvedName":"stopBackgroundKeepalive"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:reconnectSSE","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectTauri","kind":"calls","metadata":{"unresolvedName":"disconnectTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:reconnectSSE","to":"external:singletonController.abort","kind":"calls","metadata":{"unresolvedName":"singletonController.abort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:reconnectSSE","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:updateConnectionState","kind":"calls","metadata":{"unresolvedName":"updateConnectionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:reconnectSSE","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton","kind":"calls","metadata":{"unresolvedName":"connectSingleton"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","to":"external:allSubscribers.add","kind":"calls","metadata":{"unresolvedName":"allSubscribers.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:connectSingleton","kind":"calls","metadata":{"unresolvedName":"connectSingleton"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","to":"external:allSubscribers.delete","kind":"calls","metadata":{"unresolvedName":"allSubscribers.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectSingleton","kind":"calls","metadata":{"unresolvedName":"disconnectSingleton"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:unregisterLifecycleListeners","kind":"calls","metadata":{"unresolvedName":"unregisterLifecycleListeners"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"external:allSubscribers.delete","kind":"calls","metadata":{"unresolvedName":"allSubscribers.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:disconnectSingleton","kind":"calls","metadata":{"unresolvedName":"disconnectSingleton"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:unregisterLifecycleListeners","kind":"calls","metadata":{"unresolvedName":"unregisterLifecycleListeners"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:vi.mocked(piClient.get).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:vi.mocked(piClient.post).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.post).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:vi.mocked(piClient.delete).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.delete).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:vi.mocked(piClient.get).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:vi.mocked(piClient.post).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.post).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:vi.mocked(piClient.delete).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.delete).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:expect(getExtensions('/repo')).resolves.toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(getExtensions('/repo')).resolves.toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:getExtensions","kind":"calls","metadata":{"unresolvedName":"getExtensions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:installExtension","kind":"calls","metadata":{"unresolvedName":"installExtension"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:removeExtensionPackage","kind":"calls","metadata":{"unresolvedName":"removeExtensionPackage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:expect(piClient.get).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.get).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:expect(piClient.post).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.post).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:expect(piClient.delete).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.delete).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:vi.mocked(piClient.get).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:vi.mocked(piClient.post).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.post).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:vi.mocked(piClient.delete).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.delete).mockReset"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:vi.mocked(piClient.get).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:vi.mocked(piClient.post).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.post).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:vi.mocked(piClient.delete).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.delete).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:expect(getExtensions('/repo')).resolves.toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(getExtensions('/repo')).resolves.toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:getExtensions","kind":"calls","metadata":{"unresolvedName":"getExtensions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:installExtension","kind":"calls","metadata":{"unresolvedName":"installExtension"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:removeExtensionPackage","kind":"calls","metadata":{"unresolvedName":"removeExtensionPackage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:expect(piClient.get).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.get).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:expect(piClient.post).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.post).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.test.ts:","to":"external:expect(piClient.delete).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.delete).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/extension.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:withDirectoryQuery","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:withDirectoryQuery","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:withDirectoryQuery","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:withDirectoryQuery","to":"symbol-name:encodeURIComponent","kind":"calls","metadata":{"unresolvedName":"encodeURIComponent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:getExtensions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:getExtensions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:getExtensions","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:getExtensions","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:withDirectoryQuery","kind":"calls","metadata":{"unresolvedName":"withDirectoryQuery"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:installExtension","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:installExtension","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:installExtension","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:installExtension","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:removeExtensionPackage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:removeExtensionPackage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:removeExtensionPackage","to":"external:piClient.delete","kind":"calls","metadata":{"unresolvedName":"piClient.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:removeExtensionPackage","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:isRootDirectoryPath","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:isRootDirectoryPath","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getRootDirectoryCacheKey","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getRootDirectoryCacheKey","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getRootDirectoryCacheKey","to":"external:serverStore.getActiveServerId","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveServerId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getRootDirectoryCacheKey","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:fetchDirectory","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:fetchDirectory","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:fetchDirectory","to":"external:/^[a-zA-Z]:/.test","kind":"calls","metadata":{"unresolvedName":"/^[a-zA-Z]:/.test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:fetchDirectory","to":"external:path.startsWith","kind":"calls","metadata":{"unresolvedName":"path.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:fetchDirectory","to":"symbol-name:encodeURIComponent","kind":"calls","metadata":{"unresolvedName":"encodeURIComponent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:fetchDirectory","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchFiles","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchFiles","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchFiles","to":"symbol-name:encodeURIComponent","kind":"calls","metadata":{"unresolvedName":"encodeURIComponent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchFiles","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:isRootDirectoryPath","kind":"calls","metadata":{"unresolvedName":"isRootDirectoryPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:fetchDirectory","kind":"calls","metadata":{"unresolvedName":"fetchDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getRootDirectoryCacheKey","kind":"calls","metadata":{"unresolvedName":"getRootDirectoryCacheKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","to":"external:rootDirectoryCache.get","kind":"calls","metadata":{"unresolvedName":"rootDirectoryCache.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","to":"external:rootDirectoryInflight.get","kind":"calls","metadata":{"unresolvedName":"rootDirectoryInflight.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","to":"external:fetchDirectory(path === '' ? '.' : path, directory)\n .then","kind":"calls","metadata":{"unresolvedName":"fetchDirectory(path === '' ? '.' : path, directory)\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","to":"external:rootDirectoryCache.set","kind":"calls","metadata":{"unresolvedName":"rootDirectoryCache.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","to":"external:rootDirectoryInflight.delete","kind":"calls","metadata":{"unresolvedName":"rootDirectoryInflight.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","to":"external:rootDirectoryInflight.set","kind":"calls","metadata":{"unresolvedName":"rootDirectoryInflight.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:","to":"external:rootDirectoryCache.set","kind":"calls","metadata":{"unresolvedName":"rootDirectoryCache.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:","to":"external:rootDirectoryInflight.delete","kind":"calls","metadata":{"unresolvedName":"rootDirectoryInflight.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:prefetchRootDirectory","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:prefetchRootDirectory","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:prefetchRootDirectory","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","kind":"calls","metadata":{"unresolvedName":"listDirectory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getFileContent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getFileContent","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getFileContent","to":"symbol-name:encodeURIComponent","kind":"calls","metadata":{"unresolvedName":"encodeURIComponent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getFileContent","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getFileContent","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getFileStatus","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getFileStatus","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getFileStatus","to":"symbol-name:encodeURIComponent","kind":"calls","metadata":{"unresolvedName":"encodeURIComponent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getFileStatus","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchSymbols","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchSymbols","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchSymbols","to":"symbol-name:encodeURIComponent","kind":"calls","metadata":{"unresolvedName":"encodeURIComponent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchSymbols","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchDirectories","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchDirectories","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchDirectories","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchFiles","kind":"calls","metadata":{"unresolvedName":"searchFiles"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts:getHealth","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts:getHealth","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts:getHealth","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts:disposeGlobal","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts:disposeGlobal","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts:disposeGlobal","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts:disposeInstance","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts:disposeInstance","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts:disposeInstance","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts:disposeInstance","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"external:expect(buildQueryString({})).toBe","kind":"calls","metadata":{"unresolvedName":"expect(buildQueryString({})).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:buildQueryString","kind":"calls","metadata":{"unresolvedName":"buildQueryString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"external:expect(buildQueryString({ a: 'hello', b: undefined })).toBe","kind":"calls","metadata":{"unresolvedName":"expect(buildQueryString({ a: 'hello', b: undefined })).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"external:expect(result).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"external:expect(buildQueryString({})).toBe","kind":"calls","metadata":{"unresolvedName":"expect(buildQueryString({})).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:buildQueryString","kind":"calls","metadata":{"unresolvedName":"buildQueryString"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"external:expect(buildQueryString({ a: 'hello', b: undefined })).toBe","kind":"calls","metadata":{"unresolvedName":"expect(buildQueryString({ a: 'hello', b: undefined })).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:buildQueryString","kind":"calls","metadata":{"unresolvedName":"buildQueryString"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:buildQueryString","kind":"calls","metadata":{"unresolvedName":"buildQueryString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"external:expect(result).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:buildQueryString","kind":"calls","metadata":{"unresolvedName":"buildQueryString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"external:expect(result).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:buildQueryString","kind":"calls","metadata":{"unresolvedName":"buildQueryString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"external:expect(result).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:buildQueryString","kind":"calls","metadata":{"unresolvedName":"buildQueryString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"external:expect(result).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:buildQueryString","kind":"calls","metadata":{"unresolvedName":"buildQueryString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"external:expect(result).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:getApiBaseUrl","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:getApiBaseUrl","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:getApiBaseUrl","to":"external:serverStore.getActiveBaseUrl","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveBaseUrl"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:getAuthHeader","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:getAuthHeader","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:getAuthHeader","to":"external:serverStore.getActiveToken","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveToken"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:getAuthHeader","to":"external:serverStore.getActiveAuth","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveAuth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:getAuthHeader","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:makeBasicAuthHeader","kind":"calls","metadata":{"unresolvedName":"makeBasicAuthHeader"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:buildQueryString","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:buildQueryString","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:buildQueryString","to":"external:Object.entries","kind":"calls","metadata":{"unresolvedName":"Object.entries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:buildQueryString","to":"external:parts.push","kind":"calls","metadata":{"unresolvedName":"parts.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:buildQueryString","to":"symbol-name:encodeURIComponent","kind":"calls","metadata":{"unresolvedName":"encodeURIComponent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/http.ts:buildQueryString","to":"external:parts.join","kind":"calls","metadata":{"unresolvedName":"parts.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/lsp.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/lsp.ts:getLspStatus","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/lsp.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/lsp.ts:getLspStatus","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/lsp.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/lsp.ts:getFormatterStatus","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/lsp.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/lsp.ts:getFormatterStatus","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","to":"external:vi.mocked(piClient.get).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","to":"external:vi.mocked(piClient.get).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:getMcpStatus","kind":"calls","metadata":{"unresolvedName":"getMcpStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","to":"external:expect(piClient.get).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.get).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","to":"external:expect(status.servers.context7).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(status.servers.context7).toMatchObject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","to":"external:vi.mocked(piClient.get).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","to":"external:vi.mocked(piClient.get).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:getMcpStatus","kind":"calls","metadata":{"unresolvedName":"getMcpStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","to":"external:expect(piClient.get).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.get).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.test.ts:","to":"external:expect(status.servers.context7).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(status.servers.context7).toMatchObject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/mcp.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:getMcpStatus","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:getMcpStatus","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:getMcpStatus","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:addMcpServer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:addMcpServer","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:connectMcpServer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:connectMcpServer","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:disconnectMcpServer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:disconnectMcpServer","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:startMcpAuth","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:startMcpAuth","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:startMcpAuth","to":"external:Promise.reject","kind":"calls","metadata":{"unresolvedName":"Promise.reject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:removeMcpAuth","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:removeMcpAuth","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:completeMcpAuth","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:completeMcpAuth","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:authenticateMcp","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:authenticateMcp","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:isTextUserContentPart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:isTextUserContentPart","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:isFileUserContentPart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:isFileUserContentPart","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:isAgentUserContentPart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:isAgentUserContentPart","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessages","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessages","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessages","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessages","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessageCount","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessageCount","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessageCount","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessages","kind":"calls","metadata":{"unresolvedName":"getSessionMessages"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:extractUserMessageContent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:extractUserMessageContent","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:extractUserMessageContent","to":"external:parts.filter","kind":"calls","metadata":{"unresolvedName":"parts.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:extractUserMessageContent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:isTextUserContentPart","kind":"calls","metadata":{"unresolvedName":"isTextUserContentPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:extractUserMessageContent","to":"external:textParts.map(p => p.text).join","kind":"calls","metadata":{"unresolvedName":"textParts.map(p => p.text).join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:extractUserMessageContent","to":"external:textParts.map","kind":"calls","metadata":{"unresolvedName":"textParts.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:extractUserMessageContent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:isFileUserContentPart","kind":"calls","metadata":{"unresolvedName":"isFileUserContentPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:extractUserMessageContent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSourcePath","kind":"calls","metadata":{"unresolvedName":"getSourcePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:extractUserMessageContent","to":"external:attachments.push","kind":"calls","metadata":{"unresolvedName":"attachments.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:extractUserMessageContent","to":"external:crypto.randomUUID","kind":"calls","metadata":{"unresolvedName":"crypto.randomUUID"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:extractUserMessageContent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:isAgentUserContentPart","kind":"calls","metadata":{"unresolvedName":"isAgentUserContentPart"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSourcePath","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSourcePath","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:sendMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:sendMessage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:sendMessage","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:sendMessageAsync","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:sendMessageAsync","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:sendMessageAsync","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"external:vi.mocked(piClient.get).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"external:vi.mocked(piClient.post).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.post).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"external:vi.mocked(piClient.get).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts:getNetworkAccess","kind":"calls","metadata":{"unresolvedName":"getNetworkAccess"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"external:expect(piClient.get).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.get).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"external:expect(info.primaryLanUrl).toBe","kind":"calls","metadata":{"unresolvedName":"expect(info.primaryLanUrl).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"external:vi.mocked(piClient.post).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.post).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts:updateNetworkAccess","kind":"calls","metadata":{"unresolvedName":"updateNetworkAccess"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"external:expect(piClient.post).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.post).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"external:expect(info.lanAccessEnabled).toBe","kind":"calls","metadata":{"unresolvedName":"expect(info.lanAccessEnabled).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"external:vi.mocked(piClient.get).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"external:vi.mocked(piClient.post).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.post).mockReset"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"external:vi.mocked(piClient.get).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts:getNetworkAccess","kind":"calls","metadata":{"unresolvedName":"getNetworkAccess"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"external:expect(piClient.get).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.get).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"external:expect(info.primaryLanUrl).toBe","kind":"calls","metadata":{"unresolvedName":"expect(info.primaryLanUrl).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"external:vi.mocked(piClient.post).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.post).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts:updateNetworkAccess","kind":"calls","metadata":{"unresolvedName":"updateNetworkAccess"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"external:expect(piClient.post).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.post).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.test.ts:","to":"external:expect(info.lanAccessEnabled).toBe","kind":"calls","metadata":{"unresolvedName":"expect(info.lanAccessEnabled).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/network.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts:getNetworkAccess","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts:getNetworkAccess","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts:getNetworkAccess","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts:updateNetworkAccess","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts:updateNetworkAccess","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts:updateNetworkAccess","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingPermissions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingPermissions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingPermissions","to":"symbol-name:encodeURIComponent","kind":"calls","metadata":{"unresolvedName":"encodeURIComponent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingPermissions","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingPermissions","to":"external:permissions.filter","kind":"calls","metadata":{"unresolvedName":"permissions.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:replyPermission","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:replyPermission","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:replyPermission","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:replyPermission","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingQuestions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingQuestions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingQuestions","to":"symbol-name:encodeURIComponent","kind":"calls","metadata":{"unresolvedName":"encodeURIComponent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingQuestions","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingQuestions","to":"external:questions.filter","kind":"calls","metadata":{"unresolvedName":"questions.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:replyQuestion","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:replyQuestion","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:replyQuestion","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:replyQuestion","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:rejectQuestion","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:rejectQuestion","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:rejectQuestion","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:rejectQuestion","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi.resetModules","kind":"calls","metadata":{"unresolvedName":"vi.resetModules"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:localStorage.clear","kind":"calls","metadata":{"unresolvedName":"localStorage.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:sessionStorage.clear","kind":"calls","metadata":{"unresolvedName":"sessionStorage.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi.spyOn(serverStore, 'isPiMode').mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(serverStore, 'isPiMode').mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi.spyOn(serverStore, 'getActiveToken').mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(serverStore, 'getActiveToken').mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi.spyOn(serverStore, 'getActiveBaseUrl').mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(serverStore, 'getActiveBaseUrl').mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi\n .spyOn(globalThis, 'fetch')\n .mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi\n .spyOn(globalThis, 'fetch')\n .mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi\n .spyOn","kind":"calls","metadata":{"unresolvedName":"vi\n .spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:expect(result.ok).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.ok).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:expect(fetchSpy).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(fetchSpy).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi.spyOn(globalThis, 'fetch').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(globalThis, 'fetch').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:expect(piClient.get('/api/vcs/status')).rejects.toThrow","kind":"calls","metadata":{"unresolvedName":"expect(piClient.get('/api/vcs/status')).rejects.toThrow"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi.resetModules","kind":"calls","metadata":{"unresolvedName":"vi.resetModules"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:localStorage.clear","kind":"calls","metadata":{"unresolvedName":"localStorage.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:sessionStorage.clear","kind":"calls","metadata":{"unresolvedName":"sessionStorage.clear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi.spyOn(serverStore, 'isPiMode').mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(serverStore, 'isPiMode').mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi.spyOn(serverStore, 'getActiveToken').mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(serverStore, 'getActiveToken').mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi.spyOn(serverStore, 'getActiveBaseUrl').mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(serverStore, 'getActiveBaseUrl').mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi\n .spyOn(globalThis, 'fetch')\n .mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi\n .spyOn(globalThis, 'fetch')\n .mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi\n .spyOn","kind":"calls","metadata":{"unresolvedName":"vi\n .spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:expect(result.ok).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.ok).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:expect(fetchSpy).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(fetchSpy).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi.spyOn(serverStore, 'getActiveToken').mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(serverStore, 'getActiveToken').mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi.spyOn(serverStore, 'getActiveBaseUrl').mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(serverStore, 'getActiveBaseUrl').mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:vi.spyOn(globalThis, 'fetch').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(globalThis, 'fetch').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:expect(piClient.get('/api/vcs/status')).rejects.toThrow","kind":"calls","metadata":{"unresolvedName":"expect(piClient.get('/api/vcs/status')).rejects.toThrow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.test.ts:","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getTauriFetch","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getTauriFetch","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getTauriFetch","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getFetch","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getFetch","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getFetch","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getFetch","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getTauriFetch","kind":"calls","metadata":{"unresolvedName":"getTauriFetch"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:buildHeaders","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:buildHeaders","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:buildHeaders","to":"external:serverStore.getActiveToken","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveToken"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:buildHeaders","to":"external:serverStore.getActiveAuth","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveAuth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:buildHeaders","to":"symbol-name:btoa","kind":"calls","metadata":{"unresolvedName":"btoa"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getResponseErrorMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getResponseErrorMessage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getResponseErrorMessage","to":"external:response.text","kind":"calls","metadata":{"unresolvedName":"response.text"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getResponseErrorMessage","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getResponseErrorMessage","to":"external:data.error.trim","kind":"calls","metadata":{"unresolvedName":"data.error.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getResponseErrorMessage","to":"external:data.message.trim","kind":"calls","metadata":{"unresolvedName":"data.message.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getResponseErrorMessage","to":"external:text.trim","kind":"calls","metadata":{"unresolvedName":"text.trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:throwIfNotOk","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:throwIfNotOk","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:throwIfNotOk","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getResponseErrorMessage","kind":"calls","metadata":{"unresolvedName":"getResponseErrorMessage"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:get","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:get","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:get","to":"external:serverStore.getActiveBaseUrl","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveBaseUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:get","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:buildHeaders","kind":"calls","metadata":{"unresolvedName":"buildHeaders"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:get","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getFetch","kind":"calls","metadata":{"unresolvedName":"getFetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:get","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:f","kind":"calls","metadata":{"unresolvedName":"f"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:get","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:throwIfNotOk","kind":"calls","metadata":{"unresolvedName":"throwIfNotOk"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:get","to":"external:response.json","kind":"calls","metadata":{"unresolvedName":"response.json"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:post","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:post","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:post","to":"external:serverStore.getActiveBaseUrl","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveBaseUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:post","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:buildHeaders","kind":"calls","metadata":{"unresolvedName":"buildHeaders"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:post","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getFetch","kind":"calls","metadata":{"unresolvedName":"getFetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:post","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:f","kind":"calls","metadata":{"unresolvedName":"f"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:post","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:post","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:throwIfNotOk","kind":"calls","metadata":{"unresolvedName":"throwIfNotOk"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:post","to":"external:response.json","kind":"calls","metadata":{"unresolvedName":"response.json"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:delete","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:delete","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:delete","to":"external:serverStore.getActiveBaseUrl","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveBaseUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:delete","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:buildHeaders","kind":"calls","metadata":{"unresolvedName":"buildHeaders"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:delete","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:getFetch","kind":"calls","metadata":{"unresolvedName":"getFetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:delete","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:f","kind":"calls","metadata":{"unresolvedName":"f"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:delete","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:delete","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:throwIfNotOk","kind":"calls","metadata":{"unresolvedName":"throwIfNotOk"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts:delete","to":"external:response.json","kind":"calls","metadata":{"unresolvedName":"response.json"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piContract.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/compat.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/pty.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:listPtySessions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:listPtySessions","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:createPtySession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:createPtySession","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:getPtySession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:getPtySession","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:updatePtySession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:updatePtySession","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:removePtySession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:removePtySession","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:getPtyConnectUrl","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:getPtyConnectUrl","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts:connectTauriPty","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts:connectTauriPty","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts:connectTauriPty","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts:connectTauriPty","to":"symbol-name:onError","kind":"calls","metadata":{"unresolvedName":"onError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts:send","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts:send","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts:close","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts:close","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","to":"external:vi.mocked(piClient.get).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","to":"external:vi.mocked(piClient.get).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionContextUsage","kind":"calls","metadata":{"unresolvedName":"getSessionContextUsage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","to":"external:expect(piClient.get).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.get).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","to":"external:expect(usage).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(usage).toMatchObject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","to":"external:vi.mocked(piClient.get).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","to":"external:vi.mocked(piClient.get).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionContextUsage","kind":"calls","metadata":{"unresolvedName":"getSessionContextUsage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","to":"external:expect(piClient.get).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.get).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.test.ts:","to":"external:expect(usage).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(usage).toMatchObject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/session.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/event.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:fallbackSessionTitle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:fallbackSessionTitle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:fallbackSessionTitle","to":"external:sessionId.slice","kind":"calls","metadata":{"unresolvedName":"sessionId.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionStatus","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionStatus","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionDiff","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionDiff","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getLastTurnDiff","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getLastTurnDiff","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionContextUsage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionContextUsage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionContextUsage","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionContextUsage","to":"symbol-name:encodeURIComponent","kind":"calls","metadata":{"unresolvedName":"encodeURIComponent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessions","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessions","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:fallbackSessionTitle","kind":"calls","metadata":{"unresolvedName":"fallbackSessionTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessions","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessions","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:fallbackSessionTitle","kind":"calls","metadata":{"unresolvedName":"fallbackSessionTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSession","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:createSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:createSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:createSession","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:createSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:fallbackSessionTitle","kind":"calls","metadata":{"unresolvedName":"fallbackSessionTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:createSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:createSession","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:updateSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:updateSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:updateSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:fallbackSessionTitle","kind":"calls","metadata":{"unresolvedName":"fallbackSessionTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:updateSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:updateSession","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:deleteSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:deleteSession","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:abortSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:abortSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:abortSession","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:revertMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:revertMessage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:revertMessage","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:fallbackSessionTitle","kind":"calls","metadata":{"unresolvedName":"fallbackSessionTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:revertMessage","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:revertMessage","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unrevertSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unrevertSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unrevertSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:fallbackSessionTitle","kind":"calls","metadata":{"unresolvedName":"fallbackSessionTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unrevertSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unrevertSession","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:shareSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:shareSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:shareSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:fallbackSessionTitle","kind":"calls","metadata":{"unresolvedName":"fallbackSessionTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:shareSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:shareSession","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unshareSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unshareSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unshareSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:fallbackSessionTitle","kind":"calls","metadata":{"unresolvedName":"fallbackSessionTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unshareSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unshareSession","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:forkSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:forkSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:forkSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:fallbackSessionTitle","kind":"calls","metadata":{"unresolvedName":"fallbackSessionTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:forkSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:forkSession","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:summarizeSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:summarizeSession","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionChildren","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionChildren","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionTodos","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionTodos","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","to":"external:vi.mocked(piClient.get).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","to":"external:vi.mocked(piClient.get).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts:getSkills","kind":"calls","metadata":{"unresolvedName":"getSkills"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","to":"external:expect(piClient.get).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.get).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","to":"external:expect(skills[0]).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(skills[0]).toMatchObject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","to":"external:vi.mocked(piClient.get).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","to":"external:vi.mocked(piClient.get).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts:getSkills","kind":"calls","metadata":{"unresolvedName":"getSkills"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","to":"external:expect(piClient.get).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.get).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.test.ts:","to":"external:expect(skills[0]).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(skills[0]).toMatchObject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/skill.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts:getSkills","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts:getSkills","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts:getSkills","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:createSseTextParser","kind":"calls","metadata":{"unresolvedName":"createSseTextParser"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","to":"external:expect(parser.push('data: {\"text\":\"中')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parser.push('data: {\"text\":\"中')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","to":"external:parser.push","kind":"calls","metadata":{"unresolvedName":"parser.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","to":"external:expect(parser.push('文\"}\\n')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parser.push('文\"}\\n')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","to":"external:expect(parser.push('data: 第二行\\n\\n')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parser.push('data: 第二行\\n\\n')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","to":"external:expect(parser.push('data: 你好\\r\\n')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parser.push('data: 你好\\r\\n')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","to":"external:expect(parser.push('data: 世界\\r\\n\\r\\n')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parser.push('data: 世界\\r\\n\\r\\n')).toEqual"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:createSseTextParser","kind":"calls","metadata":{"unresolvedName":"createSseTextParser"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","to":"external:expect(parser.push('data: {\"text\":\"中')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parser.push('data: {\"text\":\"中')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","to":"external:parser.push","kind":"calls","metadata":{"unresolvedName":"parser.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","to":"external:expect(parser.push('文\"}\\n')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parser.push('文\"}\\n')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","to":"external:expect(parser.push('data: 第二行\\n\\n')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parser.push('data: 第二行\\n\\n')).toEqual"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:createSseTextParser","kind":"calls","metadata":{"unresolvedName":"createSseTextParser"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","to":"external:expect(parser.push('data: 你好\\r\\n')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parser.push('data: 你好\\r\\n')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","to":"external:parser.push","kind":"calls","metadata":{"unresolvedName":"parser.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.test.ts:","to":"external:expect(parser.push('data: 世界\\r\\n\\r\\n')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parser.push('data: 世界\\r\\n\\r\\n')).toEqual"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:createSseTextParser","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:createSseTextParser","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:createSseTextParser","to":"external:buffer.replace(/\\r\\n/g, '\\n').replace","kind":"calls","metadata":{"unresolvedName":"buffer.replace(/\\r\\n/g, '\\n').replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:createSseTextParser","to":"external:buffer.replace","kind":"calls","metadata":{"unresolvedName":"buffer.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:createSseTextParser","to":"external:buffer.split","kind":"calls","metadata":{"unresolvedName":"buffer.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:createSseTextParser","to":"external:blocks.pop","kind":"calls","metadata":{"unresolvedName":"blocks.pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:createSseTextParser","to":"external:block.split","kind":"calls","metadata":{"unresolvedName":"block.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:createSseTextParser","to":"external:line.startsWith","kind":"calls","metadata":{"unresolvedName":"line.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:createSseTextParser","to":"external:dataLines.push","kind":"calls","metadata":{"unresolvedName":"dataLines.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:createSseTextParser","to":"external:line.slice","kind":"calls","metadata":{"unresolvedName":"line.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:createSseTextParser","to":"external:events.push","kind":"calls","metadata":{"unresolvedName":"events.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:createSseTextParser","to":"external:dataLines.join","kind":"calls","metadata":{"unresolvedName":"dataLines.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:push","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:push","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:push","to":"external:buffer.replace(/\\r\\n/g, '\\n').replace","kind":"calls","metadata":{"unresolvedName":"buffer.replace(/\\r\\n/g, '\\n').replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:push","to":"external:buffer.replace","kind":"calls","metadata":{"unresolvedName":"buffer.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:push","to":"external:buffer.split","kind":"calls","metadata":{"unresolvedName":"buffer.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:push","to":"external:blocks.pop","kind":"calls","metadata":{"unresolvedName":"blocks.pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:push","to":"external:block.split","kind":"calls","metadata":{"unresolvedName":"block.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:push","to":"external:line.startsWith","kind":"calls","metadata":{"unresolvedName":"line.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:push","to":"external:dataLines.push","kind":"calls","metadata":{"unresolvedName":"dataLines.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:push","to":"external:line.slice","kind":"calls","metadata":{"unresolvedName":"line.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:push","to":"external:events.push","kind":"calls","metadata":{"unresolvedName":"events.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/sse.ts:push","to":"external:dataLines.join","kind":"calls","metadata":{"unresolvedName":"dataLines.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:vi.mocked(piClient.get).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:vi.mocked(piClient.post).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.post).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:vi.mocked(serverStore.getActiveBaseUrl).mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(serverStore.getActiveBaseUrl).mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:vi.mocked(serverStore.getActiveToken).mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(serverStore.getActiveToken).mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:vi.mocked(piClient.get).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:vi.mocked(piClient.post).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.post).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:expect((await getSttSettings()).apiKeyConfigured).toBe","kind":"calls","metadata":{"unresolvedName":"expect((await getSttSettings()).apiKeyConfigured).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:getSttSettings","kind":"calls","metadata":{"unresolvedName":"getSttSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"symbol-name:updateSttSettings","kind":"calls","metadata":{"unresolvedName":"updateSttSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:expect(piClient.get).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.get).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:expect(piClient.post).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.post).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:expect(updated.language).toBe","kind":"calls","metadata":{"unresolvedName":"expect(updated.language).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"symbol-name:transcribeAudio","kind":"calls","metadata":{"unresolvedName":"transcribeAudio"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:expect(fetchMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(fetchMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:expect.any","kind":"calls","metadata":{"unresolvedName":"expect.any"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:expect(result.text).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.text).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:vi.mocked(piClient.get).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:vi.mocked(piClient.post).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.post).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:vi.mocked(serverStore.getActiveBaseUrl).mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(serverStore.getActiveBaseUrl).mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:vi.mocked(serverStore.getActiveToken).mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(serverStore.getActiveToken).mockReturnValue"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:vi.mocked(piClient.get).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:vi.mocked(piClient.post).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.post).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:expect((await getSttSettings()).apiKeyConfigured).toBe","kind":"calls","metadata":{"unresolvedName":"expect((await getSttSettings()).apiKeyConfigured).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:getSttSettings","kind":"calls","metadata":{"unresolvedName":"getSttSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"symbol-name:updateSttSettings","kind":"calls","metadata":{"unresolvedName":"updateSttSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:expect(piClient.get).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.get).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:expect(piClient.post).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.post).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:expect(updated.language).toBe","kind":"calls","metadata":{"unresolvedName":"expect(updated.language).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"symbol-name:transcribeAudio","kind":"calls","metadata":{"unresolvedName":"transcribeAudio"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:expect(fetchMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(fetchMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:expect.any","kind":"calls","metadata":{"unresolvedName":"expect.any"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.test.ts:","to":"external:expect(result.text).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.text).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/stt.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:getSttSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:getSttSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:getSttSettings","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:updateSttSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:updateSttSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:updateSttSettings","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:buildUploadHeaders","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:buildUploadHeaders","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:buildUploadHeaders","to":"external:serverStore.getActiveToken","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveToken"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:buildUploadHeaders","to":"external:serverStore.getActiveAuth","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveAuth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:buildUploadHeaders","to":"symbol-name:btoa","kind":"calls","metadata":{"unresolvedName":"btoa"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:transcribeAudio","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:transcribeAudio","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:transcribeAudio","to":"external:serverStore.getActiveBaseUrl","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveBaseUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:transcribeAudio","to":"external:form.set","kind":"calls","metadata":{"unresolvedName":"form.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:transcribeAudio","to":"symbol-name:fetch","kind":"calls","metadata":{"unresolvedName":"fetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:transcribeAudio","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:buildUploadHeaders","kind":"calls","metadata":{"unresolvedName":"buildUploadHeaders"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:transcribeAudio","to":"external:response.json","kind":"calls","metadata":{"unresolvedName":"response.json"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/event.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:buildTodoId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:buildTodoId","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:buildTodoId","to":"external:String(todo.content ?? '').slice","kind":"calls","metadata":{"unresolvedName":"String(todo.content ?? '').slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:buildTodoId","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:isTodoStatus","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:isTodoStatus","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:isTodoPriority","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:isTodoPriority","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoStatus","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoStatus","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoStatus","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:isTodoStatus","kind":"calls","metadata":{"unresolvedName":"isTodoStatus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoPriority","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoPriority","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoPriority","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:isTodoPriority","kind":"calls","metadata":{"unresolvedName":"isTodoPriority"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoItems","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoItems","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoItems","to":"external:(todos ?? []).map","kind":"calls","metadata":{"unresolvedName":"(todos ?? []).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoItems","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:buildTodoId","kind":"calls","metadata":{"unresolvedName":"buildTodoId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoItems","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoStatus","kind":"calls","metadata":{"unresolvedName":"normalizeTodoStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoItems","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/todo.ts:normalizeTodoPriority","kind":"calls","metadata":{"unresolvedName":"normalizeTodoPriority"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/tool.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts:getToolIds","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts:getToolIds","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts:getToolIds","to":"symbol-name:encodeURIComponent","kind":"calls","metadata":{"unresolvedName":"encodeURIComponent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts:getToolIds","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts:getTools","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts:getTools","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts:getTools","to":"symbol-name:encodeURIComponent","kind":"calls","metadata":{"unresolvedName":"encodeURIComponent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tool.ts:getTools","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/tts.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:getTtsSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:getTtsSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:getTtsSettings","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:updateTtsSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:updateTtsSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:updateTtsSettings","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:buildSpeechHeaders","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:buildSpeechHeaders","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:buildSpeechHeaders","to":"external:serverStore.getActiveToken","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveToken"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:buildSpeechHeaders","to":"external:serverStore.getActiveAuth","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveAuth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:buildSpeechHeaders","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:makeBasicAuthHeader","kind":"calls","metadata":{"unresolvedName":"makeBasicAuthHeader"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:synthesizeSpeech","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:synthesizeSpeech","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:synthesizeSpeech","to":"symbol-name:fetch","kind":"calls","metadata":{"unresolvedName":"fetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:synthesizeSpeech","to":"external:serverStore.getActiveBaseUrl","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveBaseUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:synthesizeSpeech","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:buildSpeechHeaders","kind":"calls","metadata":{"unresolvedName":"buildSpeechHeaders"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:synthesizeSpeech","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:synthesizeSpeech","to":"external:response.blob","kind":"calls","metadata":{"unresolvedName":"response.blob"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/ui.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"external:vi.mocked(piClient.get).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"external:vi.mocked(piClient.post).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.post).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"external:vi.mocked(piClient.get)\n .mockResolvedValueOnce","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get)\n .mockResolvedValueOnce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsStatus","kind":"calls","metadata":{"unresolvedName":"getVcsStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsBranches","kind":"calls","metadata":{"unresolvedName":"getVcsBranches"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"external:expect(piClient.get).toHaveBeenNthCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.get).toHaveBeenNthCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"external:vi.mocked(piClient.post).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.post).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"symbol-name:checkoutGitBranch","kind":"calls","metadata":{"unresolvedName":"checkoutGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"symbol-name:createGitBranch","kind":"calls","metadata":{"unresolvedName":"createGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"symbol-name:stageGitPaths","kind":"calls","metadata":{"unresolvedName":"stageGitPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"symbol-name:unstageGitPaths","kind":"calls","metadata":{"unresolvedName":"unstageGitPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"symbol-name:commitGitChanges","kind":"calls","metadata":{"unresolvedName":"commitGitChanges"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"symbol-name:pullGitBranch","kind":"calls","metadata":{"unresolvedName":"pullGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"symbol-name:pushGitBranch","kind":"calls","metadata":{"unresolvedName":"pushGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"external:expect(piClient.post).toHaveBeenNthCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.post).toHaveBeenNthCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"external:vi.mocked(piClient.get).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"external:vi.mocked(piClient.post).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.post).mockReset"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"external:vi.mocked(piClient.get)\n .mockResolvedValueOnce","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.get)\n .mockResolvedValueOnce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsStatus","kind":"calls","metadata":{"unresolvedName":"getVcsStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsBranches","kind":"calls","metadata":{"unresolvedName":"getVcsBranches"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"external:expect(piClient.get).toHaveBeenNthCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.get).toHaveBeenNthCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"external:vi.mocked(piClient.post).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(piClient.post).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"symbol-name:checkoutGitBranch","kind":"calls","metadata":{"unresolvedName":"checkoutGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"symbol-name:createGitBranch","kind":"calls","metadata":{"unresolvedName":"createGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"symbol-name:stageGitPaths","kind":"calls","metadata":{"unresolvedName":"stageGitPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"symbol-name:unstageGitPaths","kind":"calls","metadata":{"unresolvedName":"unstageGitPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"symbol-name:commitGitChanges","kind":"calls","metadata":{"unresolvedName":"commitGitChanges"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"symbol-name:pullGitBranch","kind":"calls","metadata":{"unresolvedName":"pullGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"symbol-name:pushGitBranch","kind":"calls","metadata":{"unresolvedName":"pushGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"external:expect(piClient.post).toHaveBeenNthCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(piClient.post).toHaveBeenNthCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/piClient.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/vcs.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:directoryQuery","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:directoryQuery","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:directoryQuery","to":"symbol-name:encodeURIComponent","kind":"calls","metadata":{"unresolvedName":"encodeURIComponent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:directoryQuery","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsInfo","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsInfo","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsInfo","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsInfo","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:directoryQuery","kind":"calls","metadata":{"unresolvedName":"directoryQuery"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsDiff","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsDiff","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsDiff","to":"symbol-name:encodeURIComponent","kind":"calls","metadata":{"unresolvedName":"encodeURIComponent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsDiff","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"calls","metadata":{"unresolvedName":"formatPathForApi"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsDiff","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsStatus","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsStatus","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsStatus","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsStatus","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:directoryQuery","kind":"calls","metadata":{"unresolvedName":"directoryQuery"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsBranches","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsBranches","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsBranches","to":"external:piClient.get","kind":"calls","metadata":{"unresolvedName":"piClient.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsBranches","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:directoryQuery","kind":"calls","metadata":{"unresolvedName":"directoryQuery"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:checkoutGitBranch","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:checkoutGitBranch","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:checkoutGitBranch","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:checkoutGitBranch","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:directoryQuery","kind":"calls","metadata":{"unresolvedName":"directoryQuery"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:createGitBranch","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:createGitBranch","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:createGitBranch","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:createGitBranch","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:directoryQuery","kind":"calls","metadata":{"unresolvedName":"directoryQuery"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:stageGitPaths","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:stageGitPaths","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:stageGitPaths","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:stageGitPaths","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:directoryQuery","kind":"calls","metadata":{"unresolvedName":"directoryQuery"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:unstageGitPaths","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:unstageGitPaths","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:unstageGitPaths","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:unstageGitPaths","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:directoryQuery","kind":"calls","metadata":{"unresolvedName":"directoryQuery"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:commitGitChanges","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:commitGitChanges","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:commitGitChanges","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:commitGitChanges","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:directoryQuery","kind":"calls","metadata":{"unresolvedName":"directoryQuery"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:pullGitBranch","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:pullGitBranch","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:pullGitBranch","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:pullGitBranch","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:directoryQuery","kind":"calls","metadata":{"unresolvedName":"directoryQuery"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:pushGitBranch","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:pushGitBranch","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:pushGitBranch","to":"external:piClient.post","kind":"calls","metadata":{"unresolvedName":"piClient.post"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:pushGitBranch","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:directoryQuery","kind":"calls","metadata":{"unresolvedName":"directoryQuery"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/worktree.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:listWorktrees","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:listWorktrees","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:createWorktree","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:createWorktree","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:removeWorktree","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:removeWorktree","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:resetWorktree","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:resetWorktree","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"external:@tauri-apps/api/core","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:useRouter","kind":"calls","metadata":{"unresolvedName":"useRouter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useDirectory","kind":"calls","metadata":{"unresolvedName":"useDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"calls","metadata":{"unresolvedName":"useLayoutStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","kind":"calls","metadata":{"unresolvedName":"useChatViewportController"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:canUseSplitPane","kind":"calls","metadata":{"unresolvedName":"canUseSplitPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:usePaneLayout","kind":"calls","metadata":{"unresolvedName":"usePaneLayout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:usePaneController","kind":"calls","metadata":{"unresolvedName":"usePaneController"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:usePaneControllers","kind":"calls","metadata":{"unresolvedName":"usePaneControllers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:initNotificationSound","kind":"calls","metadata":{"unresolvedName":"initNotificationSound"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauriMobile","kind":"calls","metadata":{"unresolvedName":"isTauriMobile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:invoke('desktop_window_ready').catch","kind":"calls","metadata":{"unresolvedName":"invoke('desktop_window_ready').catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:invoke","kind":"calls","metadata":{"unresolvedName":"invoke"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:updateStore.checkForUpdates","kind":"calls","metadata":{"unresolvedName":"updateStore.checkForUpdates"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight","kind":"calls","metadata":{"unresolvedName":"useViewportHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:useWakeLock","kind":"calls","metadata":{"unresolvedName":"useWakeLock"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:collectActiveDirectories","kind":"calls","metadata":{"unresolvedName":"collectActiveDirectories"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:paneControllers\r\n .map","kind":"calls","metadata":{"unresolvedName":"paneControllers\r\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:Boolean","kind":"calls","metadata":{"unresolvedName":"Boolean"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:savedDirectories.map","kind":"calls","metadata":{"unresolvedName":"savedDirectories.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","kind":"calls","metadata":{"unresolvedName":"useGlobalEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:paneLayoutStore.getFocusedSessionId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:paneLayoutStore.setFocusedSession","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.setFocusedSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:replaceSession","kind":"calls","metadata":{"unresolvedName":"replaceSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:paneLayoutStore.focusPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.focusPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:paneLayoutStore.setPaneSession","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.setPaneSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:navigateRouteToSession","kind":"calls","metadata":{"unresolvedName":"navigateRouteToSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:navigateRouteHome","kind":"calls","metadata":{"unresolvedName":"navigateRouteHome"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:paneLayoutStore.getFocusedPaneId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:navigatePaneToSession","kind":"calls","metadata":{"unresolvedName":"navigatePaneToSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:navigatePaneHome","kind":"calls","metadata":{"unresolvedName":"navigatePaneHome"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:paneLayoutStore.enterSplitMode","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.enterSplitMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:paneLayoutStore.togglePaneFullscreen","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.togglePaneFullscreen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarExpanded","kind":"calls","metadata":{"unresolvedName":"setSidebarExpanded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:setSettingsInitialTab","kind":"calls","metadata":{"unresolvedName":"setSettingsInitialTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:setSettingsDialogOpen","kind":"calls","metadata":{"unresolvedName":"setSettingsDialogOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:openSettingsTab","kind":"calls","metadata":{"unresolvedName":"openSettingsTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:setProjectDialogOpen","kind":"calls","metadata":{"unresolvedName":"setProjectDialogOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:openProject","kind":"calls","metadata":{"unresolvedName":"openProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:openSettings","kind":"calls","metadata":{"unresolvedName":"openSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:createPtySession","kind":"calls","metadata":{"unresolvedName":"createPtySession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:layoutStore.addTerminalTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.addTerminalTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:setCommandPaletteOpen","kind":"calls","metadata":{"unresolvedName":"setCommandPaletteOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:layoutStore.toggleRightPanel","kind":"calls","metadata":{"unresolvedName":"layoutStore.toggleRightPanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:document.querySelector","kind":"calls","metadata":{"unresolvedName":"document.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:input?.focus","kind":"calls","metadata":{"unresolvedName":"input?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:focusedController?.newSession","kind":"calls","metadata":{"unresolvedName":"focusedController?.newSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:focusedController?.archiveSession","kind":"calls","metadata":{"unresolvedName":"focusedController?.archiveSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:focusedController?.previousSession","kind":"calls","metadata":{"unresolvedName":"focusedController?.previousSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:focusedController?.nextSession","kind":"calls","metadata":{"unresolvedName":"focusedController?.nextSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:layoutStore.toggleBottomPanel","kind":"calls","metadata":{"unresolvedName":"layoutStore.toggleBottomPanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:focusedController?.openModelSelector","kind":"calls","metadata":{"unresolvedName":"focusedController?.openModelSelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:focusedController?.toggleAgent","kind":"calls","metadata":{"unresolvedName":"focusedController?.toggleAgent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:focusedController?.cancelMessage","kind":"calls","metadata":{"unresolvedName":"focusedController?.cancelMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:focusedController?.copyLastResponse","kind":"calls","metadata":{"unresolvedName":"focusedController?.copyLastResponse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:focusedController?.toggleFullAuto","kind":"calls","metadata":{"unresolvedName":"focusedController?.toggleFullAuto"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:paneLayoutStore.focusNextPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.focusNextPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:paneLayoutStore.focusPrevPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.focusPrevPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:paneLayoutStore.splitPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.splitPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:paneLayoutStore.closePane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.closePane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:handleToggleFocusedPaneFullscreen","kind":"calls","metadata":{"unresolvedName":"handleToggleFocusedPaneFullscreen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useGlobalKeybindings","kind":"calls","metadata":{"unresolvedName":"useGlobalKeybindings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"external:keybindingStore.getKey","kind":"calls","metadata":{"unresolvedName":"keybindingStore.getKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"symbol-name:getShortcut","kind":"calls","metadata":{"unresolvedName":"getShortcut"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:App","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:useCloseServiceDialog","kind":"calls","metadata":{"unresolvedName":"useCloseServiceDialog"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:initNotificationSound","kind":"calls","metadata":{"unresolvedName":"initNotificationSound"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauriMobile","kind":"calls","metadata":{"unresolvedName":"isTauriMobile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:invoke('desktop_window_ready').catch","kind":"calls","metadata":{"unresolvedName":"invoke('desktop_window_ready').catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"symbol-name:invoke","kind":"calls","metadata":{"unresolvedName":"invoke"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:updateStore.checkForUpdates","kind":"calls","metadata":{"unresolvedName":"updateStore.checkForUpdates"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:paneLayoutStore.getFocusedSessionId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:paneLayoutStore.setFocusedSession","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.setFocusedSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:paneLayoutStore.getFocusedSessionId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"symbol-name:replaceSession","kind":"calls","metadata":{"unresolvedName":"replaceSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:paneLayoutStore.focusPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.focusPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:paneLayoutStore.setPaneSession","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.setPaneSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"symbol-name:navigateRouteToSession","kind":"calls","metadata":{"unresolvedName":"navigateRouteToSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:paneLayoutStore.focusPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.focusPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:paneLayoutStore.setPaneSession","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.setPaneSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"symbol-name:navigateRouteHome","kind":"calls","metadata":{"unresolvedName":"navigateRouteHome"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:paneLayoutStore.getFocusedPaneId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"symbol-name:navigatePaneToSession","kind":"calls","metadata":{"unresolvedName":"navigatePaneToSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:paneLayoutStore.getFocusedPaneId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"symbol-name:navigatePaneHome","kind":"calls","metadata":{"unresolvedName":"navigatePaneHome"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:paneLayoutStore.enterSplitMode","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.enterSplitMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:paneLayoutStore.getFocusedPaneId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:paneLayoutStore.togglePaneFullscreen","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.togglePaneFullscreen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"symbol-name:setSettingsInitialTab","kind":"calls","metadata":{"unresolvedName":"setSettingsInitialTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"symbol-name:setSettingsDialogOpen","kind":"calls","metadata":{"unresolvedName":"setSettingsDialogOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"symbol-name:openSettingsTab","kind":"calls","metadata":{"unresolvedName":"openSettingsTab"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"symbol-name:openSettingsTab","kind":"calls","metadata":{"unresolvedName":"openSettingsTab"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"symbol-name:openProject","kind":"calls","metadata":{"unresolvedName":"openProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"symbol-name:openSettings","kind":"calls","metadata":{"unresolvedName":"openSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:createPtySession","kind":"calls","metadata":{"unresolvedName":"createPtySession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:layoutStore.addTerminalTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.addTerminalTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusInput","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusInput","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusInput","to":"external:document.querySelector","kind":"calls","metadata":{"unresolvedName":"document.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusInput","to":"external:input?.focus","kind":"calls","metadata":{"unresolvedName":"input?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusNextPane","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusNextPane","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusNextPane","to":"external:paneLayoutStore.focusNextPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.focusNextPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusNextPane","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusNextPane","to":"external:paneLayoutStore.getFocusedPaneId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusNextPane","to":"external:document.querySelector","kind":"calls","metadata":{"unresolvedName":"document.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusNextPane","to":"external:input?.focus","kind":"calls","metadata":{"unresolvedName":"input?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:paneLayoutStore.getFocusedPaneId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:document.querySelector","kind":"calls","metadata":{"unresolvedName":"document.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:input?.focus","kind":"calls","metadata":{"unresolvedName":"input?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusPrevPane","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusPrevPane","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusPrevPane","to":"external:paneLayoutStore.focusPrevPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.focusPrevPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusPrevPane","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusPrevPane","to":"external:paneLayoutStore.getFocusedPaneId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusPrevPane","to":"external:document.querySelector","kind":"calls","metadata":{"unresolvedName":"document.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:focusPrevPane","to":"external:input?.focus","kind":"calls","metadata":{"unresolvedName":"input?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:paneLayoutStore.getFocusedPaneId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:document.querySelector","kind":"calls","metadata":{"unresolvedName":"document.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:input?.focus","kind":"calls","metadata":{"unresolvedName":"input?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:splitRight","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:splitRight","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:splitRight","to":"external:paneLayoutStore.getFocusedPaneId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:splitRight","to":"external:paneLayoutStore.splitPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.splitPane"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:splitDown","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:splitDown","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:splitDown","to":"external:paneLayoutStore.getFocusedPaneId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:splitDown","to":"external:paneLayoutStore.splitPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.splitPane"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:closePane","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:closePane","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:closePane","to":"external:paneLayoutStore.getFocusedPaneId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:closePane","to":"external:paneLayoutStore.closePane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.closePane"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:togglePaneFullscreen","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:togglePaneFullscreen","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:togglePaneFullscreen","to":"symbol-name:handleToggleFocusedPaneFullscreen","kind":"calls","metadata":{"unresolvedName":"handleToggleFocusedPaneFullscreen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:keybindingStore.getKey","kind":"calls","metadata":{"unresolvedName":"keybindingStore.getKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"symbol-name:getShortcut","kind":"calls","metadata":{"unresolvedName":"getShortcut"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"symbol-name:openSettingsTab","kind":"calls","metadata":{"unresolvedName":"openSettingsTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarExpanded","kind":"calls","metadata":{"unresolvedName":"setSidebarExpanded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:layoutStore.toggleRightPanel","kind":"calls","metadata":{"unresolvedName":"layoutStore.toggleRightPanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:document.querySelector","kind":"calls","metadata":{"unresolvedName":"document.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:input?.focus","kind":"calls","metadata":{"unresolvedName":"input?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:focusedController?.newSession","kind":"calls","metadata":{"unresolvedName":"focusedController?.newSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:focusedController?.archiveSession","kind":"calls","metadata":{"unresolvedName":"focusedController?.archiveSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:focusedController?.previousSession","kind":"calls","metadata":{"unresolvedName":"focusedController?.previousSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:focusedController?.nextSession","kind":"calls","metadata":{"unresolvedName":"focusedController?.nextSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:layoutStore.toggleBottomPanel","kind":"calls","metadata":{"unresolvedName":"layoutStore.toggleBottomPanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:focusedController?.openModelSelector","kind":"calls","metadata":{"unresolvedName":"focusedController?.openModelSelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:focusedController?.toggleAgent","kind":"calls","metadata":{"unresolvedName":"focusedController?.toggleAgent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:focusedController?.copyLastResponse","kind":"calls","metadata":{"unresolvedName":"focusedController?.copyLastResponse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:focusedController?.cancelMessage","kind":"calls","metadata":{"unresolvedName":"focusedController?.cancelMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:paneLayoutStore.focusNextPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.focusNextPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:paneLayoutStore.focusPrevPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.focusPrevPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:paneLayoutStore.getFocusedPaneId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:paneLayoutStore.splitPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.splitPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"external:paneLayoutStore.closePane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.closePane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:","to":"symbol-name:handleToggleFocusedPaneFullscreen","kind":"calls","metadata":{"unresolvedName":"handleToggleFocusedPaneFullscreen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","to":"symbol-name:openSettingsTab","kind":"calls","metadata":{"unresolvedName":"openSettingsTab"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","to":"external:document.querySelector","kind":"calls","metadata":{"unresolvedName":"document.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","to":"external:input?.focus","kind":"calls","metadata":{"unresolvedName":"input?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","to":"external:paneLayoutStore.getFocusedPaneId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","to":"external:paneLayoutStore.splitPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.splitPane"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","to":"external:paneLayoutStore.getFocusedPaneId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","to":"external:paneLayoutStore.splitPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.splitPane"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","to":"external:paneLayoutStore.getFocusedPaneId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","to":"external:paneLayoutStore.closePane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.closePane"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","to":"symbol-name:handleToggleFocusedPaneFullscreen","kind":"calls","metadata":{"unresolvedName":"handleToggleFocusedPaneFullscreen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/logger.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:PanelFallback","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:PanelFallback","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:PanelFallback","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:PanelFallback","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"calls","metadata":{"unresolvedName":"useLayoutStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStore","kind":"calls","metadata":{"unresolvedName":"useMessageStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewport","kind":"calls","metadata":{"unresolvedName":"useChatViewport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:layoutStore.setCurrentTerminalDirectory","kind":"calls","metadata":{"unresolvedName":"layoutStore.setCurrentTerminalDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"symbol-name:setIsPanelResizing","kind":"calls","metadata":{"unresolvedName":"setIsPanelResizing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"symbol-name:setIsRestoring","kind":"calls","metadata":{"unresolvedName":"setIsRestoring"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:listPtySessions","kind":"calls","metadata":{"unresolvedName":"listPtySessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:logger.log","kind":"calls","metadata":{"unresolvedName":"logger.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:layoutStore.syncTerminalSessions","kind":"calls","metadata":{"unresolvedName":"layoutStore.syncTerminalSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:sessions.map","kind":"calls","metadata":{"unresolvedName":"sessions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:restoreSessions","kind":"calls","metadata":{"unresolvedName":"restoreSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:createPtySession","kind":"calls","metadata":{"unresolvedName":"createPtySession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:layoutStore.addTerminalTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.addTerminalTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:removePtySession","kind":"calls","metadata":{"unresolvedName":"removePtySession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:layoutStore.setBottomPanelHeight","kind":"calls","metadata":{"unresolvedName":"layoutStore.setBottomPanelHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:layoutStore.closeBottomPanel","kind":"calls","metadata":{"unresolvedName":"layoutStore.closeBottomPanel"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:layoutStore.setCurrentTerminalDirectory","kind":"calls","metadata":{"unresolvedName":"layoutStore.setCurrentTerminalDirectory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"symbol-name:setIsPanelResizing","kind":"calls","metadata":{"unresolvedName":"setIsPanelResizing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"symbol-name:setIsRestoring","kind":"calls","metadata":{"unresolvedName":"setIsRestoring"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:listPtySessions","kind":"calls","metadata":{"unresolvedName":"listPtySessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:logger.log","kind":"calls","metadata":{"unresolvedName":"logger.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:layoutStore.syncTerminalSessions","kind":"calls","metadata":{"unresolvedName":"layoutStore.syncTerminalSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:sessions.map","kind":"calls","metadata":{"unresolvedName":"sessions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:restoreSessions","kind":"calls","metadata":{"unresolvedName":"restoreSessions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:restoreSessions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:restoreSessions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:restoreSessions","to":"symbol-name:setIsRestoring","kind":"calls","metadata":{"unresolvedName":"setIsRestoring"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:restoreSessions","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:listPtySessions","kind":"calls","metadata":{"unresolvedName":"listPtySessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:restoreSessions","to":"external:logger.log","kind":"calls","metadata":{"unresolvedName":"logger.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:restoreSessions","to":"external:layoutStore.syncTerminalSessions","kind":"calls","metadata":{"unresolvedName":"layoutStore.syncTerminalSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:restoreSessions","to":"external:sessions.map","kind":"calls","metadata":{"unresolvedName":"sessions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:restoreSessions","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:logger.log","kind":"calls","metadata":{"unresolvedName":"logger.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:createPtySession","kind":"calls","metadata":{"unresolvedName":"createPtySession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:layoutStore.addTerminalTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.addTerminalTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:removePtySession","kind":"calls","metadata":{"unresolvedName":"removePtySession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"calls","metadata":{"unresolvedName":"useLayoutStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:panelTabs.filter","kind":"calls","metadata":{"unresolvedName":"panelTabs.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:terminalTabs.map","kind":"calls","metadata":{"unresolvedName":"terminalTabs.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"calls","metadata":{"unresolvedName":"useLayoutStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:panelTabs.filter","kind":"calls","metadata":{"unresolvedName":"panelTabs.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:fileTabs.map","kind":"calls","metadata":{"unresolvedName":"fileTabs.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"calls","metadata":{"unresolvedName":"useLayoutStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:panelTabs.filter","kind":"calls","metadata":{"unresolvedName":"panelTabs.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/BottomPanel.tsx:","to":"external:changeTabs.map","kind":"calls","metadata":{"unresolvedName":"changeTabs.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CircularProgress.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CircularProgress.tsx:CircularProgress","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CircularProgress.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CircularProgress.tsx:CircularProgress","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CircularProgress.tsx:CircularProgress","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CircularProgress.tsx:CircularProgress","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx:CloseServiceDialog","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx:CloseServiceDialog","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx:CloseServiceDialog","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx:CloseServiceDialog","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx:CloseServiceDialog","to":"symbol-name:setClosing","kind":"calls","metadata":{"unresolvedName":"setClosing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx:CloseServiceDialog","to":"symbol-name:onConfirm","kind":"calls","metadata":{"unresolvedName":"onConfirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx:CloseServiceDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx:CloseServiceDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx:handleConfirm","kind":"calls","metadata":{"unresolvedName":"handleConfirm"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx:handleConfirm","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx:handleConfirm","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx:handleConfirm","to":"symbol-name:setClosing","kind":"calls","metadata":{"unresolvedName":"setClosing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CloseServiceDialog.tsx:handleConfirm","to":"symbol-name:onConfirm","kind":"calls","metadata":{"unresolvedName":"onConfirm"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"external:useIsMobileMock.mockReset","kind":"calls","metadata":{"unresolvedName":"useIsMobileMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"external:useIsMobileMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useIsMobileMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"external:expect(container.firstChild).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(container.firstChild).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"external:expect(container.firstChild).not.toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(container.firstChild).not.toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"external:expect(screen.getByText('ts')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('ts')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"external:useIsMobileMock.mockReset","kind":"calls","metadata":{"unresolvedName":"useIsMobileMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"external:useIsMobileMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useIsMobileMock.mockReturnValue"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"external:useIsMobileMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useIsMobileMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"external:expect(container.firstChild).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(container.firstChild).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"external:useIsMobileMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useIsMobileMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"external:expect(container.firstChild).not.toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(container.firstChild).not.toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"external:expect(screen.getByText('ts')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('ts')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:useIsMobile","kind":"calls","metadata":{"unresolvedName":"useIsMobile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:useInView","kind":"calls","metadata":{"unresolvedName":"useInView"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","to":"external:code.includes","kind":"calls","metadata":{"unresolvedName":"code.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","kind":"calls","metadata":{"unresolvedName":"useSyntaxHighlight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","to":"external:HIDDEN_LANGS.has","kind":"calls","metadata":{"unresolvedName":"HIDDEN_LANGS.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","to":"external:language.toLowerCase","kind":"calls","metadata":{"unresolvedName":"language.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","to":"external:event.target.closest","kind":"calls","metadata":{"unresolvedName":"event.target.closest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","to":"external:event.currentTarget.focus","kind":"calls","metadata":{"unresolvedName":"event.currentTarget.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","to":"external:code.includes","kind":"calls","metadata":{"unresolvedName":"code.includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","to":"external:event.target.closest","kind":"calls","metadata":{"unresolvedName":"event.target.closest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx:","to":"external:event.currentTarget.focus","kind":"calls","metadata":{"unresolvedName":"event.currentTarget.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","to":"external:@codemirror/state","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","to":"external:@codemirror/search","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","to":"external:@codemirror/view","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:CodeMirrorReadonly","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:CodeMirrorReadonly","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:CodeMirrorReadonly","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:CodeMirrorReadonly","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:CodeMirrorReadonly","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts:getLineNumberColumnWidth","kind":"calls","metadata":{"unresolvedName":"getLineNumberColumnWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:CodeMirrorReadonly","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts:getLineCount","kind":"calls","metadata":{"unresolvedName":"getLineCount"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:CodeMirrorReadonly","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createReadonlyCodeMirrorExtensions","kind":"calls","metadata":{"unresolvedName":"createReadonlyCodeMirrorExtensions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:CodeMirrorReadonly","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:CodeMirrorReadonly","to":"external:EditorState.create","kind":"calls","metadata":{"unresolvedName":"EditorState.create"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:CodeMirrorReadonly","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:dispatchShikiTokens","kind":"calls","metadata":{"unresolvedName":"dispatchShikiTokens"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:CodeMirrorReadonly","to":"external:view.destroy","kind":"calls","metadata":{"unresolvedName":"view.destroy"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:CodeMirrorReadonly","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:CodeMirrorReadonly","to":"external:event.key.toLowerCase","kind":"calls","metadata":{"unresolvedName":"event.key.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:CodeMirrorReadonly","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:CodeMirrorReadonly","to":"symbol-name:openSearchPanel","kind":"calls","metadata":{"unresolvedName":"openSearchPanel"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:","to":"external:EditorState.create","kind":"calls","metadata":{"unresolvedName":"EditorState.create"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:dispatchShikiTokens","kind":"calls","metadata":{"unresolvedName":"dispatchShikiTokens"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:","to":"external:view.destroy","kind":"calls","metadata":{"unresolvedName":"view.destroy"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:","to":"external:view.destroy","kind":"calls","metadata":{"unresolvedName":"view.destroy"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:dispatchShikiTokens","kind":"calls","metadata":{"unresolvedName":"dispatchShikiTokens"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:","to":"external:event.key.toLowerCase","kind":"calls","metadata":{"unresolvedName":"event.key.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx:","to":"symbol-name:openSearchPanel","kind":"calls","metadata":{"unresolvedName":"openSearchPanel"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"external:@codemirror/commands","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"external:@codemirror/state","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"external:@codemirror/search","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"external:@codemirror/view","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:codeLineHeight","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:codeLineHeight","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createReadonlyCodeMirrorExtensions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createReadonlyCodeMirrorExtensions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createReadonlyCodeMirrorExtensions","to":"external:EditorState.readOnly.of","kind":"calls","metadata":{"unresolvedName":"EditorState.readOnly.of"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createReadonlyCodeMirrorExtensions","to":"symbol-name:highlightActiveLineGutter","kind":"calls","metadata":{"unresolvedName":"highlightActiveLineGutter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createReadonlyCodeMirrorExtensions","to":"symbol-name:drawSelection","kind":"calls","metadata":{"unresolvedName":"drawSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createReadonlyCodeMirrorExtensions","to":"external:keymap.of","kind":"calls","metadata":{"unresolvedName":"keymap.of"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createReadonlyCodeMirrorExtensions","to":"symbol-name:search","kind":"calls","metadata":{"unresolvedName":"search"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createReadonlyCodeMirrorExtensions","to":"symbol-name:highlightSelectionMatches","kind":"calls","metadata":{"unresolvedName":"highlightSelectionMatches"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createReadonlyCodeMirrorExtensions","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:readonlyCodeMirrorTheme","kind":"calls","metadata":{"unresolvedName":"readonlyCodeMirrorTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createReadonlyCodeMirrorExtensions","to":"external:extensions.unshift","kind":"calls","metadata":{"unresolvedName":"extensions.unshift"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createReadonlyCodeMirrorExtensions","to":"symbol-name:lineNumbers","kind":"calls","metadata":{"unresolvedName":"lineNumbers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createReadonlyCodeMirrorExtensions","to":"external:extensions.push","kind":"calls","metadata":{"unresolvedName":"extensions.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:dispatchShikiTokens","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:dispatchShikiTokens","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:dispatchShikiTokens","to":"external:view.dispatch","kind":"calls","metadata":{"unresolvedName":"view.dispatch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:dispatchShikiTokens","to":"external:setShikiTokensEffect.of","kind":"calls","metadata":{"unresolvedName":"setShikiTokensEffect.of"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:update","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:update","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:update","to":"external:effect.is","kind":"calls","metadata":{"unresolvedName":"effect.is"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:update","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:buildShikiDecorations","kind":"calls","metadata":{"unresolvedName":"buildShikiDecorations"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:update","to":"external:decorations.map","kind":"calls","metadata":{"unresolvedName":"decorations.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:buildShikiDecorations","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:buildShikiDecorations","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:buildShikiDecorations","to":"external:state.doc.line","kind":"calls","metadata":{"unresolvedName":"state.doc.line"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:buildShikiDecorations","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:buildShikiDecorations","to":"external:ranges.push","kind":"calls","metadata":{"unresolvedName":"ranges.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:buildShikiDecorations","to":"external:Decoration.mark({ attributes: { style: `color: ${token.color}` } }).range","kind":"calls","metadata":{"unresolvedName":"Decoration.mark({ attributes: { style: `color: ${token.color}` } }).range"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:buildShikiDecorations","to":"external:Decoration.mark","kind":"calls","metadata":{"unresolvedName":"Decoration.mark"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:buildShikiDecorations","to":"external:Decoration.set","kind":"calls","metadata":{"unresolvedName":"Decoration.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:readonlyCodeMirrorTheme","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:readonlyCodeMirrorTheme","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:readonlyCodeMirrorTheme","to":"external:EditorView.theme","kind":"calls","metadata":{"unresolvedName":"EditorView.theme"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:document.createElement","kind":"calls","metadata":{"unresolvedName":"document.createElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:input.setAttribute","kind":"calls","metadata":{"unresolvedName":"input.setAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchButton","kind":"calls","metadata":{"unresolvedName":"createSearchButton"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:applyQuery","kind":"calls","metadata":{"unresolvedName":"applyQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:input.focus","kind":"calls","metadata":{"unresolvedName":"input.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:inputWrap.append","kind":"calls","metadata":{"unresolvedName":"inputWrap.append"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:nav.append","kind":"calls","metadata":{"unresolvedName":"nav.append"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"symbol-name:findPrevious","kind":"calls","metadata":{"unresolvedName":"findPrevious"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"symbol-name:findNext","kind":"calls","metadata":{"unresolvedName":"findNext"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"symbol-name:selectMatches","kind":"calls","metadata":{"unresolvedName":"selectMatches"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchToggle","kind":"calls","metadata":{"unresolvedName":"createSearchToggle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:options.append","kind":"calls","metadata":{"unresolvedName":"options.append"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"symbol-name:closeSearchPanel","kind":"calls","metadata":{"unresolvedName":"closeSearchPanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:view.focus","kind":"calls","metadata":{"unresolvedName":"view.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:dom.append","kind":"calls","metadata":{"unresolvedName":"dom.append"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchDivider","kind":"calls","metadata":{"unresolvedName":"createSearchDivider"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"symbol-name:getSearchQuery","kind":"calls","metadata":{"unresolvedName":"getSearchQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:caseSensitive.setPressed","kind":"calls","metadata":{"unresolvedName":"caseSensitive.setPressed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:regexp.setPressed","kind":"calls","metadata":{"unresolvedName":"regexp.setPressed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:wholeWord.setPressed","kind":"calls","metadata":{"unresolvedName":"wholeWord.setPressed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:getSearchCountLabel","kind":"calls","metadata":{"unresolvedName":"getSearchCountLabel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:view.dispatch","kind":"calls","metadata":{"unresolvedName":"view.dispatch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:setSearchQuery.of","kind":"calls","metadata":{"unresolvedName":"setSearchQuery.of"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:caseSensitive.pressed","kind":"calls","metadata":{"unresolvedName":"caseSensitive.pressed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:regexp.pressed","kind":"calls","metadata":{"unresolvedName":"regexp.pressed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:wholeWord.pressed","kind":"calls","metadata":{"unresolvedName":"wholeWord.pressed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:input.addEventListener","kind":"calls","metadata":{"unresolvedName":"input.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:option.button.addEventListener","kind":"calls","metadata":{"unresolvedName":"option.button.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:option.setPressed","kind":"calls","metadata":{"unresolvedName":"option.setPressed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:option.pressed","kind":"calls","metadata":{"unresolvedName":"option.pressed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:syncFromState","kind":"calls","metadata":{"unresolvedName":"syncFromState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createCodeMirrorSearchPanel","to":"external:input.select","kind":"calls","metadata":{"unresolvedName":"input.select"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:applyQuery","kind":"calls","metadata":{"unresolvedName":"applyQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","to":"external:input.focus","kind":"calls","metadata":{"unresolvedName":"input.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","to":"symbol-name:closeSearchPanel","kind":"calls","metadata":{"unresolvedName":"closeSearchPanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","to":"external:view.focus","kind":"calls","metadata":{"unresolvedName":"view.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:syncFromState","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:syncFromState","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:syncFromState","to":"symbol-name:getSearchQuery","kind":"calls","metadata":{"unresolvedName":"getSearchQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:syncFromState","to":"external:caseSensitive.setPressed","kind":"calls","metadata":{"unresolvedName":"caseSensitive.setPressed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:syncFromState","to":"external:regexp.setPressed","kind":"calls","metadata":{"unresolvedName":"regexp.setPressed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:syncFromState","to":"external:wholeWord.setPressed","kind":"calls","metadata":{"unresolvedName":"wholeWord.setPressed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:syncFromState","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:getSearchCountLabel","kind":"calls","metadata":{"unresolvedName":"getSearchCountLabel"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:applyQuery","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:applyQuery","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:applyQuery","to":"symbol-name:getSearchQuery","kind":"calls","metadata":{"unresolvedName":"getSearchQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:applyQuery","to":"external:view.dispatch","kind":"calls","metadata":{"unresolvedName":"view.dispatch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:applyQuery","to":"external:setSearchQuery.of","kind":"calls","metadata":{"unresolvedName":"setSearchQuery.of"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:applyQuery","to":"external:caseSensitive.pressed","kind":"calls","metadata":{"unresolvedName":"caseSensitive.pressed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:applyQuery","to":"external:regexp.pressed","kind":"calls","metadata":{"unresolvedName":"regexp.pressed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:applyQuery","to":"external:wholeWord.pressed","kind":"calls","metadata":{"unresolvedName":"wholeWord.pressed"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:applyQuery","kind":"calls","metadata":{"unresolvedName":"applyQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","to":"symbol-name:findPrevious","kind":"calls","metadata":{"unresolvedName":"findPrevious"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","to":"symbol-name:findNext","kind":"calls","metadata":{"unresolvedName":"findNext"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","to":"symbol-name:closeSearchPanel","kind":"calls","metadata":{"unresolvedName":"closeSearchPanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","to":"external:view.focus","kind":"calls","metadata":{"unresolvedName":"view.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","to":"external:option.setPressed","kind":"calls","metadata":{"unresolvedName":"option.setPressed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","to":"external:option.pressed","kind":"calls","metadata":{"unresolvedName":"option.pressed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:applyQuery","kind":"calls","metadata":{"unresolvedName":"applyQuery"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:mount","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:mount","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:mount","to":"external:input.focus","kind":"calls","metadata":{"unresolvedName":"input.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:mount","to":"external:input.select","kind":"calls","metadata":{"unresolvedName":"input.select"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:getSearchCountLabel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:getSearchCountLabel","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:getSearchCountLabel","to":"external:query.getCursor","kind":"calls","metadata":{"unresolvedName":"query.getCursor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:getSearchCountLabel","to":"external:cursor.next","kind":"calls","metadata":{"unresolvedName":"cursor.next"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchDivider","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchDivider","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchDivider","to":"external:document.createElement","kind":"calls","metadata":{"unresolvedName":"document.createElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchDivider","to":"external:divider.setAttribute","kind":"calls","metadata":{"unresolvedName":"divider.setAttribute"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchButton","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchButton","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchButton","to":"external:document.createElement","kind":"calls","metadata":{"unresolvedName":"document.createElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchButton","to":"external:button.setAttribute","kind":"calls","metadata":{"unresolvedName":"button.setAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchButton","to":"external:button.addEventListener","kind":"calls","metadata":{"unresolvedName":"button.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchButton","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchButton","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","kind":"calls","metadata":{"unresolvedName":"action"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchToggle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchToggle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchToggle","to":"external:document.createElement","kind":"calls","metadata":{"unresolvedName":"document.createElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchToggle","to":"external:button.setAttribute","kind":"calls","metadata":{"unresolvedName":"button.setAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts:createSearchToggle","to":"external:button.getAttribute","kind":"calls","metadata":{"unresolvedName":"button.getAttribute"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:expect(screen.getByText('first line')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('first line')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:expect(screen.getByText('second line')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('second line')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:expect(screen.getByText('1')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('1')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:expect(screen.getByText('2')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('2')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:expect(container.querySelector('.cm-editor')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(container.querySelector('.cm-editor')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:container.querySelector","kind":"calls","metadata":{"unresolvedName":"container.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:expect(container.querySelector('.cm-content')).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(container.querySelector('.cm-content')).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:fireEvent.keyDown","kind":"calls","metadata":{"unresolvedName":"fireEvent.keyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:expect(screen.getByPlaceholderText('Find')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByPlaceholderText('Find')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:screen.getByPlaceholderText","kind":"calls","metadata":{"unresolvedName":"screen.getByPlaceholderText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:expect(screen.getByRole('button', { name: 'Match case' })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Match case' })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:expect(screen.getByRole('button', { name: 'Clear search' })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Clear search' })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:expect(screen.getByText('No results')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('No results')).toBeInTheDocument"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:expect(screen.getByText('first line')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('first line')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:expect(screen.getByText('second line')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('second line')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:expect(screen.getByText('1')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('1')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:expect(screen.getByText('2')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('2')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:expect(container.querySelector('.cm-editor')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(container.querySelector('.cm-editor')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:container.querySelector","kind":"calls","metadata":{"unresolvedName":"container.querySelector"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:expect(container.querySelector('.cm-content')).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(container.querySelector('.cm-content')).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:container.querySelector","kind":"calls","metadata":{"unresolvedName":"container.querySelector"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:fireEvent.keyDown","kind":"calls","metadata":{"unresolvedName":"fireEvent.keyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:expect(screen.getByPlaceholderText('Find')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByPlaceholderText('Find')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:screen.getByPlaceholderText","kind":"calls","metadata":{"unresolvedName":"screen.getByPlaceholderText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:expect(screen.getByRole('button', { name: 'Match case' })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Match case' })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:expect(screen.getByRole('button', { name: 'Clear search' })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Clear search' })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:expect(screen.getByText('No results')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('No results')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeMirrorReadonly.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/codeMirrorReadonlyExtensions.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx:CodePreview","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx:CodePreview","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx:CodePreview","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx:CodePreview","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","kind":"calls","metadata":{"unresolvedName":"useSyntaxHighlightRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx:CodePreview","to":"symbol-name:codeLineHeight","kind":"calls","metadata":{"unresolvedName":"codeLineHeight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:screen.getByPlaceholderText","kind":"calls","metadata":{"unresolvedName":"screen.getByPlaceholderText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:expect(input.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(input.value).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:expect(onClose).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(onClose).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:expect(action).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(action).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:screen.queryByPlaceholderText","kind":"calls","metadata":{"unresolvedName":"screen.queryByPlaceholderText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:screen.getByPlaceholderText","kind":"calls","metadata":{"unresolvedName":"screen.getByPlaceholderText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:expect(input.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(input.value).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:expect(onClose).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(onClose).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:expect(action).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(action).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:screen.queryByPlaceholderText","kind":"calls","metadata":{"unresolvedName":"screen.queryByPlaceholderText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"external:react-dom","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:Kbd","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:Kbd","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:ShortcutDisplay","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:ShortcutDisplay","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:ShortcutDisplay","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:parseKeybinding","kind":"calls","metadata":{"unresolvedName":"parseKeybinding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:ShortcutDisplay","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybinding","kind":"calls","metadata":{"unresolvedName":"formatKeybinding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:ShortcutDisplay","to":"external:formatted.split","kind":"calls","metadata":{"unresolvedName":"formatted.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:ShortcutDisplay","to":"external:parts.map","kind":"calls","metadata":{"unresolvedName":"parts.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"symbol-name:setQuery","kind":"calls","metadata":{"unresolvedName":"setQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:inputRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"inputRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:commands.filter","kind":"calls","metadata":{"unresolvedName":"commands.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:cmd.when","kind":"calls","metadata":{"unresolvedName":"cmd.when"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:query.trim","kind":"calls","metadata":{"unresolvedName":"query.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:query.toLowerCase","kind":"calls","metadata":{"unresolvedName":"query.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:visible\r\n .filter","kind":"calls","metadata":{"unresolvedName":"visible\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:cmd.label.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"cmd.label.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:cmd.label.toLowerCase","kind":"calls","metadata":{"unresolvedName":"cmd.label.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:cmd.description?.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"cmd.description?.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:cmd.description?.toLowerCase","kind":"calls","metadata":{"unresolvedName":"cmd.description?.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:cmd.category?.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"cmd.category?.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:cmd.category?.toLowerCase","kind":"calls","metadata":{"unresolvedName":"cmd.category?.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:cmd.id.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"cmd.id.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:cmd.id.toLowerCase","kind":"calls","metadata":{"unresolvedName":"cmd.id.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:a.label.toLowerCase().startsWith","kind":"calls","metadata":{"unresolvedName":"a.label.toLowerCase().startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:a.label.toLowerCase","kind":"calls","metadata":{"unresolvedName":"a.label.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:b.label.toLowerCase().startsWith","kind":"calls","metadata":{"unresolvedName":"b.label.toLowerCase().startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:b.label.toLowerCase","kind":"calls","metadata":{"unresolvedName":"b.label.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:cmd.action","kind":"calls","metadata":{"unresolvedName":"cmd.action"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:executeCommand","kind":"calls","metadata":{"unresolvedName":"executeCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:listRef.current.querySelector","kind":"calls","metadata":{"unresolvedName":"listRef.current.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:el?.scrollIntoView","kind":"calls","metadata":{"unresolvedName":"el?.scrollIntoView"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"symbol-name:createPortal","kind":"calls","metadata":{"unresolvedName":"createPortal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:CommandPalette","to":"external:filteredCommands.map","kind":"calls","metadata":{"unresolvedName":"filteredCommands.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:setQuery","kind":"calls","metadata":{"unresolvedName":"setQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:setQuery","kind":"calls","metadata":{"unresolvedName":"setQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:inputRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"inputRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:inputRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"inputRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:commands.filter","kind":"calls","metadata":{"unresolvedName":"commands.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:cmd.when","kind":"calls","metadata":{"unresolvedName":"cmd.when"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:query.trim","kind":"calls","metadata":{"unresolvedName":"query.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:query.toLowerCase","kind":"calls","metadata":{"unresolvedName":"query.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:visible\r\n .filter","kind":"calls","metadata":{"unresolvedName":"visible\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:cmd.label.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"cmd.label.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:cmd.label.toLowerCase","kind":"calls","metadata":{"unresolvedName":"cmd.label.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:cmd.description?.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"cmd.description?.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:cmd.description?.toLowerCase","kind":"calls","metadata":{"unresolvedName":"cmd.description?.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:cmd.category?.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"cmd.category?.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:cmd.category?.toLowerCase","kind":"calls","metadata":{"unresolvedName":"cmd.category?.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:cmd.id.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"cmd.id.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:cmd.id.toLowerCase","kind":"calls","metadata":{"unresolvedName":"cmd.id.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:a.label.toLowerCase().startsWith","kind":"calls","metadata":{"unresolvedName":"a.label.toLowerCase().startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:a.label.toLowerCase","kind":"calls","metadata":{"unresolvedName":"a.label.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:b.label.toLowerCase().startsWith","kind":"calls","metadata":{"unresolvedName":"b.label.toLowerCase().startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:b.label.toLowerCase","kind":"calls","metadata":{"unresolvedName":"b.label.toLowerCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:a.label.toLowerCase().startsWith","kind":"calls","metadata":{"unresolvedName":"a.label.toLowerCase().startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:a.label.toLowerCase","kind":"calls","metadata":{"unresolvedName":"a.label.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:b.label.toLowerCase().startsWith","kind":"calls","metadata":{"unresolvedName":"b.label.toLowerCase().startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:b.label.toLowerCase","kind":"calls","metadata":{"unresolvedName":"b.label.toLowerCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:cmd.action","kind":"calls","metadata":{"unresolvedName":"cmd.action"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:executeCommand","kind":"calls","metadata":{"unresolvedName":"executeCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:handleKeyDown","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:handleKeyDown","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:handleKeyDown","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:handleKeyDown","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:handleKeyDown","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:executeCommand","kind":"calls","metadata":{"unresolvedName":"executeCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:handleKeyDown","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:handleKeyDown","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:listRef.current.querySelector","kind":"calls","metadata":{"unresolvedName":"listRef.current.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"external:el?.scrollIntoView","kind":"calls","metadata":{"unresolvedName":"el?.scrollIntoView"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:setQuery","kind":"calls","metadata":{"unresolvedName":"setQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:setQuery","kind":"calls","metadata":{"unresolvedName":"setQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CommandPalette.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"external:diff","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:useResponsiveMaxHeight","kind":"calls","metadata":{"unresolvedName":"useResponsiveMaxHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"external:content?.trim","kind":"calls","metadata":{"unresolvedName":"content?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:detectLanguage","kind":"calls","metadata":{"unresolvedName":"detectLanguage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"external:filePath?.split(/[/\\\\]/).pop","kind":"calls","metadata":{"unresolvedName":"filePath?.split(/[/\\\\]/).pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"external:filePath?.split","kind":"calls","metadata":{"unresolvedName":"filePath?.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"symbol-name:diffLines","kind":"calls","metadata":{"unresolvedName":"diffLines"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"external:(diff as string).split","kind":"calls","metadata":{"unresolvedName":"(diff as string).split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"external:line.startsWith","kind":"calls","metadata":{"unresolvedName":"line.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts:extractContentFromUnifiedDiff","kind":"calls","metadata":{"unresolvedName":"extractContentFromUnifiedDiff"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffViewerData","kind":"calls","metadata":{"unresolvedName":"useDiffViewerData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"symbol-name:setDiffViewMode","kind":"calls","metadata":{"unresolvedName":"setDiffViewMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:updateViewMode","kind":"calls","metadata":{"unresolvedName":"updateViewMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"external:observer.observe","kind":"calls","metadata":{"unresolvedName":"observer.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"external:observer.disconnect","kind":"calls","metadata":{"unresolvedName":"observer.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"symbol-name:setFullscreenDiffViewMode","kind":"calls","metadata":{"unresolvedName":"setFullscreenDiffViewMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"symbol-name:checkWidth","kind":"calls","metadata":{"unresolvedName":"checkWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"symbol-name:setCollapsed","kind":"calls","metadata":{"unresolvedName":"setCollapsed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"symbol-name:setFullscreenOpen","kind":"calls","metadata":{"unresolvedName":"setFullscreenOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"symbol-name:diffLines","kind":"calls","metadata":{"unresolvedName":"diffLines"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"external:(diff as string).split","kind":"calls","metadata":{"unresolvedName":"(diff as string).split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"external:line.startsWith","kind":"calls","metadata":{"unresolvedName":"line.startsWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts:extractContentFromUnifiedDiff","kind":"calls","metadata":{"unresolvedName":"extractContentFromUnifiedDiff"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"symbol-name:setDiffViewMode","kind":"calls","metadata":{"unresolvedName":"setDiffViewMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:updateViewMode","kind":"calls","metadata":{"unresolvedName":"updateViewMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"external:observer.observe","kind":"calls","metadata":{"unresolvedName":"observer.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"external:observer.disconnect","kind":"calls","metadata":{"unresolvedName":"observer.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:updateViewMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:updateViewMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:updateViewMode","to":"symbol-name:setDiffViewMode","kind":"calls","metadata":{"unresolvedName":"setDiffViewMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"symbol-name:setFullscreenDiffViewMode","kind":"calls","metadata":{"unresolvedName":"setFullscreenDiffViewMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"symbol-name:checkWidth","kind":"calls","metadata":{"unresolvedName":"checkWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ContentBlock.tsx:","to":"symbol-name:setFullscreenOpen","kind":"calls","metadata":{"unresolvedName":"setFullscreenOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","to":"external:document.querySelector","kind":"calls","metadata":{"unresolvedName":"document.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","to":"external:expect(controlsHost).not.toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(controlsHost).not.toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","to":"external:document.createElement","kind":"calls","metadata":{"unresolvedName":"document.createElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","to":"external:controlsHost!.appendChild","kind":"calls","metadata":{"unresolvedName":"controlsHost!.appendChild"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","to":"external:expect(screen.getByText('Minimize')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('Minimize')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","to":"external:document.querySelector","kind":"calls","metadata":{"unresolvedName":"document.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","to":"external:expect(controlsHost).not.toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(controlsHost).not.toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","to":"external:document.createElement","kind":"calls","metadata":{"unresolvedName":"document.createElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","to":"external:controlsHost!.appendChild","kind":"calls","metadata":{"unresolvedName":"controlsHost!.appendChild"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","to":"external:expect(screen.getByText('Minimize')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('Minimize')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","kind":"calls","metadata":{"unresolvedName":"useTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:useUpdateStore","kind":"calls","metadata":{"unresolvedName":"useUpdateStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:hasUpdateAvailable","kind":"calls","metadata":{"unresolvedName":"hasUpdateAvailable"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:getDesktopPlatform","kind":"calls","metadata":{"unresolvedName":"getDesktopPlatform"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:usesCustomDesktopTitlebar","kind":"calls","metadata":{"unresolvedName":"usesCustomDesktopTitlebar"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"external:document.documentElement.style.setProperty","kind":"calls","metadata":{"unresolvedName":"document.documentElement.style.setProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"external:document.documentElement.style.removeProperty","kind":"calls","metadata":{"unresolvedName":"document.documentElement.style.removeProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"external:import('@tauri-apps/api/window').then","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/api/window').then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"external:getCurrentWindow().setTheme","kind":"calls","metadata":{"unresolvedName":"getCurrentWindow().setTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"symbol-name:getCurrentWindow","kind":"calls","metadata":{"unresolvedName":"getCurrentWindow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"external:window.history.back","kind":"calls","metadata":{"unresolvedName":"window.history.back"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"external:window.history.forward","kind":"calls","metadata":{"unresolvedName":"window.history.forward"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"external:window.dispatchEvent","kind":"calls","metadata":{"unresolvedName":"window.dispatchEvent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"external:import('@tauri-apps/api/core').then","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/api/core').then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"external:invoke('open_new_window', { directory: null }).catch","kind":"calls","metadata":{"unresolvedName":"invoke('open_new_window', { directory: null }).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"symbol-name:invoke","kind":"calls","metadata":{"unresolvedName":"invoke"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:DesktopTitlebar","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","to":"external:document.documentElement.style.setProperty","kind":"calls","metadata":{"unresolvedName":"document.documentElement.style.setProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","to":"external:document.documentElement.style.removeProperty","kind":"calls","metadata":{"unresolvedName":"document.documentElement.style.removeProperty"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","to":"external:document.documentElement.style.removeProperty","kind":"calls","metadata":{"unresolvedName":"document.documentElement.style.removeProperty"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","to":"external:import('@tauri-apps/api/window').then","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/api/window').then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","to":"external:getCurrentWindow().setTheme","kind":"calls","metadata":{"unresolvedName":"getCurrentWindow().setTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","to":"symbol-name:getCurrentWindow","kind":"calls","metadata":{"unresolvedName":"getCurrentWindow"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","to":"external:getCurrentWindow().setTheme","kind":"calls","metadata":{"unresolvedName":"getCurrentWindow().setTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","to":"symbol-name:getCurrentWindow","kind":"calls","metadata":{"unresolvedName":"getCurrentWindow"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","to":"external:window.history.back","kind":"calls","metadata":{"unresolvedName":"window.history.back"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","to":"external:window.history.forward","kind":"calls","metadata":{"unresolvedName":"window.history.forward"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","to":"external:window.dispatchEvent","kind":"calls","metadata":{"unresolvedName":"window.dispatchEvent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","to":"external:window.dispatchEvent","kind":"calls","metadata":{"unresolvedName":"window.dispatchEvent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","to":"external:import('@tauri-apps/api/core').then","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/api/core').then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","to":"external:invoke('open_new_window', { directory: null }).catch","kind":"calls","metadata":{"unresolvedName":"invoke('open_new_window', { directory: null }).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","to":"symbol-name:invoke","kind":"calls","metadata":{"unresolvedName":"invoke"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","to":"external:invoke('open_new_window', { directory: null }).catch","kind":"calls","metadata":{"unresolvedName":"invoke('open_new_window', { directory: null }).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","to":"symbol-name:invoke","kind":"calls","metadata":{"unresolvedName":"invoke"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DesktopTitlebar.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"external:expect(screen.getByText('app.ts')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('app.ts')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"external:expect(screen.getByText('+1')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('+1')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"external:expect(screen.getByText('-1')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('-1')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"external:screen.getByTitle","kind":"calls","metadata":{"unresolvedName":"screen.getByTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"external:expect(screen.getByTestId('fullscreen-viewer')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByTestId('fullscreen-viewer')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"external:expect(screen.getByText('app.ts')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('app.ts')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"external:expect(screen.getByText('+1')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('+1')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"external:expect(screen.getByText('-1')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('-1')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"external:screen.getByTitle","kind":"calls","metadata":{"unresolvedName":"screen.getByTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"external:expect(screen.getByTestId('fullscreen-viewer')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByTestId('fullscreen-viewer')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"external:diff","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"external:clsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:computeDiffStats","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:computeDiffStats","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:computeDiffStats","to":"symbol-name:diffLines","kind":"calls","metadata":{"unresolvedName":"diffLines"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"symbol-name:setFullscreenViewMode","kind":"calls","metadata":{"unresolvedName":"setFullscreenViewMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"symbol-name:checkWidth","kind":"calls","metadata":{"unresolvedName":"checkWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts:extractContentFromUnifiedDiff","kind":"calls","metadata":{"unresolvedName":"extractContentFromUnifiedDiff"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:detectLanguage","kind":"calls","metadata":{"unresolvedName":"detectLanguage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffViewerData","kind":"calls","metadata":{"unresolvedName":"useDiffViewerData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:computeDiffStats","kind":"calls","metadata":{"unresolvedName":"computeDiffStats"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"external:filePath.split(/[/\\\\]/).pop","kind":"calls","metadata":{"unresolvedName":"filePath.split(/[/\\\\]/).pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"external:filePath.split","kind":"calls","metadata":{"unresolvedName":"filePath.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"symbol-name:setCollapsed","kind":"calls","metadata":{"unresolvedName":"setCollapsed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"symbol-name:setModalOpen","kind":"calls","metadata":{"unresolvedName":"setModalOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"symbol-name:clsx","kind":"calls","metadata":{"unresolvedName":"clsx"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"symbol-name:setFullscreenViewMode","kind":"calls","metadata":{"unresolvedName":"setFullscreenViewMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"symbol-name:checkWidth","kind":"calls","metadata":{"unresolvedName":"checkWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts:extractContentFromUnifiedDiff","kind":"calls","metadata":{"unresolvedName":"extractContentFromUnifiedDiff"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:detectLanguage","kind":"calls","metadata":{"unresolvedName":"detectLanguage"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:computeDiffStats","kind":"calls","metadata":{"unresolvedName":"computeDiffStats"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx:","to":"symbol-name:setModalOpen","kind":"calls","metadata":{"unresolvedName":"setModalOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"symbol-name:importOriginal","kind":"calls","metadata":{"unresolvedName":"importOriginal"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:expect(container.querySelector('.sticky')).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(container.querySelector('.sticky')).toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:container.querySelector","kind":"calls","metadata":{"unresolvedName":"container.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:['same', 'tail'].join","kind":"calls","metadata":{"unresolvedName":"['same', 'tail'].join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:['same', 'added only line', 'tail'].join","kind":"calls","metadata":{"unresolvedName":"['same', 'added only line', 'tail'].join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:container.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"container.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:Number.parseFloat","kind":"calls","metadata":{"unresolvedName":"Number.parseFloat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:emptyBuffer.style.backgroundPosition.split","kind":"calls","metadata":{"unresolvedName":"emptyBuffer.style.backgroundPosition.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:Object.defineProperty","kind":"calls","metadata":{"unresolvedName":"Object.defineProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:fireEvent.scroll","kind":"calls","metadata":{"unresolvedName":"fireEvent.scroll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:updatedBuffer.style.backgroundPosition.split","kind":"calls","metadata":{"unresolvedName":"updatedBuffer.style.backgroundPosition.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:expect(updatedX - initialX).toBe","kind":"calls","metadata":{"unresolvedName":"expect(updatedX - initialX).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:['node_modules', '.git', '.gitignore'].join","kind":"calls","metadata":{"unresolvedName":"['node_modules', '.git', '.gitignore'].join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:['node_modules', 'root', '.gitignore'].join","kind":"calls","metadata":{"unresolvedName":"['node_modules', 'root', '.gitignore'].join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:Array.from(container.querySelectorAll('span')).filter","kind":"calls","metadata":{"unresolvedName":"Array.from(container.querySelectorAll('span')).filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:segment.classList.contains","kind":"calls","metadata":{"unresolvedName":"segment.classList.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:expect(changedSegments.length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(changedSegments.length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:expect(segment.closest('.text-text-100')).not.toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(segment.closest('.text-text-100')).not.toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:segment.closest","kind":"calls","metadata":{"unresolvedName":"segment.closest"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:expect(container.querySelector('.sticky')).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(container.querySelector('.sticky')).toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:container.querySelector","kind":"calls","metadata":{"unresolvedName":"container.querySelector"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:['same', 'tail'].join","kind":"calls","metadata":{"unresolvedName":"['same', 'tail'].join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:['same', 'added only line', 'tail'].join","kind":"calls","metadata":{"unresolvedName":"['same', 'added only line', 'tail'].join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:container.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"container.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:container.querySelector","kind":"calls","metadata":{"unresolvedName":"container.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:Number.parseFloat","kind":"calls","metadata":{"unresolvedName":"Number.parseFloat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:emptyBuffer.style.backgroundPosition.split","kind":"calls","metadata":{"unresolvedName":"emptyBuffer.style.backgroundPosition.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:Object.defineProperty","kind":"calls","metadata":{"unresolvedName":"Object.defineProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:fireEvent.scroll","kind":"calls","metadata":{"unresolvedName":"fireEvent.scroll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:updatedBuffer.style.backgroundPosition.split","kind":"calls","metadata":{"unresolvedName":"updatedBuffer.style.backgroundPosition.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:expect(updatedX - initialX).toBe","kind":"calls","metadata":{"unresolvedName":"expect(updatedX - initialX).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:container.querySelector","kind":"calls","metadata":{"unresolvedName":"container.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:Number.parseFloat","kind":"calls","metadata":{"unresolvedName":"Number.parseFloat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:updatedBuffer.style.backgroundPosition.split","kind":"calls","metadata":{"unresolvedName":"updatedBuffer.style.backgroundPosition.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:expect(updatedX - initialX).toBe","kind":"calls","metadata":{"unresolvedName":"expect(updatedX - initialX).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:['node_modules', '.git', '.gitignore'].join","kind":"calls","metadata":{"unresolvedName":"['node_modules', '.git', '.gitignore'].join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:['node_modules', 'root', '.gitignore'].join","kind":"calls","metadata":{"unresolvedName":"['node_modules', 'root', '.gitignore'].join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:Array.from(container.querySelectorAll('span')).filter","kind":"calls","metadata":{"unresolvedName":"Array.from(container.querySelectorAll('span')).filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:container.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"container.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:segment.classList.contains","kind":"calls","metadata":{"unresolvedName":"segment.classList.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:expect(changedSegments.length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(changedSegments.length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:expect(segment.closest('.text-text-100')).not.toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(segment.closest('.text-text-100')).not.toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.test.tsx:","to":"external:segment.closest","kind":"calls","metadata":{"unresolvedName":"segment.closest"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"external:diff","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:codeLineHeight","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:codeLineHeight","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:isCollapsed","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:isCollapsed","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:expandRegion","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:expandRegion","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:expandRegion","to":"external:next.get","kind":"calls","metadata":{"unresolvedName":"next.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:expandRegion","to":"external:next.set","kind":"calls","metadata":{"unresolvedName":"next.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:collapseContextPaired","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:collapseContextPaired","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:collapseContextPaired","to":"external:expandedRegions?.get","kind":"calls","metadata":{"unresolvedName":"expandedRegions?.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:collapseContextPaired","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:collapseContextPaired","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:collapseContextPaired","to":"external:result.push","kind":"calls","metadata":{"unresolvedName":"result.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:collapseContextUnified","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:collapseContextUnified","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:collapseContextUnified","to":"external:expandedRegions?.get","kind":"calls","metadata":{"unresolvedName":"expandedRegions?.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:collapseContextUnified","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:collapseContextUnified","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:collapseContextUnified","to":"external:result.push","kind":"calls","metadata":{"unresolvedName":"result.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getLineBgClass","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getLineBgClass","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getGutterBgClass","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getGutterBgClass","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getContentBgClass","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getContentBgClass","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getContentBgClass","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getLineBgClass","kind":"calls","metadata":{"unresolvedName":"getLineBgClass"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getEmptyBufferBackgroundStyle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getEmptyBufferBackgroundStyle","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getEmptyBufferRowStyle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getEmptyBufferRowStyle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getEmptyBufferRowStyle","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getEmptyBufferBackgroundStyle","kind":"calls","metadata":{"unresolvedName":"getEmptyBufferBackgroundStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:estimateWrappedVisualLineCount","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:estimateWrappedVisualLineCount","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:estimateWrappedVisualLineCount","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:estimateWrappedVisualLineCount","to":"external:Math.floor","kind":"calls","metadata":{"unresolvedName":"Math.floor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:estimateWrappedVisualLineCount","to":"external:content.split","kind":"calls","metadata":{"unresolvedName":"content.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:estimateWrappedVisualLineCount","to":"external:Math.ceil","kind":"calls","metadata":{"unresolvedName":"Math.ceil"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getWrappedPairContent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getWrappedPairContent","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffLineNumberWidth","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffLineNumberWidth","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffLineNumberWidth","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffLineNumberWidth","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts:getLineNumberColumnWidth","kind":"calls","metadata":{"unresolvedName":"getLineNumberColumnWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffLineNumberWidth","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffLineNumberWidth","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts:getLineCount","kind":"calls","metadata":{"unresolvedName":"getLineCount"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:LineNumberCell","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:LineNumberCell","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:DiffMarkerCell","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:DiffMarkerCell","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:EmptyContentBuffer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:EmptyContentBuffer","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:EmptyContentBuffer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getEmptyBufferRowStyle","kind":"calls","metadata":{"unresolvedName":"getEmptyBufferRowStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getChangeBarProps","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getChangeBarProps","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:alignDeleteChangeBars","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:alignDeleteChangeBars","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:alignDeleteChangeBars","to":"external:container.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"container.querySelectorAll"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:ExpandIcon","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:ExpandIcon","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getSeparatorDirections","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getSeparatorDirections","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getSeparatorDirections","to":"external:directions.push","kind":"calls","metadata":{"unresolvedName":"directions.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedExpandButton","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedExpandButton","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedExpandButton","to":"external:directions.map","kind":"calls","metadata":{"unresolvedName":"directions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedExpandButton","to":"symbol-name:onExpand","kind":"calls","metadata":{"unresolvedName":"onExpand"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedLabel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedLabel","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedLabel","to":"symbol-name:onExpand","kind":"calls","metadata":{"unresolvedName":"onExpand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedLabel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedLabelOverlay","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedLabelOverlay","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedContinuation","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedContinuation","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedBar","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedBar","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:CollapsedBar","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getSeparatorDirections","kind":"calls","metadata":{"unresolvedName":"getSeparatorDirections"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffViewerData","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffViewerData","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffViewerData","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","kind":"calls","metadata":{"unresolvedName":"useSyntaxHighlight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffViewerData","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffViewerData","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computePairedLines","kind":"calls","metadata":{"unresolvedName":"computePairedLines"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffViewerData","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computeUnifiedLines","kind":"calls","metadata":{"unresolvedName":"computeUnifiedLines"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffViewerData","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffLineNumberWidth","kind":"calls","metadata":{"unresolvedName":"useDiffLineNumberWidth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:DiffViewerWithData","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:DiffViewerWithData","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:DiffViewerWithData","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffViewerData","kind":"calls","metadata":{"unresolvedName":"useDiffViewerData"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:codeLineHeight","kind":"calls","metadata":{"unresolvedName":"codeLineHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:before.trim","kind":"calls","metadata":{"unresolvedName":"before.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:after.trim","kind":"calls","metadata":{"unresolvedName":"after.trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:collapseContextPaired","kind":"calls","metadata":{"unresolvedName":"collapseContextPaired"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setExpandedRegions","kind":"calls","metadata":{"unresolvedName":"setExpandedRegions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:expandRegion","kind":"calls","metadata":{"unresolvedName":"expandRegion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:isCollapsed","kind":"calls","metadata":{"unresolvedName":"isCollapsed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:estimateWrappedVisualLineCount","kind":"calls","metadata":{"unresolvedName":"estimateWrappedVisualLineCount"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getWrappedPairContent","kind":"calls","metadata":{"unresolvedName":"getWrappedPairContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","kind":"calls","metadata":{"unresolvedName":"useDynamicVirtualScroll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:measureRef","kind":"calls","metadata":{"unresolvedName":"measureRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:el.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"el.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:alignDeleteChangeBars","kind":"calls","metadata":{"unresolvedName":"alignDeleteChangeBars"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:visibleRows.push","kind":"calls","metadata":{"unresolvedName":"visibleRows.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:measureWrappedRowRef","kind":"calls","metadata":{"unresolvedName":"measureWrappedRowRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:handleExpand","kind":"calls","metadata":{"unresolvedName":"handleExpand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getEmptyBufferBackgroundStyle","kind":"calls","metadata":{"unresolvedName":"getEmptyBufferBackgroundStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getContentBgClass","kind":"calls","metadata":{"unresolvedName":"getContentBgClass"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getChangeBarProps","kind":"calls","metadata":{"unresolvedName":"getChangeBarProps"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setExpandedRegions","kind":"calls","metadata":{"unresolvedName":"setExpandedRegions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:expandRegion","kind":"calls","metadata":{"unresolvedName":"expandRegion"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:isCollapsed","kind":"calls","metadata":{"unresolvedName":"isCollapsed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:estimateWrappedVisualLineCount","kind":"calls","metadata":{"unresolvedName":"estimateWrappedVisualLineCount"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getWrappedPairContent","kind":"calls","metadata":{"unresolvedName":"getWrappedPairContent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:measureRef","kind":"calls","metadata":{"unresolvedName":"measureRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:el.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"el.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:alignDeleteChangeBars","kind":"calls","metadata":{"unresolvedName":"alignDeleteChangeBars"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:collapseContextPaired","kind":"calls","metadata":{"unresolvedName":"collapseContextPaired"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setExpandedRegions","kind":"calls","metadata":{"unresolvedName":"setExpandedRegions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:expandRegion","kind":"calls","metadata":{"unresolvedName":"expandRegion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:Math.floor","kind":"calls","metadata":{"unresolvedName":"Math.floor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:Math.ceil","kind":"calls","metadata":{"unresolvedName":"Math.ceil"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setContainerHeight","kind":"calls","metadata":{"unresolvedName":"setContainerHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:resizeObserver.observe","kind":"calls","metadata":{"unresolvedName":"resizeObserver.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:resizeObserver.disconnect","kind":"calls","metadata":{"unresolvedName":"resizeObserver.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setLeftContentWidth","kind":"calls","metadata":{"unresolvedName":"setLeftContentWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setRightContentWidth","kind":"calls","metadata":{"unresolvedName":"setRightContentWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setLeftClientWidth","kind":"calls","metadata":{"unresolvedName":"setLeftClientWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setRightClientWidth","kind":"calls","metadata":{"unresolvedName":"setRightClientWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:measure","kind":"calls","metadata":{"unresolvedName":"measure"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:ro.observe","kind":"calls","metadata":{"unresolvedName":"ro.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:mo.observe","kind":"calls","metadata":{"unresolvedName":"mo.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:mo.disconnect","kind":"calls","metadata":{"unresolvedName":"mo.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setScrollTop","kind":"calls","metadata":{"unresolvedName":"setScrollTop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setLeftScrollLeft","kind":"calls","metadata":{"unresolvedName":"setLeftScrollLeft"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setRightScrollLeft","kind":"calls","metadata":{"unresolvedName":"setRightScrollLeft"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:isCollapsed","kind":"calls","metadata":{"unresolvedName":"isCollapsed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getSeparatorDirections","kind":"calls","metadata":{"unresolvedName":"getSeparatorDirections"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:leftGutterRows.push","kind":"calls","metadata":{"unresolvedName":"leftGutterRows.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:handleExpand","kind":"calls","metadata":{"unresolvedName":"handleExpand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:leftContentRows.push","kind":"calls","metadata":{"unresolvedName":"leftContentRows.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:rightGutterRows.push","kind":"calls","metadata":{"unresolvedName":"rightGutterRows.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:rightContentRows.push","kind":"calls","metadata":{"unresolvedName":"rightContentRows.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getGutterBgClass","kind":"calls","metadata":{"unresolvedName":"getGutterBgClass"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getEmptyBufferRowStyle","kind":"calls","metadata":{"unresolvedName":"getEmptyBufferRowStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getChangeBarProps","kind":"calls","metadata":{"unresolvedName":"getChangeBarProps"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getContentBgClass","kind":"calls","metadata":{"unresolvedName":"getContentBgClass"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setExpandedRegions","kind":"calls","metadata":{"unresolvedName":"setExpandedRegions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:expandRegion","kind":"calls","metadata":{"unresolvedName":"expandRegion"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:Math.floor","kind":"calls","metadata":{"unresolvedName":"Math.floor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:Math.ceil","kind":"calls","metadata":{"unresolvedName":"Math.ceil"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setContainerHeight","kind":"calls","metadata":{"unresolvedName":"setContainerHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:resizeObserver.observe","kind":"calls","metadata":{"unresolvedName":"resizeObserver.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:resizeObserver.disconnect","kind":"calls","metadata":{"unresolvedName":"resizeObserver.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setLeftContentWidth","kind":"calls","metadata":{"unresolvedName":"setLeftContentWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setRightContentWidth","kind":"calls","metadata":{"unresolvedName":"setRightContentWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setLeftClientWidth","kind":"calls","metadata":{"unresolvedName":"setLeftClientWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setRightClientWidth","kind":"calls","metadata":{"unresolvedName":"setRightClientWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:measure","kind":"calls","metadata":{"unresolvedName":"measure"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:ro.observe","kind":"calls","metadata":{"unresolvedName":"ro.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:mo.observe","kind":"calls","metadata":{"unresolvedName":"mo.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:mo.disconnect","kind":"calls","metadata":{"unresolvedName":"mo.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:measure","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:measure","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:measure","to":"symbol-name:setLeftContentWidth","kind":"calls","metadata":{"unresolvedName":"setLeftContentWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:measure","to":"symbol-name:setRightContentWidth","kind":"calls","metadata":{"unresolvedName":"setRightContentWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:measure","to":"symbol-name:setLeftClientWidth","kind":"calls","metadata":{"unresolvedName":"setLeftClientWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:measure","to":"symbol-name:setRightClientWidth","kind":"calls","metadata":{"unresolvedName":"setRightClientWidth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:measure","kind":"calls","metadata":{"unresolvedName":"measure"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:mo.disconnect","kind":"calls","metadata":{"unresolvedName":"mo.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setScrollTop","kind":"calls","metadata":{"unresolvedName":"setScrollTop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setLeftScrollLeft","kind":"calls","metadata":{"unresolvedName":"setLeftScrollLeft"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setRightScrollLeft","kind":"calls","metadata":{"unresolvedName":"setRightScrollLeft"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setLeftScrollLeft","kind":"calls","metadata":{"unresolvedName":"setLeftScrollLeft"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setRightScrollLeft","kind":"calls","metadata":{"unresolvedName":"setRightScrollLeft"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:collapseContextUnified","kind":"calls","metadata":{"unresolvedName":"collapseContextUnified"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setExpandedRegions","kind":"calls","metadata":{"unresolvedName":"setExpandedRegions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:expandRegion","kind":"calls","metadata":{"unresolvedName":"expandRegion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:Math.floor","kind":"calls","metadata":{"unresolvedName":"Math.floor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:Math.ceil","kind":"calls","metadata":{"unresolvedName":"Math.ceil"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setContainerHeight","kind":"calls","metadata":{"unresolvedName":"setContainerHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:resizeObserver.observe","kind":"calls","metadata":{"unresolvedName":"resizeObserver.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:resizeObserver.disconnect","kind":"calls","metadata":{"unresolvedName":"resizeObserver.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setContentWidth","kind":"calls","metadata":{"unresolvedName":"setContentWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setContentClientWidth","kind":"calls","metadata":{"unresolvedName":"setContentClientWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:measure","kind":"calls","metadata":{"unresolvedName":"measure"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:ro.observe","kind":"calls","metadata":{"unresolvedName":"ro.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:mo.observe","kind":"calls","metadata":{"unresolvedName":"mo.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:mo.disconnect","kind":"calls","metadata":{"unresolvedName":"mo.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setScrollTop","kind":"calls","metadata":{"unresolvedName":"setScrollTop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:isCollapsed","kind":"calls","metadata":{"unresolvedName":"isCollapsed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getSeparatorDirections","kind":"calls","metadata":{"unresolvedName":"getSeparatorDirections"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:gutterRows.push","kind":"calls","metadata":{"unresolvedName":"gutterRows.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:handleExpand","kind":"calls","metadata":{"unresolvedName":"handleExpand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:contentRows.push","kind":"calls","metadata":{"unresolvedName":"contentRows.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getGutterBgClass","kind":"calls","metadata":{"unresolvedName":"getGutterBgClass"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getChangeBarProps","kind":"calls","metadata":{"unresolvedName":"getChangeBarProps"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getLineBgClass","kind":"calls","metadata":{"unresolvedName":"getLineBgClass"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setExpandedRegions","kind":"calls","metadata":{"unresolvedName":"setExpandedRegions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:expandRegion","kind":"calls","metadata":{"unresolvedName":"expandRegion"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:Math.floor","kind":"calls","metadata":{"unresolvedName":"Math.floor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:Math.ceil","kind":"calls","metadata":{"unresolvedName":"Math.ceil"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setContainerHeight","kind":"calls","metadata":{"unresolvedName":"setContainerHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:resizeObserver.observe","kind":"calls","metadata":{"unresolvedName":"resizeObserver.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:resizeObserver.disconnect","kind":"calls","metadata":{"unresolvedName":"resizeObserver.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setContentWidth","kind":"calls","metadata":{"unresolvedName":"setContentWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setContentClientWidth","kind":"calls","metadata":{"unresolvedName":"setContentClientWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:measure","kind":"calls","metadata":{"unresolvedName":"measure"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:ro.observe","kind":"calls","metadata":{"unresolvedName":"ro.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:mo.observe","kind":"calls","metadata":{"unresolvedName":"mo.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:mo.disconnect","kind":"calls","metadata":{"unresolvedName":"mo.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:measure","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:measure","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:measure","to":"symbol-name:setContentWidth","kind":"calls","metadata":{"unresolvedName":"setContentWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:measure","to":"symbol-name:setContentClientWidth","kind":"calls","metadata":{"unresolvedName":"setContentClientWidth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:measure","kind":"calls","metadata":{"unresolvedName":"measure"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:mo.disconnect","kind":"calls","metadata":{"unresolvedName":"mo.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setScrollTop","kind":"calls","metadata":{"unresolvedName":"setScrollTop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:collapseContextUnified","kind":"calls","metadata":{"unresolvedName":"collapseContextUnified"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setExpandedRegions","kind":"calls","metadata":{"unresolvedName":"setExpandedRegions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:expandRegion","kind":"calls","metadata":{"unresolvedName":"expandRegion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:isCollapsed","kind":"calls","metadata":{"unresolvedName":"isCollapsed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:estimateWrappedVisualLineCount","kind":"calls","metadata":{"unresolvedName":"estimateWrappedVisualLineCount"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","kind":"calls","metadata":{"unresolvedName":"useDynamicVirtualScroll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:measureRef","kind":"calls","metadata":{"unresolvedName":"measureRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:alignDeleteChangeBars","kind":"calls","metadata":{"unresolvedName":"alignDeleteChangeBars"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:visibleRows.push","kind":"calls","metadata":{"unresolvedName":"visibleRows.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:measureWrappedUnifiedRowRef","kind":"calls","metadata":{"unresolvedName":"measureWrappedUnifiedRowRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:handleExpand","kind":"calls","metadata":{"unresolvedName":"handleExpand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getLineBgClass","kind":"calls","metadata":{"unresolvedName":"getLineBgClass"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:getChangeBarProps","kind":"calls","metadata":{"unresolvedName":"getChangeBarProps"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:setExpandedRegions","kind":"calls","metadata":{"unresolvedName":"setExpandedRegions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:expandRegion","kind":"calls","metadata":{"unresolvedName":"expandRegion"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:isCollapsed","kind":"calls","metadata":{"unresolvedName":"isCollapsed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:estimateWrappedVisualLineCount","kind":"calls","metadata":{"unresolvedName":"estimateWrappedVisualLineCount"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"symbol-name:measureRef","kind":"calls","metadata":{"unresolvedName":"measureRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:alignDeleteChangeBars","kind":"calls","metadata":{"unresolvedName":"alignDeleteChangeBars"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:line.wordDiffSegments.map","kind":"calls","metadata":{"unresolvedName":"line.wordDiffSegments.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:","to":"external:lineTokens.map","kind":"calls","metadata":{"unresolvedName":"lineTokens.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:MergedWordDiffLine","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:MergedWordDiffLine","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:MergedWordDiffLine","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:MergedWordDiffLine","to":"external:token.content.substring","kind":"calls","metadata":{"unresolvedName":"token.content.substring"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:MergedWordDiffLine","to":"external:children.push","kind":"calls","metadata":{"unresolvedName":"children.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:MergedWordDiffLine","to":"external:seg.text.substring","kind":"calls","metadata":{"unresolvedName":"seg.text.substring"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:MergedWordDiffLine","to":"external:result.push","kind":"calls","metadata":{"unresolvedName":"result.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computePairedLines","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computePairedLines","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computePairedLines","to":"symbol-name:diffLines","kind":"calls","metadata":{"unresolvedName":"diffLines"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computePairedLines","to":"external:before.split","kind":"calls","metadata":{"unresolvedName":"before.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computePairedLines","to":"external:after.split","kind":"calls","metadata":{"unresolvedName":"after.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computePairedLines","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computePairedLines","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computeWordDiff","kind":"calls","metadata":{"unresolvedName":"computeWordDiff"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computePairedLines","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:isTooFragmented","kind":"calls","metadata":{"unresolvedName":"isTooFragmented"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computePairedLines","to":"external:result.push","kind":"calls","metadata":{"unresolvedName":"result.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computeUnifiedLines","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computeUnifiedLines","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computeUnifiedLines","to":"symbol-name:diffLines","kind":"calls","metadata":{"unresolvedName":"diffLines"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computeUnifiedLines","to":"external:before.split","kind":"calls","metadata":{"unresolvedName":"before.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computeUnifiedLines","to":"external:after.split","kind":"calls","metadata":{"unresolvedName":"after.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computeUnifiedLines","to":"external:result.push","kind":"calls","metadata":{"unresolvedName":"result.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:isTooFragmented","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:isTooFragmented","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computeWordDiff","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computeWordDiff","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computeWordDiff","to":"symbol-name:diffWords","kind":"calls","metadata":{"unresolvedName":"diffWords"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computeWordDiff","to":"external:/^\\s*$/.test","kind":"calls","metadata":{"unresolvedName":"/^\\s*$/.test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computeWordDiff","to":"external:mergedChanges.push","kind":"calls","metadata":{"unresolvedName":"mergedChanges.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computeWordDiff","to":"external:left.push","kind":"calls","metadata":{"unresolvedName":"left.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:computeWordDiff","to":"external:right.push","kind":"calls","metadata":{"unresolvedName":"right.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:getDerivedStateFromError","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:getDerivedStateFromError","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:componentDidCatch","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:componentDidCatch","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:componentDidCatch","to":"external:console.error","kind":"calls","metadata":{"unresolvedName":"console.error"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:componentDidCatch","to":"external:this.setState","kind":"calls","metadata":{"unresolvedName":"this.setState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:","to":"external:navigator.clipboard.writeText","kind":"calls","metadata":{"unresolvedName":"navigator.clipboard.writeText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:","to":"external:window.location.reload","kind":"calls","metadata":{"unresolvedName":"window.location.reload"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:","to":"external:window.location.reload","kind":"calls","metadata":{"unresolvedName":"window.location.reload"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","to":"external:this.state.error?.toString","kind":"calls","metadata":{"unresolvedName":"this.state.error?.toString"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:getExtensionsMock.mockReset","kind":"calls","metadata":{"unresolvedName":"getExtensionsMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:installExtensionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"installExtensionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:removeExtensionPackageMock.mockReset","kind":"calls","metadata":{"unresolvedName":"removeExtensionPackageMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:vi.spyOn(window, 'confirm').mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'confirm').mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:getExtensionsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getExtensionsMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:installExtensionMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"installExtensionMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:removeExtensionPackageMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"removeExtensionPackageMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(screen.getByText('pi-hud')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('pi-hud')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(screen.getByText('(3)')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('(3)')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(screen.getAllByText('Active').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('Active').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:screen.getAllByText","kind":"calls","metadata":{"unresolvedName":"screen.getAllByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(screen.getAllByText('Inactive').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('Inactive').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(screen.getAllByText('Missing').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('Missing').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(screen.getByText('Persistent HUD extension')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('Persistent HUD extension')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(screen.getAllByText('Extensions 1').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('Extensions 1').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(screen.getByText('Skills 1')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('Skills 1')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(screen.getByText('index.ts')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('index.ts')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(installExtensionMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(installExtensionMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:screen.findByText","kind":"calls","metadata":{"unresolvedName":"screen.findByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(removeExtensionPackageMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(removeExtensionPackageMock).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:getExtensionsMock.mockReset","kind":"calls","metadata":{"unresolvedName":"getExtensionsMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:installExtensionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"installExtensionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:removeExtensionPackageMock.mockReset","kind":"calls","metadata":{"unresolvedName":"removeExtensionPackageMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:vi.spyOn(window, 'confirm').mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'confirm').mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:getExtensionsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getExtensionsMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:installExtensionMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"installExtensionMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:removeExtensionPackageMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"removeExtensionPackageMock.mockResolvedValue"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(screen.getByText('pi-hud')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('pi-hud')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(screen.getByText('(3)')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('(3)')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(screen.getAllByText('Active').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('Active').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:screen.getAllByText","kind":"calls","metadata":{"unresolvedName":"screen.getAllByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(screen.getAllByText('Inactive').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('Inactive').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(screen.getAllByText('Missing').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('Missing').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(screen.getByText('Persistent HUD extension')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('Persistent HUD extension')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(screen.getAllByText('Extensions 1').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('Extensions 1').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(screen.getByText('Skills 1')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('Skills 1')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(screen.getByText('index.ts')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('index.ts')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(installExtensionMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(installExtensionMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:screen.findByText","kind":"calls","metadata":{"unresolvedName":"screen.findByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.test.tsx:","to":"external:expect(removeExtensionPackageMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(removeExtensionPackageMock).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useDirectory","kind":"calls","metadata":{"unresolvedName":"useDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:getExtensions","kind":"calls","metadata":{"unresolvedName":"getExtensions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:setCatalog","kind":"calls","metadata":{"unresolvedName":"setCatalog"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:loadExtensions","kind":"calls","metadata":{"unresolvedName":"loadExtensions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:filter.trim().toLowerCase","kind":"calls","metadata":{"unresolvedName":"filter.trim().toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:filter.trim","kind":"calls","metadata":{"unresolvedName":"filter.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:catalog.packages.filter","kind":"calls","metadata":{"unresolvedName":"catalog.packages.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:value.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"value.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:value.toLowerCase","kind":"calls","metadata":{"unresolvedName":"value.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:scopes\n .map","kind":"calls","metadata":{"unresolvedName":"scopes\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:filteredPackages.filter","kind":"calls","metadata":{"unresolvedName":"filteredPackages.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:installCommand.trim","kind":"calls","metadata":{"unresolvedName":"installCommand.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:setActionLoading","kind":"calls","metadata":{"unresolvedName":"setActionLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:setActionError","kind":"calls","metadata":{"unresolvedName":"setActionError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:installExtension","kind":"calls","metadata":{"unresolvedName":"installExtension"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:setInstallCommand","kind":"calls","metadata":{"unresolvedName":"setInstallCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:setReloadRequired","kind":"calls","metadata":{"unresolvedName":"setReloadRequired"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:window.confirm","kind":"calls","metadata":{"unresolvedName":"window.confirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:removeExtensionPackage","kind":"calls","metadata":{"unresolvedName":"removeExtensionPackage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:setFilter","kind":"calls","metadata":{"unresolvedName":"setFilter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:groupedPackages.map","kind":"calls","metadata":{"unresolvedName":"groupedPackages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:group.packages.map","kind":"calls","metadata":{"unresolvedName":"group.packages.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:getExtensions","kind":"calls","metadata":{"unresolvedName":"getExtensions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:setCatalog","kind":"calls","metadata":{"unresolvedName":"setCatalog"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:loadExtensions","kind":"calls","metadata":{"unresolvedName":"loadExtensions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:filter.trim().toLowerCase","kind":"calls","metadata":{"unresolvedName":"filter.trim().toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:filter.trim","kind":"calls","metadata":{"unresolvedName":"filter.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:catalog.packages.filter","kind":"calls","metadata":{"unresolvedName":"catalog.packages.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:value.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"value.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:value.toLowerCase","kind":"calls","metadata":{"unresolvedName":"value.toLowerCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:scopes\n .map","kind":"calls","metadata":{"unresolvedName":"scopes\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:filteredPackages.filter","kind":"calls","metadata":{"unresolvedName":"filteredPackages.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:loadExtensions","kind":"calls","metadata":{"unresolvedName":"loadExtensions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:installCommand.trim","kind":"calls","metadata":{"unresolvedName":"installCommand.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:setActionLoading","kind":"calls","metadata":{"unresolvedName":"setActionLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:setActionError","kind":"calls","metadata":{"unresolvedName":"setActionError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:installExtension","kind":"calls","metadata":{"unresolvedName":"installExtension"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:setInstallCommand","kind":"calls","metadata":{"unresolvedName":"setInstallCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:setReloadRequired","kind":"calls","metadata":{"unresolvedName":"setReloadRequired"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:loadExtensions","kind":"calls","metadata":{"unresolvedName":"loadExtensions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"external:window.confirm","kind":"calls","metadata":{"unresolvedName":"window.confirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:setActionLoading","kind":"calls","metadata":{"unresolvedName":"setActionLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:setActionError","kind":"calls","metadata":{"unresolvedName":"setActionError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/extension.ts:removeExtensionPackage","kind":"calls","metadata":{"unresolvedName":"removeExtensionPackage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:setReloadRequired","kind":"calls","metadata":{"unresolvedName":"setReloadRequired"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:loadExtensions","kind":"calls","metadata":{"unresolvedName":"loadExtensions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:InstallCommandCard","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:InstallCommandCard","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:InstallCommandCard","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:InstallCommandCard","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:InstallCommandCard","to":"symbol-name:onCommandChange","kind":"calls","metadata":{"unresolvedName":"onCommandChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:InstallCommandCard","to":"external:command.trim","kind":"calls","metadata":{"unresolvedName":"command.trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:SummaryBar","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:SummaryBar","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:SummaryBar","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:SummaryBar","to":"external:STATUS_ORDER.map","kind":"calls","metadata":{"unresolvedName":"STATUS_ORDER.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:SummaryBar","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:ExtensionPackageCard","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:ExtensionPackageCard","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:ExtensionPackageCard","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:ExtensionPackageCard","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:countResources","kind":"calls","metadata":{"unresolvedName":"countResources"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:ExtensionPackageCard","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:ExtensionPackageCard","to":"symbol-name:Boolean","kind":"calls","metadata":{"unresolvedName":"Boolean"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:ExtensionPackageCard","to":"external:detailRows.join","kind":"calls","metadata":{"unresolvedName":"detailRows.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:ExtensionPackageCard","to":"symbol-name:onUninstall","kind":"calls","metadata":{"unresolvedName":"onUninstall"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:ExtensionPackageCard","to":"external:resourceCounts.map","kind":"calls","metadata":{"unresolvedName":"resourceCounts.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:ExtensionPackageCard","to":"external:extensionResources.map","kind":"calls","metadata":{"unresolvedName":"extensionResources.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:StatusBadge","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:StatusBadge","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:StatusBadge","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:StatusBadge","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:countResources","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:countResources","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ExtensionPanel.tsx:countResources","to":"external:(['extensions', 'skills', 'prompts', 'themes'] as const)\n .map","kind":"calls","metadata":{"unresolvedName":"(['extensions', 'skills', 'prompts', 'themes'] as const)\n .map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:isMarkdownPreview","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:isMarkdownPreview","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:isMarkdownPreview","to":"external:MARKDOWN_MIME_TYPES.has","kind":"calls","metadata":{"unresolvedName":"MARKDOWN_MIME_TYPES.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:isMarkdownPreview","to":"external:mimeType.split(';', 1)[0].toLowerCase","kind":"calls","metadata":{"unresolvedName":"mimeType.split(';', 1)[0].toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:isMarkdownPreview","to":"external:mimeType.split","kind":"calls","metadata":{"unresolvedName":"mimeType.split"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","kind":"calls","metadata":{"unresolvedName":"useVerticalSplitResize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","kind":"calls","metadata":{"unresolvedName":"useFileExplorer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:loadPreview","kind":"calls","metadata":{"unresolvedName":"loadPreview"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:clearPreview","kind":"calls","metadata":{"unresolvedName":"clearPreview"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:refresh","kind":"calls","metadata":{"unresolvedName":"refresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:toggleExpand","kind":"calls","metadata":{"unresolvedName":"toggleExpand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:layoutStore.openFilePreview","kind":"calls","metadata":{"unresolvedName":"layoutStore.openFilePreview"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:layoutStore.closeAllFilePreviews","kind":"calls","metadata":{"unresolvedName":"layoutStore.closeAllFilePreviews"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:resetSplitHeight","kind":"calls","metadata":{"unresolvedName":"resetSplitHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:layoutStore.activateFilePreview","kind":"calls","metadata":{"unresolvedName":"layoutStore.activateFilePreview"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:layoutStore.closeFilePreview","kind":"calls","metadata":{"unresolvedName":"layoutStore.closeFilePreview"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:layoutStore.reorderFilePreviews","kind":"calls","metadata":{"unresolvedName":"layoutStore.reorderFilePreviews"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:Boolean","kind":"calls","metadata":{"unresolvedName":"Boolean"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:getMaterialIconUrl","kind":"calls","metadata":{"unresolvedName":"getMaterialIconUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:tree.map","kind":"calls","metadata":{"unresolvedName":"tree.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:loadPreview","kind":"calls","metadata":{"unresolvedName":"loadPreview"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:clearPreview","kind":"calls","metadata":{"unresolvedName":"clearPreview"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:refresh","kind":"calls","metadata":{"unresolvedName":"refresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:loadPreview","kind":"calls","metadata":{"unresolvedName":"loadPreview"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:toggleExpand","kind":"calls","metadata":{"unresolvedName":"toggleExpand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:layoutStore.openFilePreview","kind":"calls","metadata":{"unresolvedName":"layoutStore.openFilePreview"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:layoutStore.closeAllFilePreviews","kind":"calls","metadata":{"unresolvedName":"layoutStore.closeAllFilePreviews"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:resetSplitHeight","kind":"calls","metadata":{"unresolvedName":"resetSplitHeight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:layoutStore.activateFilePreview","kind":"calls","metadata":{"unresolvedName":"layoutStore.activateFilePreview"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:layoutStore.closeFilePreview","kind":"calls","metadata":{"unresolvedName":"layoutStore.closeFilePreview"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:layoutStore.reorderFilePreviews","kind":"calls","metadata":{"unresolvedName":"layoutStore.reorderFilePreviews"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:expandedPaths.has","kind":"calls","metadata":{"unresolvedName":"expandedPaths.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:fileStatus.get","kind":"calls","metadata":{"unresolvedName":"fileStatus.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:node.path.replace","kind":"calls","metadata":{"unresolvedName":"node.path.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:e.dataTransfer.setData","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.setData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:onClick","kind":"calls","metadata":{"unresolvedName":"onClick"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:getMaterialIconUrl","kind":"calls","metadata":{"unresolvedName":"getMaterialIconUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:node.children.map","kind":"calls","metadata":{"unresolvedName":"node.children.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:e.dataTransfer.setData","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.setData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","to":"external:path?.split(/[/\\\\]/).pop","kind":"calls","metadata":{"unresolvedName":"path?.split(/[/\\\\]/).pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","to":"external:path?.split","kind":"calls","metadata":{"unresolvedName":"path?.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:detectLanguage","kind":"calls","metadata":{"unresolvedName":"detectLanguage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:downloadFileContent","kind":"calls","metadata":{"unresolvedName":"downloadFileContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","to":"external:previewFiles.map","kind":"calls","metadata":{"unresolvedName":"previewFiles.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:getPreviewCategory","kind":"calls","metadata":{"unresolvedName":"getPreviewCategory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:isMarkdownPreview","kind":"calls","metadata":{"unresolvedName":"isMarkdownPreview"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:isBinaryContent","kind":"calls","metadata":{"unresolvedName":"isBinaryContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:decodeBase64Text","kind":"calls","metadata":{"unresolvedName":"decodeBase64Text"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:isTextualMedia","kind":"calls","metadata":{"unresolvedName":"isTextualMedia"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:buildDataUrl","kind":"calls","metadata":{"unresolvedName":"buildDataUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:buildTextDataUrl","kind":"calls","metadata":{"unresolvedName":"buildTextDataUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:FilePreview","to":"symbol-name:setFullscreenOpen","kind":"calls","metadata":{"unresolvedName":"setFullscreenOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:downloadFileContent","kind":"calls","metadata":{"unresolvedName":"downloadFileContent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:getPreviewCategory","kind":"calls","metadata":{"unresolvedName":"getPreviewCategory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:isMarkdownPreview","kind":"calls","metadata":{"unresolvedName":"isMarkdownPreview"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:isBinaryContent","kind":"calls","metadata":{"unresolvedName":"isBinaryContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:decodeBase64Text","kind":"calls","metadata":{"unresolvedName":"decodeBase64Text"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:isTextualMedia","kind":"calls","metadata":{"unresolvedName":"isTextualMedia"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:buildDataUrl","kind":"calls","metadata":{"unresolvedName":"buildDataUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:buildTextDataUrl","kind":"calls","metadata":{"unresolvedName":"buildTextDataUrl"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:MediaPreview","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:MediaPreview","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:MediaPreview","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:formatMimeType","kind":"calls","metadata":{"unresolvedName":"formatMimeType"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"external:el.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"el.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"symbol-name:computeFitScale","kind":"calls","metadata":{"unresolvedName":"computeFitScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"symbol-name:setFitScale","kind":"calls","metadata":{"unresolvedName":"setFitScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"symbol-name:setScale","kind":"calls","metadata":{"unresolvedName":"setScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"symbol-name:setTranslate","kind":"calls","metadata":{"unresolvedName":"setTranslate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"symbol-name:setInitialized","kind":"calls","metadata":{"unresolvedName":"setInitialized"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:updateFitScale","kind":"calls","metadata":{"unresolvedName":"updateFitScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"external:resizeObserver.observe","kind":"calls","metadata":{"unresolvedName":"resizeObserver.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"external:resizeObserver.disconnect","kind":"calls","metadata":{"unresolvedName":"resizeObserver.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"external:el.addEventListener","kind":"calls","metadata":{"unresolvedName":"el.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"external:el.removeEventListener","kind":"calls","metadata":{"unresolvedName":"el.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:ImagePreview","to":"symbol-name:setNaturalSize","kind":"calls","metadata":{"unresolvedName":"setNaturalSize"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:el.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"el.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:computeFitScale","kind":"calls","metadata":{"unresolvedName":"computeFitScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:setFitScale","kind":"calls","metadata":{"unresolvedName":"setFitScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:setScale","kind":"calls","metadata":{"unresolvedName":"setScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:setTranslate","kind":"calls","metadata":{"unresolvedName":"setTranslate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:setInitialized","kind":"calls","metadata":{"unresolvedName":"setInitialized"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:updateFitScale","kind":"calls","metadata":{"unresolvedName":"updateFitScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:resizeObserver.observe","kind":"calls","metadata":{"unresolvedName":"resizeObserver.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:resizeObserver.disconnect","kind":"calls","metadata":{"unresolvedName":"resizeObserver.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:updateFitScale","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:updateFitScale","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:updateFitScale","to":"symbol-name:computeFitScale","kind":"calls","metadata":{"unresolvedName":"computeFitScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:updateFitScale","to":"symbol-name:setFitScale","kind":"calls","metadata":{"unresolvedName":"setFitScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:updateFitScale","to":"symbol-name:setScale","kind":"calls","metadata":{"unresolvedName":"setScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:updateFitScale","to":"symbol-name:setTranslate","kind":"calls","metadata":{"unresolvedName":"setTranslate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:updateFitScale","to":"symbol-name:setInitialized","kind":"calls","metadata":{"unresolvedName":"setInitialized"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:resizeObserver.disconnect","kind":"calls","metadata":{"unresolvedName":"resizeObserver.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:el.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"el.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:setScale","kind":"calls","metadata":{"unresolvedName":"setScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:setTranslate","kind":"calls","metadata":{"unresolvedName":"setTranslate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:el.addEventListener","kind":"calls","metadata":{"unresolvedName":"el.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:el.removeEventListener","kind":"calls","metadata":{"unresolvedName":"el.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:handler","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:handler","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:handler","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:handler","to":"external:el.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"el.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:handler","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:handler","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:handler","to":"symbol-name:setScale","kind":"calls","metadata":{"unresolvedName":"setScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:handler","to":"symbol-name:setTranslate","kind":"calls","metadata":{"unresolvedName":"setTranslate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:setTranslate","kind":"calls","metadata":{"unresolvedName":"setTranslate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:onMove","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:onMove","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:onMove","to":"symbol-name:setTranslate","kind":"calls","metadata":{"unresolvedName":"setTranslate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:onUp","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:onUp","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:setScale","kind":"calls","metadata":{"unresolvedName":"setScale"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:setScale","kind":"calls","metadata":{"unresolvedName":"setScale"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:setScale","kind":"calls","metadata":{"unresolvedName":"setScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:setTranslate","kind":"calls","metadata":{"unresolvedName":"setTranslate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:setScale","kind":"calls","metadata":{"unresolvedName":"setScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:setTranslate","kind":"calls","metadata":{"unresolvedName":"setTranslate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"symbol-name:setNaturalSize","kind":"calls","metadata":{"unresolvedName":"setNaturalSize"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:TextMediaPreview","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:TextMediaPreview","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:TextMediaPreview","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:TextMediaPreview","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:TextMediaPreview","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:setMode","kind":"calls","metadata":{"unresolvedName":"setMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:TextMediaPreview","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:MarkdownFilePreview","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:MarkdownFilePreview","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:MarkdownFilePreview","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:MarkdownFilePreview","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:MarkdownFilePreview","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:setMode","kind":"calls","metadata":{"unresolvedName":"setMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:MarkdownFilePreview","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:BinaryPlaceholder","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:BinaryPlaceholder","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:BinaryPlaceholder","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:BinaryPlaceholder","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:getMaterialIconUrl","kind":"calls","metadata":{"unresolvedName":"getMaterialIconUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:BinaryPlaceholder","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:formatMimeType","kind":"calls","metadata":{"unresolvedName":"formatMimeType"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:BinaryPlaceholder","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:DiffPreview","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:DiffPreview","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:DiffPreview","to":"external:hunks.map","kind":"calls","metadata":{"unresolvedName":"hunks.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:DiffPreview","to":"external:hunk.lines.map","kind":"calls","metadata":{"unresolvedName":"hunk.lines.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:DiffPreview","to":"external:line.slice","kind":"calls","metadata":{"unresolvedName":"line.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FileExplorer.tsx:","to":"external:line.slice","kind":"calls","metadata":{"unresolvedName":"line.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:usesCustomDesktopTitlebarMock.mockReset","kind":"calls","metadata":{"unresolvedName":"usesCustomDesktopTitlebarMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:usesCustomDesktopTitlebarMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"usesCustomDesktopTitlebarMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:expect(screen.getByRole('dialog')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('dialog')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:expect(screen.getByText('app.ts')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('app.ts')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:expect(screen.getByTestId('content')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByTestId('content')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:expect(screen.queryByRole('dialog')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByRole('dialog')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:screen.queryByRole","kind":"calls","metadata":{"unresolvedName":"screen.queryByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:expect(screen.queryByText('closeEsc')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByText('closeEsc')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:screen.queryByText","kind":"calls","metadata":{"unresolvedName":"screen.queryByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:expect(screen.getByRole('dialog')).toHaveStyle","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('dialog')).toHaveStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:usesCustomDesktopTitlebarMock.mockReset","kind":"calls","metadata":{"unresolvedName":"usesCustomDesktopTitlebarMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:usesCustomDesktopTitlebarMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"usesCustomDesktopTitlebarMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:expect(screen.getByRole('dialog')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('dialog')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:expect(screen.getByText('app.ts')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('app.ts')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:expect(screen.getByTestId('content')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByTestId('content')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:expect(screen.queryByRole('dialog')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByRole('dialog')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:screen.queryByRole","kind":"calls","metadata":{"unresolvedName":"screen.queryByRole"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:expect(screen.getByRole('dialog')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('dialog')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:expect(screen.getByTestId('content')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByTestId('content')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:expect(screen.queryByText('closeEsc')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByText('closeEsc')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:screen.queryByText","kind":"calls","metadata":{"unresolvedName":"screen.queryByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:usesCustomDesktopTitlebarMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"usesCustomDesktopTitlebarMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:expect(screen.getByRole('dialog')).toHaveStyle","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('dialog')).toHaveStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ModalShell.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:usesCustomDesktopTitlebar","kind":"calls","metadata":{"unresolvedName":"usesCustomDesktopTitlebar"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:DeferredFullscreenContent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:DeferredFullscreenContent","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:DeferredFullscreenContent","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:DeferredFullscreenContent","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:DeferredFullscreenContent","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:DeferredFullscreenContent","to":"symbol-name:setShouldRender","kind":"calls","metadata":{"unresolvedName":"setShouldRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:DeferredFullscreenContent","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:","to":"symbol-name:setShouldRender","kind":"calls","metadata":{"unresolvedName":"setShouldRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:","to":"symbol-name:setShouldRender","kind":"calls","metadata":{"unresolvedName":"setShouldRender"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:ViewModeSwitch","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:ViewModeSwitch","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:ViewModeSwitch","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:ViewModeSwitch","to":"symbol-name:onChange","kind":"calls","metadata":{"unresolvedName":"onChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx:ViewModeSwitch","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","to":"external:lucide-react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","to":"external:lucide-react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx:wrap","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx:wrap","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(screen.getByRole('heading', { name: 'Title' })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('heading', { name: 'Title' })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(codeEl).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(codeEl).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(codeEl.tagName).toBe","kind":"calls","metadata":{"unresolvedName":"expect(codeEl.tagName).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(codeEl.className).not.toMatch","kind":"calls","metadata":{"unresolvedName":"expect(codeEl.className).not.toMatch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(codeEl.className).toMatch","kind":"calls","metadata":{"unresolvedName":"expect(codeEl.className).toMatch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(screen.getByTestId('code-block')).toHaveTextContent","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByTestId('code-block')).toHaveTextContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(screen.getByRole('paragraph')).toHaveTextContent","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('paragraph')).toHaveTextContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(heading.className).toMatch","kind":"calls","metadata":{"unresolvedName":"expect(heading.className).toMatch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(paragraph.className).toMatch","kind":"calls","metadata":{"unresolvedName":"expect(paragraph.className).toMatch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(block.dataset.variant).toBe","kind":"calls","metadata":{"unresolvedName":"expect(block.dataset.variant).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(screen.getByRole('table')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('table')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(screen.getByTestId('copy-button')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByTestId('copy-button')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(screen.queryByTestId('copy-button')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByTestId('copy-button')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:screen.queryByTestId","kind":"calls","metadata":{"unresolvedName":"screen.queryByTestId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(img).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(img).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(img.tagName).toBe","kind":"calls","metadata":{"unresolvedName":"expect(img.tagName).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(screen.queryByTitle('Download image')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByTitle('Download image')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:screen.queryByTitle","kind":"calls","metadata":{"unresolvedName":"screen.queryByTitle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(screen.getByRole('heading', { name: 'Title' })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('heading', { name: 'Title' })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(codeEl).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(codeEl).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(codeEl.tagName).toBe","kind":"calls","metadata":{"unresolvedName":"expect(codeEl.tagName).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(codeEl.className).not.toMatch","kind":"calls","metadata":{"unresolvedName":"expect(codeEl.className).not.toMatch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(codeEl.className).toMatch","kind":"calls","metadata":{"unresolvedName":"expect(codeEl.className).toMatch"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(screen.getByTestId('code-block')).toHaveTextContent","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByTestId('code-block')).toHaveTextContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(screen.getByRole('paragraph')).toHaveTextContent","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('paragraph')).toHaveTextContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(heading.className).toMatch","kind":"calls","metadata":{"unresolvedName":"expect(heading.className).toMatch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(paragraph.className).toMatch","kind":"calls","metadata":{"unresolvedName":"expect(paragraph.className).toMatch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(codeEl.className).not.toMatch","kind":"calls","metadata":{"unresolvedName":"expect(codeEl.className).not.toMatch"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(block.dataset.variant).toBe","kind":"calls","metadata":{"unresolvedName":"expect(block.dataset.variant).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(block.dataset.variant).toBe","kind":"calls","metadata":{"unresolvedName":"expect(block.dataset.variant).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(screen.getByRole('table')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('table')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(screen.getByTestId('copy-button')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByTestId('copy-button')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(screen.getByRole('table')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('table')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(screen.queryByTestId('copy-button')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByTestId('copy-button')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:screen.queryByTestId","kind":"calls","metadata":{"unresolvedName":"screen.queryByTestId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(img).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(img).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(img.tagName).toBe","kind":"calls","metadata":{"unresolvedName":"expect(img.tagName).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:expect(screen.queryByTitle('Download image')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByTitle('Download image')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.test.tsx:","to":"external:screen.queryByTitle","kind":"calls","metadata":{"unresolvedName":"screen.queryByTitle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"external:streamdown","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"external:@streamdown/math","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractText","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractText","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractText","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractText","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractText","to":"external:node.map(extractText).join","kind":"calls","metadata":{"unresolvedName":"node.map(extractText).join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractText","to":"external:node.map","kind":"calls","metadata":{"unresolvedName":"node.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractText","to":"symbol-name:isValidElement","kind":"calls","metadata":{"unresolvedName":"isValidElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractText","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractText","kind":"calls","metadata":{"unresolvedName":"extractText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractBlockCode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractBlockCode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractBlockCode","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractBlockCode","to":"symbol-name:isValidElement","kind":"calls","metadata":{"unresolvedName":"isValidElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractBlockCode","to":"external:/language-([\\w-]+)/.exec","kind":"calls","metadata":{"unresolvedName":"/language-([\\w-]+)/.exec"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractBlockCode","to":"external:extractText(props.children).replace","kind":"calls","metadata":{"unresolvedName":"extractText(props.children).replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractBlockCode","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractText","kind":"calls","metadata":{"unresolvedName":"extractText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractTableData","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractTableData","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractTableData","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractTableData","to":"symbol-name:isValidElement","kind":"calls","metadata":{"unresolvedName":"isValidElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractTableData","to":"external:cells\r\n .filter(isValidElement)\r\n .map","kind":"calls","metadata":{"unresolvedName":"cells\r\n .filter(isValidElement)\r\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractTableData","to":"external:cells\r\n .filter","kind":"calls","metadata":{"unresolvedName":"cells\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractTableData","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractText","kind":"calls","metadata":{"unresolvedName":"extractText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractTableData","to":"external:String(sectionType).toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"String(sectionType).toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractTableData","to":"external:String(sectionType).toLowerCase","kind":"calls","metadata":{"unresolvedName":"String(sectionType).toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractTableData","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractTableData","to":"external:headers.push","kind":"calls","metadata":{"unresolvedName":"headers.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractTableData","to":"external:rows.push","kind":"calls","metadata":{"unresolvedName":"rows.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:tableToMarkdown","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:tableToMarkdown","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:tableToMarkdown","to":"external:headers.map","kind":"calls","metadata":{"unresolvedName":"headers.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:tableToMarkdown","to":"external:headers.join","kind":"calls","metadata":{"unresolvedName":"headers.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:tableToMarkdown","to":"external:sep.join","kind":"calls","metadata":{"unresolvedName":"sep.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:tableToMarkdown","to":"external:rows.map","kind":"calls","metadata":{"unresolvedName":"rows.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:tableToMarkdown","to":"external:r.join","kind":"calls","metadata":{"unresolvedName":"r.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:tableToMarkdown","to":"external:lines.join","kind":"calls","metadata":{"unresolvedName":"lines.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:injectTableCopyButton","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:injectTableCopyButton","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:injectTableCopyButton","to":"external:Children.map","kind":"calls","metadata":{"unresolvedName":"Children.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:injectTableCopyButton","to":"symbol-name:isValidElement","kind":"calls","metadata":{"unresolvedName":"isValidElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:injectTableCopyButton","to":"external:String(sectionType).toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"String(sectionType).toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:injectTableCopyButton","to":"external:String(sectionType).toLowerCase","kind":"calls","metadata":{"unresolvedName":"String(sectionType).toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:injectTableCopyButton","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:injectTableCopyButton","to":"external:Children.toArray","kind":"calls","metadata":{"unresolvedName":"Children.toArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:injectTableCopyButton","to":"symbol-name:cloneElement","kind":"calls","metadata":{"unresolvedName":"cloneElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:injectTableCopyButton","to":"external:rows.map","kind":"calls","metadata":{"unresolvedName":"rows.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:injectTableCopyButton","to":"external:cells.map","kind":"calls","metadata":{"unresolvedName":"cells.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"symbol-name:isValidElement","kind":"calls","metadata":{"unresolvedName":"isValidElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"external:String(sectionType).toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"String(sectionType).toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"external:String(sectionType).toLowerCase","kind":"calls","metadata":{"unresolvedName":"String(sectionType).toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"external:Children.toArray","kind":"calls","metadata":{"unresolvedName":"Children.toArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"symbol-name:cloneElement","kind":"calls","metadata":{"unresolvedName":"cloneElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"external:rows.map","kind":"calls","metadata":{"unresolvedName":"rows.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"external:cells.map","kind":"calls","metadata":{"unresolvedName":"cells.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"symbol-name:isValidElement","kind":"calls","metadata":{"unresolvedName":"isValidElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"external:Children.toArray","kind":"calls","metadata":{"unresolvedName":"Children.toArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"symbol-name:cloneElement","kind":"calls","metadata":{"unresolvedName":"cloneElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"external:cells.map","kind":"calls","metadata":{"unresolvedName":"cells.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"symbol-name:isValidElement","kind":"calls","metadata":{"unresolvedName":"isValidElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"symbol-name:cloneElement","kind":"calls","metadata":{"unresolvedName":"cloneElement"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractTableData","kind":"calls","metadata":{"unresolvedName":"extractTableData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:tableToMarkdown","kind":"calls","metadata":{"unresolvedName":"tableToMarkdown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:injectTableCopyButton","kind":"calls","metadata":{"unresolvedName":"injectTableCopyButton"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractTableData","kind":"calls","metadata":{"unresolvedName":"extractTableData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:tableToMarkdown","kind":"calls","metadata":{"unresolvedName":"tableToMarkdown"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:injectTableCopyButton","kind":"calls","metadata":{"unresolvedName":"injectTableCopyButton"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractBlockCode","kind":"calls","metadata":{"unresolvedName":"extractBlockCode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:inlineCode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:inlineCode","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:pre","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:pre","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:pre","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:extractBlockCode","kind":"calls","metadata":{"unresolvedName":"extractBlockCode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:detectLanguage","kind":"calls","metadata":{"unresolvedName":"detectLanguage"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:detectLanguage","kind":"calls","metadata":{"unresolvedName":"detectLanguage"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/mcp.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/logger.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useDirectory","kind":"calls","metadata":{"unresolvedName":"useDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:getMcpStatus","kind":"calls","metadata":{"unresolvedName":"getMcpStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:logger.log","kind":"calls","metadata":{"unresolvedName":"logger.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:Object.entries(statusResponse.servers).map","kind":"calls","metadata":{"unresolvedName":"Object.entries(statusResponse.servers).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:Object.entries","kind":"calls","metadata":{"unresolvedName":"Object.entries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:entries.sort","kind":"calls","metadata":{"unresolvedName":"entries.sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:a.name.localeCompare","kind":"calls","metadata":{"unresolvedName":"a.name.localeCompare"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setServers","kind":"calls","metadata":{"unresolvedName":"setServers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:loadStatus","kind":"calls","metadata":{"unresolvedName":"loadStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setActionLoading","kind":"calls","metadata":{"unresolvedName":"setActionLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:connectMcpServer","kind":"calls","metadata":{"unresolvedName":"connectMcpServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:disconnectMcpServer","kind":"calls","metadata":{"unresolvedName":"disconnectMcpServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:authenticateMcp","kind":"calls","metadata":{"unresolvedName":"authenticateMcp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:startMcpAuth","kind":"calls","metadata":{"unresolvedName":"startMcpAuth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:(await import('../utils/tauri')).isTauri","kind":"calls","metadata":{"unresolvedName":"(await import('../utils/tauri')).isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:import('@tauri-apps/plugin-opener')\n .then","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/plugin-opener')\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:mod.openUrl","kind":"calls","metadata":{"unresolvedName":"mod.openUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:window.open","kind":"calls","metadata":{"unresolvedName":"window.open"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:addMcpServer","kind":"calls","metadata":{"unresolvedName":"addMcpServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setShowAddForm","kind":"calls","metadata":{"unresolvedName":"setShowAddForm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:servers.map","kind":"calls","metadata":{"unresolvedName":"servers.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:getMcpStatus","kind":"calls","metadata":{"unresolvedName":"getMcpStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:logger.log","kind":"calls","metadata":{"unresolvedName":"logger.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:Object.entries(statusResponse.servers).map","kind":"calls","metadata":{"unresolvedName":"Object.entries(statusResponse.servers).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:Object.entries","kind":"calls","metadata":{"unresolvedName":"Object.entries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:entries.sort","kind":"calls","metadata":{"unresolvedName":"entries.sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:a.name.localeCompare","kind":"calls","metadata":{"unresolvedName":"a.name.localeCompare"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setServers","kind":"calls","metadata":{"unresolvedName":"setServers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:loadStatus","kind":"calls","metadata":{"unresolvedName":"loadStatus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:loadStatus","kind":"calls","metadata":{"unresolvedName":"loadStatus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setActionLoading","kind":"calls","metadata":{"unresolvedName":"setActionLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:connectMcpServer","kind":"calls","metadata":{"unresolvedName":"connectMcpServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:loadStatus","kind":"calls","metadata":{"unresolvedName":"loadStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setActionLoading","kind":"calls","metadata":{"unresolvedName":"setActionLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:disconnectMcpServer","kind":"calls","metadata":{"unresolvedName":"disconnectMcpServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:loadStatus","kind":"calls","metadata":{"unresolvedName":"loadStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setActionLoading","kind":"calls","metadata":{"unresolvedName":"setActionLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:authenticateMcp","kind":"calls","metadata":{"unresolvedName":"authenticateMcp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:loadStatus","kind":"calls","metadata":{"unresolvedName":"loadStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:startMcpAuth","kind":"calls","metadata":{"unresolvedName":"startMcpAuth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:(await import('../utils/tauri')).isTauri","kind":"calls","metadata":{"unresolvedName":"(await import('../utils/tauri')).isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:import('@tauri-apps/plugin-opener')\n .then","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/plugin-opener')\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:mod.openUrl","kind":"calls","metadata":{"unresolvedName":"mod.openUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:window.open","kind":"calls","metadata":{"unresolvedName":"window.open"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setActionLoading","kind":"calls","metadata":{"unresolvedName":"setActionLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/mcp.ts:addMcpServer","kind":"calls","metadata":{"unresolvedName":"addMcpServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setShowAddForm","kind":"calls","metadata":{"unresolvedName":"setShowAddForm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:loadStatus","kind":"calls","metadata":{"unresolvedName":"loadStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:name.trim","kind":"calls","metadata":{"unresolvedName":"name.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:command.trim","kind":"calls","metadata":{"unresolvedName":"command.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:command.trim().split","kind":"calls","metadata":{"unresolvedName":"command.trim().split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:cmdParts.slice","kind":"calls","metadata":{"unresolvedName":"cmdParts.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:onSubmit","kind":"calls","metadata":{"unresolvedName":"onSubmit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:url.trim","kind":"calls","metadata":{"unresolvedName":"url.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setServerType","kind":"calls","metadata":{"unresolvedName":"setServerType"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setName","kind":"calls","metadata":{"unresolvedName":"setName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setCommand","kind":"calls","metadata":{"unresolvedName":"setCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setUrl","kind":"calls","metadata":{"unresolvedName":"setUrl"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:handleSubmit","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:handleSubmit","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:handleSubmit","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:handleSubmit","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:handleSubmit","to":"external:name.trim","kind":"calls","metadata":{"unresolvedName":"name.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:handleSubmit","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:handleSubmit","to":"external:command.trim","kind":"calls","metadata":{"unresolvedName":"command.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:handleSubmit","to":"external:command.trim().split","kind":"calls","metadata":{"unresolvedName":"command.trim().split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:handleSubmit","to":"external:cmdParts.slice","kind":"calls","metadata":{"unresolvedName":"cmdParts.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:handleSubmit","to":"symbol-name:onSubmit","kind":"calls","metadata":{"unresolvedName":"onSubmit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:handleSubmit","to":"external:url.trim","kind":"calls","metadata":{"unresolvedName":"url.trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:getErrorMessage","kind":"calls","metadata":{"unresolvedName":"getErrorMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:getStatusInfo","kind":"calls","metadata":{"unresolvedName":"getStatusInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:onDisconnect","kind":"calls","metadata":{"unresolvedName":"onDisconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:onConnect","kind":"calls","metadata":{"unresolvedName":"onConnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:onAuth","kind":"calls","metadata":{"unresolvedName":"onAuth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:getStatusDotColor","kind":"calls","metadata":{"unresolvedName":"getStatusDotColor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:renderActions","kind":"calls","metadata":{"unresolvedName":"renderActions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:status.args?.join","kind":"calls","metadata":{"unresolvedName":"status.args?.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:getErrorMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:getErrorMessage","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:getStatusInfo","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:getStatusInfo","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:getStatusInfo","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:renderActions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:renderActions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:renderActions","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:renderActions","to":"symbol-name:onDisconnect","kind":"calls","metadata":{"unresolvedName":"onDisconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:renderActions","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:renderActions","to":"symbol-name:onConnect","kind":"calls","metadata":{"unresolvedName":"onConnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:renderActions","to":"symbol-name:onAuth","kind":"calls","metadata":{"unresolvedName":"onAuth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:onDisconnect","kind":"calls","metadata":{"unresolvedName":"onDisconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:onConnect","kind":"calls","metadata":{"unresolvedName":"onConnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:","to":"symbol-name:onAuth","kind":"calls","metadata":{"unresolvedName":"onAuth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:getStatusDotColor","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/McpPanel.tsx:getStatusDotColor","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:cosineStrength","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:cosineStrength","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:cosineStrength","to":"external:Math.cos","kind":"calls","metadata":{"unresolvedName":"Math.cos"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:smoothStep","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:smoothStep","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:smoothStep","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:queryCachedItems","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:queryCachedItems","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:queryCachedItems","to":"external:Array.from(container.querySelectorAll(ITEM_SEL))\r\n .map","kind":"calls","metadata":{"unresolvedName":"Array.from(container.querySelectorAll(ITEM_SEL))\r\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:queryCachedItems","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:queryCachedItems","to":"external:container.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"container.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:queryCachedItems","to":"external:el.querySelector","kind":"calls","metadata":{"unresolvedName":"el.querySelector"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:applyFisheye","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:applyFisheye","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:applyFisheye","to":"external:items[i].el.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"items[i].el.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:applyFisheye","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:cosineStrength","kind":"calls","metadata":{"unresolvedName":"cosineStrength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:applyFisheye","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:applyFisheye","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:smoothStep","kind":"calls","metadata":{"unresolvedName":"smoothStep"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:applyFisheye","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:truncate","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:truncate","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:truncate","to":"external:s.slice","kind":"calls","metadata":{"unresolvedName":"s.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:normalizeWhitespace","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:normalizeWhitespace","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:normalizeWhitespace","to":"external:s.replace(/\\s+/g, ' ').trim","kind":"calls","metadata":{"unresolvedName":"s.replace(/\\s+/g, ' ').trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:normalizeWhitespace","to":"external:s.replace","kind":"calls","metadata":{"unresolvedName":"s.replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:messageHasContent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:messageHasContent","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:messageHasContent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:hasRenderableParts","kind":"calls","metadata":{"unresolvedName":"hasRenderableParts"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:messageHasContent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isAbortedMessage","kind":"calls","metadata":{"unresolvedName":"isAbortedMessage"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:extractEntries","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:extractEntries","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:extractEntries","to":"external:messages.filter","kind":"calls","metadata":{"unresolvedName":"messages.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:extractEntries","to":"symbol-name:isUserMessage","kind":"calls","metadata":{"unresolvedName":"isUserMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:extractEntries","to":"external:msg.info.summary?.title?.trim","kind":"calls","metadata":{"unresolvedName":"msg.info.summary?.title?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:extractEntries","to":"external:getMessageText(msg)\r\n .trim()\r\n .split(/\\r?\\n/)\r\n .map","kind":"calls","metadata":{"unresolvedName":"getMessageText(msg)\r\n .trim()\r\n .split(/\\r?\\n/)\r\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:extractEntries","to":"external:getMessageText(msg)\r\n .trim()\r\n .split","kind":"calls","metadata":{"unresolvedName":"getMessageText(msg)\r\n .trim()\r\n .split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:extractEntries","to":"external:getMessageText(msg)\r\n .trim","kind":"calls","metadata":{"unresolvedName":"getMessageText(msg)\r\n .trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:extractEntries","to":"symbol-name:getMessageText","kind":"calls","metadata":{"unresolvedName":"getMessageText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:extractEntries","to":"external:l.trim","kind":"calls","metadata":{"unresolvedName":"l.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:extractEntries","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:normalizeWhitespace","kind":"calls","metadata":{"unresolvedName":"normalizeWhitespace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:extractEntries","to":"external:entries.push","kind":"calls","metadata":{"unresolvedName":"entries.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:extractEntries","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:truncate","kind":"calls","metadata":{"unresolvedName":"truncate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:sliceAroundVisible","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:sliceAroundVisible","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:sliceAroundVisible","to":"external:visibleSet.has","kind":"calls","metadata":{"unresolvedName":"visibleSet.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:sliceAroundVisible","to":"external:entries.slice","kind":"calls","metadata":{"unresolvedName":"entries.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:sliceAroundVisible","to":"external:Math.floor","kind":"calls","metadata":{"unresolvedName":"Math.floor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:sliceAroundVisible","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:TickRail","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:TickRail","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:TickRail","to":"external:entries.map","kind":"calls","metadata":{"unresolvedName":"entries.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewport","kind":"calls","metadata":{"unresolvedName":"useChatViewport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:extractEntries","kind":"calls","metadata":{"unresolvedName":"extractEntries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:sliceAroundVisible","kind":"calls","metadata":{"unresolvedName":"sliceAroundVisible"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"external:entries.map","kind":"calls","metadata":{"unresolvedName":"entries.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:queryCachedItems","kind":"calls","metadata":{"unresolvedName":"queryCachedItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:applyFisheye","kind":"calls","metadata":{"unresolvedName":"applyFisheye"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:getItems","kind":"calls","metadata":{"unresolvedName":"getItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:setZoneActive","kind":"calls","metadata":{"unresolvedName":"setZoneActive"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:kick","kind":"calls","metadata":{"unresolvedName":"kick"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:deactivate","kind":"calls","metadata":{"unresolvedName":"deactivate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"external:entries.map","kind":"calls","metadata":{"unresolvedName":"entries.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:queryCachedItems","kind":"calls","metadata":{"unresolvedName":"queryCachedItems"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:applyFisheye","kind":"calls","metadata":{"unresolvedName":"applyFisheye"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:getItems","kind":"calls","metadata":{"unresolvedName":"getItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:setZoneActive","kind":"calls","metadata":{"unresolvedName":"setZoneActive"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:kick","kind":"calls","metadata":{"unresolvedName":"kick"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:setZoneActive","kind":"calls","metadata":{"unresolvedName":"setZoneActive"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:kick","kind":"calls","metadata":{"unresolvedName":"kick"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:deactivate","kind":"calls","metadata":{"unresolvedName":"deactivate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"external:entries.map","kind":"calls","metadata":{"unresolvedName":"entries.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:queryCachedItems","kind":"calls","metadata":{"unresolvedName":"queryCachedItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"external:bridge.vibrate","kind":"calls","metadata":{"unresolvedName":"bridge.vibrate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"external:navigator.vibrate","kind":"calls","metadata":{"unresolvedName":"navigator.vibrate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:applyFisheye","kind":"calls","metadata":{"unresolvedName":"applyFisheye"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:getItems","kind":"calls","metadata":{"unresolvedName":"getItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:vibrate","kind":"calls","metadata":{"unresolvedName":"vibrate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:setOverlayVisible","kind":"calls","metadata":{"unresolvedName":"setOverlayVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"external:kickRef.current","kind":"calls","metadata":{"unresolvedName":"kickRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"external:onSelectRef.current","kind":"calls","metadata":{"unresolvedName":"onSelectRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"external:el.addEventListener","kind":"calls","metadata":{"unresolvedName":"el.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"external:el.removeEventListener","kind":"calls","metadata":{"unresolvedName":"el.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"external:entries.map","kind":"calls","metadata":{"unresolvedName":"entries.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:queryCachedItems","kind":"calls","metadata":{"unresolvedName":"queryCachedItems"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"external:bridge.vibrate","kind":"calls","metadata":{"unresolvedName":"bridge.vibrate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"external:navigator.vibrate","kind":"calls","metadata":{"unresolvedName":"navigator.vibrate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:applyFisheye","kind":"calls","metadata":{"unresolvedName":"applyFisheye"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:getItems","kind":"calls","metadata":{"unresolvedName":"getItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:vibrate","kind":"calls","metadata":{"unresolvedName":"vibrate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:setOverlayVisible","kind":"calls","metadata":{"unresolvedName":"setOverlayVisible"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"symbol-name:setOverlayVisible","kind":"calls","metadata":{"unresolvedName":"setOverlayVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"external:kickRef.current","kind":"calls","metadata":{"unresolvedName":"kickRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"external:onSelectRef.current","kind":"calls","metadata":{"unresolvedName":"onSelectRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"external:el.addEventListener","kind":"calls","metadata":{"unresolvedName":"el.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"external:el.removeEventListener","kind":"calls","metadata":{"unresolvedName":"el.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:onStart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:onStart","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:onStart","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:onStart","to":"symbol-name:setOverlayVisible","kind":"calls","metadata":{"unresolvedName":"setOverlayVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:onStart","to":"external:kickRef.current","kind":"calls","metadata":{"unresolvedName":"kickRef.current"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:onMove","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:onMove","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:onMove","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:onEnd","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:onEnd","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:onEnd","to":"external:onSelectRef.current","kind":"calls","metadata":{"unresolvedName":"onSelectRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:onEnd","to":"external:kickRef.current","kind":"calls","metadata":{"unresolvedName":"kickRef.current"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx:","to":"external:el.removeEventListener","kind":"calls","metadata":{"unresolvedName":"el.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"external:react-dom","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:getTabLabel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:getTabLabel","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:getTabLabel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:getTabLabel","to":"external:tabs.filter","kind":"calls","metadata":{"unresolvedName":"tabs.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:getTabLabel","to":"external:fileTabs.findIndex","kind":"calls","metadata":{"unresolvedName":"fileTabs.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:getTabLabel","to":"external:changesTabs.findIndex","kind":"calls","metadata":{"unresolvedName":"changesTabs.findIndex"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","kind":"calls","metadata":{"unresolvedName":"useTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"calls","metadata":{"unresolvedName":"useLayoutStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layout.panelTabs.filter","kind":"calls","metadata":{"unresolvedName":"layout.panelTabs.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:tabs.find","kind":"calls","metadata":{"unresolvedName":"tabs.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:addMenuRef.current.contains","kind":"calls","metadata":{"unresolvedName":"addMenuRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:addButtonRef.current.contains","kind":"calls","metadata":{"unresolvedName":"addButtonRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setAddMenuPos","kind":"calls","metadata":{"unresolvedName":"setAddMenuPos"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:contextMenuRef.current.contains","kind":"calls","metadata":{"unresolvedName":"contextMenuRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setContextMenu","kind":"calls","metadata":{"unresolvedName":"setContextMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setEditingTabId","kind":"calls","metadata":{"unresolvedName":"setEditingTabId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:tabs.some","kind":"calls","metadata":{"unresolvedName":"tabs.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:renameInputRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"renameInputRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:renameInputRef.current?.select","kind":"calls","metadata":{"unresolvedName":"renameInputRef.current?.select"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.closeBottomPanel","kind":"calls","metadata":{"unresolvedName":"layoutStore.closeBottomPanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.closeRightPanel","kind":"calls","metadata":{"unresolvedName":"layoutStore.closeRightPanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.setActiveTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.setActiveTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:onCloseTerminal","kind":"calls","metadata":{"unresolvedName":"onCloseTerminal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.removeTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.removeTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.moveTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.moveTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setEditingValue","kind":"calls","metadata":{"unresolvedName":"setEditingValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:editingValue.trim","kind":"calls","metadata":{"unresolvedName":"editingValue.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:cancelRename","kind":"calls","metadata":{"unresolvedName":"cancelRename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:updatePtySession","kind":"calls","metadata":{"unresolvedName":"updatePtySession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.updateTerminalCustomTitle","kind":"calls","metadata":{"unresolvedName":"layoutStore.updateTerminalCustomTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setDraggedId","kind":"calls","metadata":{"unresolvedName":"setDraggedId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setDragOverId","kind":"calls","metadata":{"unresolvedName":"setDragOverId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.reorderTabs","kind":"calls","metadata":{"unresolvedName":"layoutStore.reorderTabs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:tabs.map","kind":"calls","metadata":{"unresolvedName":"tabs.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:getTabLabel","kind":"calls","metadata":{"unresolvedName":"getTabLabel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:handleSelectTab","kind":"calls","metadata":{"unresolvedName":"handleSelectTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:handleCloseTab","kind":"calls","metadata":{"unresolvedName":"handleCloseTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:handleContextMenu","kind":"calls","metadata":{"unresolvedName":"handleContextMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:startRename","kind":"calls","metadata":{"unresolvedName":"startRename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:handleDragStart","kind":"calls","metadata":{"unresolvedName":"handleDragStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:handleDragOver","kind":"calls","metadata":{"unresolvedName":"handleDragOver"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:submitRename","kind":"calls","metadata":{"unresolvedName":"submitRename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:addButtonRef.current.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"addButtonRef.current.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:children","kind":"calls","metadata":{"unresolvedName":"children"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:createPortal","kind":"calls","metadata":{"unresolvedName":"createPortal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:onNewTerminal","kind":"calls","metadata":{"unresolvedName":"onNewTerminal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.addFilesTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.addFilesTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.addChangesTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.addChangesTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.addMcpTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.addMcpTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.addSkillTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.addSkillTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.addWorktreeTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.addWorktreeTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.addExtensionTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.addExtensionTab"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:addMenuRef.current.contains","kind":"calls","metadata":{"unresolvedName":"addMenuRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:addButtonRef.current.contains","kind":"calls","metadata":{"unresolvedName":"addButtonRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setAddMenuPos","kind":"calls","metadata":{"unresolvedName":"setAddMenuPos"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:handleClickOutside","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:handleClickOutside","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:handleClickOutside","to":"external:addMenuRef.current.contains","kind":"calls","metadata":{"unresolvedName":"addMenuRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:handleClickOutside","to":"external:addButtonRef.current.contains","kind":"calls","metadata":{"unresolvedName":"addButtonRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:handleClickOutside","to":"symbol-name:setAddMenuPos","kind":"calls","metadata":{"unresolvedName":"setAddMenuPos"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:contextMenuRef.current.contains","kind":"calls","metadata":{"unresolvedName":"contextMenuRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setContextMenu","kind":"calls","metadata":{"unresolvedName":"setContextMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:handleClickOutside","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:handleClickOutside","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:handleClickOutside","to":"external:contextMenuRef.current.contains","kind":"calls","metadata":{"unresolvedName":"contextMenuRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:handleClickOutside","to":"symbol-name:setContextMenu","kind":"calls","metadata":{"unresolvedName":"setContextMenu"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setEditingTabId","kind":"calls","metadata":{"unresolvedName":"setEditingTabId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:tabs.some","kind":"calls","metadata":{"unresolvedName":"tabs.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:renameInputRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"renameInputRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:renameInputRef.current?.select","kind":"calls","metadata":{"unresolvedName":"renameInputRef.current?.select"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.closeBottomPanel","kind":"calls","metadata":{"unresolvedName":"layoutStore.closeBottomPanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.closeRightPanel","kind":"calls","metadata":{"unresolvedName":"layoutStore.closeRightPanel"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.setActiveTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.setActiveTab"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:onCloseTerminal","kind":"calls","metadata":{"unresolvedName":"onCloseTerminal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.removeTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.removeTab"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setContextMenu","kind":"calls","metadata":{"unresolvedName":"setContextMenu"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.moveTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.moveTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setContextMenu","kind":"calls","metadata":{"unresolvedName":"setContextMenu"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setContextMenu","kind":"calls","metadata":{"unresolvedName":"setContextMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setEditingTabId","kind":"calls","metadata":{"unresolvedName":"setEditingTabId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setEditingValue","kind":"calls","metadata":{"unresolvedName":"setEditingValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.setActiveTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.setActiveTab"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setEditingTabId","kind":"calls","metadata":{"unresolvedName":"setEditingTabId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setEditingValue","kind":"calls","metadata":{"unresolvedName":"setEditingValue"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:editingValue.trim","kind":"calls","metadata":{"unresolvedName":"editingValue.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:cancelRename","kind":"calls","metadata":{"unresolvedName":"cancelRename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:updatePtySession","kind":"calls","metadata":{"unresolvedName":"updatePtySession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.updateTerminalCustomTitle","kind":"calls","metadata":{"unresolvedName":"layoutStore.updateTerminalCustomTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setDraggedId","kind":"calls","metadata":{"unresolvedName":"setDraggedId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setDragOverId","kind":"calls","metadata":{"unresolvedName":"setDragOverId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.reorderTabs","kind":"calls","metadata":{"unresolvedName":"layoutStore.reorderTabs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setDraggedId","kind":"calls","metadata":{"unresolvedName":"setDraggedId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setDragOverId","kind":"calls","metadata":{"unresolvedName":"setDragOverId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setAddMenuPos","kind":"calls","metadata":{"unresolvedName":"setAddMenuPos"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:addButtonRef.current.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"addButtonRef.current.getBoundingClientRect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:onNewTerminal","kind":"calls","metadata":{"unresolvedName":"onNewTerminal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setAddMenuPos","kind":"calls","metadata":{"unresolvedName":"setAddMenuPos"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.addFilesTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.addFilesTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setAddMenuPos","kind":"calls","metadata":{"unresolvedName":"setAddMenuPos"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.addChangesTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.addChangesTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setAddMenuPos","kind":"calls","metadata":{"unresolvedName":"setAddMenuPos"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.addMcpTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.addMcpTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setAddMenuPos","kind":"calls","metadata":{"unresolvedName":"setAddMenuPos"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.addSkillTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.addSkillTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setAddMenuPos","kind":"calls","metadata":{"unresolvedName":"setAddMenuPos"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.addWorktreeTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.addWorktreeTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setAddMenuPos","kind":"calls","metadata":{"unresolvedName":"setAddMenuPos"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:layoutStore.addExtensionTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.addExtensionTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setAddMenuPos","kind":"calls","metadata":{"unresolvedName":"setAddMenuPos"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:e.dataTransfer.setData","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.setData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:onDragStart","kind":"calls","metadata":{"unresolvedName":"onDragStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:document.elementFromPoint","kind":"calls","metadata":{"unresolvedName":"document.elementFromPoint"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:target?.closest","kind":"calls","metadata":{"unresolvedName":"target?.closest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:tabEl.getAttribute","kind":"calls","metadata":{"unresolvedName":"tabEl.getAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:onDragOver","kind":"calls","metadata":{"unresolvedName":"onDragOver"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:onDragEnd","kind":"calls","metadata":{"unresolvedName":"onDragEnd"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:onEditingValueChange","kind":"calls","metadata":{"unresolvedName":"onEditingValueChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:onEditSubmit","kind":"calls","metadata":{"unresolvedName":"onEditSubmit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:onEditCancel","kind":"calls","metadata":{"unresolvedName":"onEditCancel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:handleDragStart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:handleDragStart","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:handleDragStart","to":"external:e.dataTransfer.setData","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.setData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:handleDragStart","to":"symbol-name:onDragStart","kind":"calls","metadata":{"unresolvedName":"onDragStart"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:onDragStart","kind":"calls","metadata":{"unresolvedName":"onDragStart"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:onDragStart","kind":"calls","metadata":{"unresolvedName":"onDragStart"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:document.elementFromPoint","kind":"calls","metadata":{"unresolvedName":"document.elementFromPoint"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:target?.closest","kind":"calls","metadata":{"unresolvedName":"target?.closest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:tabEl.getAttribute","kind":"calls","metadata":{"unresolvedName":"tabEl.getAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:onDragOver","kind":"calls","metadata":{"unresolvedName":"onDragOver"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:onDragEnd","kind":"calls","metadata":{"unresolvedName":"onDragEnd"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:onDragOver","kind":"calls","metadata":{"unresolvedName":"onDragOver"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:onEditSubmit","kind":"calls","metadata":{"unresolvedName":"onEditSubmit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:onEditCancel","kind":"calls","metadata":{"unresolvedName":"onEditCancel"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"symbol-name:onReorder","kind":"calls","metadata":{"unresolvedName":"onReorder"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"symbol-name:setDraggedId","kind":"calls","metadata":{"unresolvedName":"setDraggedId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"symbol-name:setDragOverId","kind":"calls","metadata":{"unresolvedName":"setDragOverId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"external:items.map","kind":"calls","metadata":{"unresolvedName":"items.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"external:event.dataTransfer.setData","kind":"calls","metadata":{"unresolvedName":"event.dataTransfer.setData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"symbol-name:onActivate","kind":"calls","metadata":{"unresolvedName":"onActivate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:getMaterialIconUrl","kind":"calls","metadata":{"unresolvedName":"getMaterialIconUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"external:event.stopPropagation","kind":"calls","metadata":{"unresolvedName":"event.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"symbol-name:onReorder","kind":"calls","metadata":{"unresolvedName":"onReorder"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"symbol-name:setDraggedId","kind":"calls","metadata":{"unresolvedName":"setDraggedId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"symbol-name:setDragOverId","kind":"calls","metadata":{"unresolvedName":"setDragOverId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"external:event.dataTransfer.setData","kind":"calls","metadata":{"unresolvedName":"event.dataTransfer.setData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"symbol-name:setDraggedId","kind":"calls","metadata":{"unresolvedName":"setDraggedId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"symbol-name:setDragOverId","kind":"calls","metadata":{"unresolvedName":"setDragOverId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"symbol-name:onActivate","kind":"calls","metadata":{"unresolvedName":"onActivate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:getMaterialIconUrl","kind":"calls","metadata":{"unresolvedName":"getMaterialIconUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"external:event.stopPropagation","kind":"calls","metadata":{"unresolvedName":"event.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"external:event.dataTransfer.setData","kind":"calls","metadata":{"unresolvedName":"event.dataTransfer.setData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"symbol-name:setDraggedId","kind":"calls","metadata":{"unresolvedName":"setDraggedId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"symbol-name:setDragOverId","kind":"calls","metadata":{"unresolvedName":"setDragOverId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"symbol-name:setDragOverId","kind":"calls","metadata":{"unresolvedName":"setDragOverId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"symbol-name:setDragOverId","kind":"calls","metadata":{"unresolvedName":"setDragOverId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"external:event.stopPropagation","kind":"calls","metadata":{"unresolvedName":"event.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PanelContainer.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/logger.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:PanelFallback","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:PanelFallback","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:PanelFallback","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:PanelFallback","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"calls","metadata":{"unresolvedName":"useLayoutStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewport","kind":"calls","metadata":{"unresolvedName":"useChatViewport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"symbol-name:setIsPanelResizing","kind":"calls","metadata":{"unresolvedName":"setIsPanelResizing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:removePtySession","kind":"calls","metadata":{"unresolvedName":"removePtySession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"external:logger.log","kind":"calls","metadata":{"unresolvedName":"logger.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:createPtySession","kind":"calls","metadata":{"unresolvedName":"createPtySession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"external:layoutStore.addTerminalTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.addTerminalTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"external:layoutStore.setRightPanelWidth","kind":"calls","metadata":{"unresolvedName":"layoutStore.setRightPanelWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"external:layoutStore.closeRightPanel","kind":"calls","metadata":{"unresolvedName":"layoutStore.closeRightPanel"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"symbol-name:setIsPanelResizing","kind":"calls","metadata":{"unresolvedName":"setIsPanelResizing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:removePtySession","kind":"calls","metadata":{"unresolvedName":"removePtySession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"external:logger.log","kind":"calls","metadata":{"unresolvedName":"logger.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:createPtySession","kind":"calls","metadata":{"unresolvedName":"createPtySession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"external:layoutStore.addTerminalTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.addTerminalTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"calls","metadata":{"unresolvedName":"useLayoutStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"external:panelTabs.filter","kind":"calls","metadata":{"unresolvedName":"panelTabs.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"external:terminalTabs.map","kind":"calls","metadata":{"unresolvedName":"terminalTabs.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"calls","metadata":{"unresolvedName":"useLayoutStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"external:panelTabs.filter","kind":"calls","metadata":{"unresolvedName":"panelTabs.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"external:fileTabs.map","kind":"calls","metadata":{"unresolvedName":"fileTabs.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"calls","metadata":{"unresolvedName":"useLayoutStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"external:panelTabs.filter","kind":"calls","metadata":{"unresolvedName":"panelTabs.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/RightPanel.tsx:","to":"external:changeTabs.map","kind":"calls","metadata":{"unresolvedName":"changeTabs.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:changeScopeStore.clearAll","kind":"calls","metadata":{"unresolvedName":"changeScopeStore.clearAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:getCurrentProject.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getCurrentProject.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:getVcsInfo.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getVcsInfo.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:getVcsDiff.mockImplementation","kind":"calls","metadata":{"unresolvedName":"getVcsDiff.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:getSessionDiff.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getSessionDiff.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:getLastTurnDiff.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getLastTurnDiff.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:initGitProject.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"initGitProject.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(getSessionDiff).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(getSessionDiff).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(screen.getByText('2f')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('2f')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(screen.getAllByText('+1').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('+1').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:screen.getAllByText","kind":"calls","metadata":{"unresolvedName":"screen.getAllByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(screen.getAllByText('-1').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('-1').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(screen.getByTestId('diff-viewer')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByTestId('diff-viewer')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(screen.getAllByText('app.ts').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('app.ts').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(getLastTurnDiff).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(getLastTurnDiff).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(changeScopeStore.getMode('session-1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(changeScopeStore.getMode('session-1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:changeScopeStore.getMode","kind":"calls","metadata":{"unresolvedName":"changeScopeStore.getMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(screen.getByText('1f')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('1f')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(screen.getAllByText('turn.ts').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('turn.ts').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(getVcsDiff).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(getVcsDiff).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(screen.getAllByText('branch.ts').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('branch.ts').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(sessionChangesOption).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(sessionChangesOption).toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:fireEvent.keyDown","kind":"calls","metadata":{"unresolvedName":"fireEvent.keyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(lastTurnOption).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(lastTurnOption).toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(treeButton).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(treeButton).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(unifiedButton).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(unifiedButton).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(listButton).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(listButton).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(splitButton).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(splitButton).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:getCurrentProject.mockResolvedValueOnce","kind":"calls","metadata":{"unresolvedName":"getCurrentProject.mockResolvedValueOnce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(initGitProject).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(initGitProject).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:changeScopeStore.clearAll","kind":"calls","metadata":{"unresolvedName":"changeScopeStore.clearAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:getCurrentProject.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getCurrentProject.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:getVcsInfo.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getVcsInfo.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:getVcsDiff.mockImplementation","kind":"calls","metadata":{"unresolvedName":"getVcsDiff.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:getSessionDiff.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getSessionDiff.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:getLastTurnDiff.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getLastTurnDiff.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:initGitProject.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"initGitProject.mockResolvedValue"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(getSessionDiff).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(getSessionDiff).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(screen.getByText('2f')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('2f')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(screen.getAllByText('+1').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('+1').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:screen.getAllByText","kind":"calls","metadata":{"unresolvedName":"screen.getAllByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(screen.getAllByText('-1').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('-1').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(screen.getByTestId('diff-viewer')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByTestId('diff-viewer')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(screen.getAllByText('app.ts').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('app.ts').length).toBeGreaterThan"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(getLastTurnDiff).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(getLastTurnDiff).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(changeScopeStore.getMode('session-1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(changeScopeStore.getMode('session-1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:changeScopeStore.getMode","kind":"calls","metadata":{"unresolvedName":"changeScopeStore.getMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(screen.getByText('1f')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('1f')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(screen.getAllByText('turn.ts').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('turn.ts').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:screen.getAllByText","kind":"calls","metadata":{"unresolvedName":"screen.getAllByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(getVcsDiff).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(getVcsDiff).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(changeScopeStore.getMode('session-1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(changeScopeStore.getMode('session-1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:changeScopeStore.getMode","kind":"calls","metadata":{"unresolvedName":"changeScopeStore.getMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(screen.getAllByText('branch.ts').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('branch.ts').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:screen.getAllByText","kind":"calls","metadata":{"unresolvedName":"screen.getAllByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(sessionChangesOption).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(sessionChangesOption).toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:fireEvent.keyDown","kind":"calls","metadata":{"unresolvedName":"fireEvent.keyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(lastTurnOption).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(lastTurnOption).toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(treeButton).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(treeButton).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(unifiedButton).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(unifiedButton).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(listButton).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(listButton).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(splitButton).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(splitButton).toHaveAttribute"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:fireEvent.keyDown","kind":"calls","metadata":{"unresolvedName":"fireEvent.keyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:getCurrentProject.mockResolvedValueOnce","kind":"calls","metadata":{"unresolvedName":"getCurrentProject.mockResolvedValueOnce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(initGitProject).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(initGitProject).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:expect(getSessionDiff).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(getSessionDiff).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/PreviewTabsBar.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:getDefaultChangeMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:getDefaultChangeMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:getDefaultChangeMode","to":"external:options.includes","kind":"calls","metadata":{"unresolvedName":"options.includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:reconcileDiffPreviewState","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:reconcileDiffPreviewState","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:reconcileDiffPreviewState","to":"external:diffs.map","kind":"calls","metadata":{"unresolvedName":"diffs.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:reconcileDiffPreviewState","to":"external:openFiles.filter","kind":"calls","metadata":{"unresolvedName":"openFiles.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:reconcileDiffPreviewState","to":"external:availableFiles.has","kind":"calls","metadata":{"unresolvedName":"availableFiles.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:reconcileDiffPreviewState","to":"external:nextOpenFiles.push","kind":"calls","metadata":{"unresolvedName":"nextOpenFiles.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:reconcileDiffPreviewState","to":"external:nextOpenFiles.includes","kind":"calls","metadata":{"unresolvedName":"nextOpenFiles.includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","kind":"calls","metadata":{"unresolvedName":"useVerticalSplitResize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:useSessionChangeScope","kind":"calls","metadata":{"unresolvedName":"useSessionChangeScope"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:useId","kind":"calls","metadata":{"unresolvedName":"useId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changeScopeStore.setMode","kind":"calls","metadata":{"unresolvedName":"changeScopeStore.setMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:options.push","kind":"calls","metadata":{"unresolvedName":"options.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:getDefaultChangeMode","kind":"calls","metadata":{"unresolvedName":"getDefaultChangeMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changeMenuOptionRefs.current[mode]?.focus","kind":"calls","metadata":{"unresolvedName":"changeMenuOptionRefs.current[mode]?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:element?.closest","kind":"calls","metadata":{"unresolvedName":"element?.closest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:window.getComputedStyle","kind":"calls","metadata":{"unresolvedName":"window.getComputedStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:document.body.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"document.body.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:element.closest","kind":"calls","metadata":{"unresolvedName":"element.closest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:focusables.findIndex","kind":"calls","metadata":{"unresolvedName":"focusables.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:focusables[currentIndex + direction]?.focus","kind":"calls","metadata":{"unresolvedName":"focusables[currentIndex + direction]?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setMountedPreviewFiles","kind":"calls","metadata":{"unresolvedName":"setMountedPreviewFiles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:[...prev].filter","kind":"calls","metadata":{"unresolvedName":"[...prev].filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:openFiles.has","kind":"calls","metadata":{"unresolvedName":"openFiles.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:next.add","kind":"calls","metadata":{"unresolvedName":"next.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:[...next].every","kind":"calls","metadata":{"unresolvedName":"[...next].every"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:prev.has","kind":"calls","metadata":{"unresolvedName":"prev.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changeMenuRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"changeMenuRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changeMenuTriggerRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"changeMenuTriggerRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setChangeMenuOpen","kind":"calls","metadata":{"unresolvedName":"setChangeMenuOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:isVisibleFocusableElement","kind":"calls","metadata":{"unresolvedName":"isVisibleFocusableElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changeMenuTriggerRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"changeMenuTriggerRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changeOptions.includes","kind":"calls","metadata":{"unresolvedName":"changeOptions.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:focusChangeMenuOption","kind":"calls","metadata":{"unresolvedName":"focusChangeMenuOption"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changeOptions.findIndex","kind":"calls","metadata":{"unresolvedName":"changeOptions.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:focusRelativeToChangeTrigger","kind":"calls","metadata":{"unresolvedName":"focusRelativeToChangeTrigger"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:focusByIndex","kind":"calls","metadata":{"unresolvedName":"focusByIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setProjectLoading","kind":"calls","metadata":{"unresolvedName":"setProjectLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getCurrentProject","kind":"calls","metadata":{"unresolvedName":"getCurrentProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setProject","kind":"calls","metadata":{"unresolvedName":"setProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:getVcsInfo(directory).catch","kind":"calls","metadata":{"unresolvedName":"getVcsInfo(directory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsInfo","kind":"calls","metadata":{"unresolvedName":"getVcsInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setVcsInfo","kind":"calls","metadata":{"unresolvedName":"setVcsInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:sessionErrorHandler","kind":"calls","metadata":{"unresolvedName":"sessionErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setLoadingModes","kind":"calls","metadata":{"unresolvedName":"setLoadingModes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsDiff","kind":"calls","metadata":{"unresolvedName":"getVcsDiff"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionDiff","kind":"calls","metadata":{"unresolvedName":"getSessionDiff"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getLastTurnDiff","kind":"calls","metadata":{"unresolvedName":"getLastTurnDiff"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setGitDiffs","kind":"calls","metadata":{"unresolvedName":"setGitDiffs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setBranchDiffs","kind":"calls","metadata":{"unresolvedName":"setBranchDiffs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setSessionDiffs","kind":"calls","metadata":{"unresolvedName":"setSessionDiffs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setTurnDiffs","kind":"calls","metadata":{"unresolvedName":"setTurnDiffs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setLoadedModes","kind":"calls","metadata":{"unresolvedName":"setLoadedModes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setOpenDiffFiles","kind":"calls","metadata":{"unresolvedName":"setOpenDiffFiles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setSelectedFile","kind":"calls","metadata":{"unresolvedName":"setSelectedFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setExpandedDirs","kind":"calls","metadata":{"unresolvedName":"setExpandedDirs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:resetSplitHeight","kind":"calls","metadata":{"unresolvedName":"resetSplitHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:loadProjectState","kind":"calls","metadata":{"unresolvedName":"loadProjectState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setChangeMode","kind":"calls","metadata":{"unresolvedName":"setChangeMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:loadDiffMode","kind":"calls","metadata":{"unresolvedName":"loadDiffMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:collectExpandedDirPaths","kind":"calls","metadata":{"unresolvedName":"collectExpandedDirPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:buildChangesTree","kind":"calls","metadata":{"unresolvedName":"buildChangesTree"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:reconcileDiffPreviewState","kind":"calls","metadata":{"unresolvedName":"reconcileDiffPreviewState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setInitializingGit","kind":"calls","metadata":{"unresolvedName":"setInitializingGit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:initGitProject","kind":"calls","metadata":{"unresolvedName":"initGitProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:prev.includes","kind":"calls","metadata":{"unresolvedName":"prev.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:next.has","kind":"calls","metadata":{"unresolvedName":"next.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:next.delete","kind":"calls","metadata":{"unresolvedName":"next.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:prev.indexOf","kind":"calls","metadata":{"unresolvedName":"prev.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:next.splice","kind":"calls","metadata":{"unresolvedName":"next.splice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:diffs.find","kind":"calls","metadata":{"unresolvedName":"diffs.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:openDiffFiles\r\n .map","kind":"calls","metadata":{"unresolvedName":"openDiffFiles\r\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:Boolean","kind":"calls","metadata":{"unresolvedName":"Boolean"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:previewDiffs.filter","kind":"calls","metadata":{"unresolvedName":"previewDiffs.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:mountedPreviewFiles.has","kind":"calls","metadata":{"unresolvedName":"mountedPreviewFiles.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:diffs.reduce","kind":"calls","metadata":{"unresolvedName":"diffs.reduce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changeOptions.map","kind":"calls","metadata":{"unresolvedName":"changeOptions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:node.focus","kind":"calls","metadata":{"unresolvedName":"node.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setListMode","kind":"calls","metadata":{"unresolvedName":"setListMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setViewMode","kind":"calls","metadata":{"unresolvedName":"setViewMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changesTree.map","kind":"calls","metadata":{"unresolvedName":"changesTree.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:diffs.map","kind":"calls","metadata":{"unresolvedName":"diffs.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:getFileStatus","kind":"calls","metadata":{"unresolvedName":"getFileStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:handleSelectFile","kind":"calls","metadata":{"unresolvedName":"handleSelectFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:getMaterialIconUrl","kind":"calls","metadata":{"unresolvedName":"getMaterialIconUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:mountedPreviewDiffs.map","kind":"calls","metadata":{"unresolvedName":"mountedPreviewDiffs.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changeScopeStore.setMode","kind":"calls","metadata":{"unresolvedName":"changeScopeStore.setMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:options.push","kind":"calls","metadata":{"unresolvedName":"options.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changeMenuOptionRefs.current[mode]?.focus","kind":"calls","metadata":{"unresolvedName":"changeMenuOptionRefs.current[mode]?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:element?.closest","kind":"calls","metadata":{"unresolvedName":"element?.closest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:window.getComputedStyle","kind":"calls","metadata":{"unresolvedName":"window.getComputedStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:document.body.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"document.body.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:element.closest","kind":"calls","metadata":{"unresolvedName":"element.closest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:focusables.findIndex","kind":"calls","metadata":{"unresolvedName":"focusables.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:focusables[currentIndex + direction]?.focus","kind":"calls","metadata":{"unresolvedName":"focusables[currentIndex + direction]?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setMountedPreviewFiles","kind":"calls","metadata":{"unresolvedName":"setMountedPreviewFiles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:[...prev].filter","kind":"calls","metadata":{"unresolvedName":"[...prev].filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:openFiles.has","kind":"calls","metadata":{"unresolvedName":"openFiles.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:next.add","kind":"calls","metadata":{"unresolvedName":"next.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:[...next].every","kind":"calls","metadata":{"unresolvedName":"[...next].every"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:prev.has","kind":"calls","metadata":{"unresolvedName":"prev.has"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:[...prev].filter","kind":"calls","metadata":{"unresolvedName":"[...prev].filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:openFiles.has","kind":"calls","metadata":{"unresolvedName":"openFiles.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:next.add","kind":"calls","metadata":{"unresolvedName":"next.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:[...next].every","kind":"calls","metadata":{"unresolvedName":"[...next].every"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:prev.has","kind":"calls","metadata":{"unresolvedName":"prev.has"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changeMenuRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"changeMenuRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changeMenuTriggerRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"changeMenuTriggerRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setChangeMenuOpen","kind":"calls","metadata":{"unresolvedName":"setChangeMenuOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:isVisibleFocusableElement","kind":"calls","metadata":{"unresolvedName":"isVisibleFocusableElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changeMenuTriggerRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"changeMenuTriggerRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:handlePointerDown","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:handlePointerDown","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:handlePointerDown","to":"external:changeMenuRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"changeMenuRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:handlePointerDown","to":"external:changeMenuTriggerRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"changeMenuTriggerRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:handlePointerDown","to":"symbol-name:setChangeMenuOpen","kind":"calls","metadata":{"unresolvedName":"setChangeMenuOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:handlePointerDown","to":"symbol-name:isVisibleFocusableElement","kind":"calls","metadata":{"unresolvedName":"isVisibleFocusableElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:handlePointerDown","to":"external:changeMenuTriggerRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"changeMenuTriggerRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:handleKeyDown","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:handleKeyDown","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:handleKeyDown","to":"symbol-name:setChangeMenuOpen","kind":"calls","metadata":{"unresolvedName":"setChangeMenuOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:handleKeyDown","to":"external:changeMenuTriggerRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"changeMenuTriggerRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changeOptions.includes","kind":"calls","metadata":{"unresolvedName":"changeOptions.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:focusChangeMenuOption","kind":"calls","metadata":{"unresolvedName":"focusChangeMenuOption"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:focusChangeMenuOption","kind":"calls","metadata":{"unresolvedName":"focusChangeMenuOption"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changeOptions.findIndex","kind":"calls","metadata":{"unresolvedName":"changeOptions.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setChangeMenuOpen","kind":"calls","metadata":{"unresolvedName":"setChangeMenuOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changeMenuTriggerRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"changeMenuTriggerRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:focusRelativeToChangeTrigger","kind":"calls","metadata":{"unresolvedName":"focusRelativeToChangeTrigger"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:focusChangeMenuOption","kind":"calls","metadata":{"unresolvedName":"focusChangeMenuOption"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:focusByIndex","kind":"calls","metadata":{"unresolvedName":"focusByIndex"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:focusRelativeToChangeTrigger","kind":"calls","metadata":{"unresolvedName":"focusRelativeToChangeTrigger"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:focusByIndex","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:focusByIndex","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:focusByIndex","to":"symbol-name:focusChangeMenuOption","kind":"calls","metadata":{"unresolvedName":"focusChangeMenuOption"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setProjectLoading","kind":"calls","metadata":{"unresolvedName":"setProjectLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getCurrentProject","kind":"calls","metadata":{"unresolvedName":"getCurrentProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setProject","kind":"calls","metadata":{"unresolvedName":"setProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:getVcsInfo(directory).catch","kind":"calls","metadata":{"unresolvedName":"getVcsInfo(directory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsInfo","kind":"calls","metadata":{"unresolvedName":"getVcsInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setVcsInfo","kind":"calls","metadata":{"unresolvedName":"setVcsInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:sessionErrorHandler","kind":"calls","metadata":{"unresolvedName":"sessionErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setLoadingModes","kind":"calls","metadata":{"unresolvedName":"setLoadingModes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsDiff","kind":"calls","metadata":{"unresolvedName":"getVcsDiff"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionDiff","kind":"calls","metadata":{"unresolvedName":"getSessionDiff"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getLastTurnDiff","kind":"calls","metadata":{"unresolvedName":"getLastTurnDiff"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setGitDiffs","kind":"calls","metadata":{"unresolvedName":"setGitDiffs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setBranchDiffs","kind":"calls","metadata":{"unresolvedName":"setBranchDiffs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setSessionDiffs","kind":"calls","metadata":{"unresolvedName":"setSessionDiffs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setTurnDiffs","kind":"calls","metadata":{"unresolvedName":"setTurnDiffs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setLoadedModes","kind":"calls","metadata":{"unresolvedName":"setLoadedModes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:sessionErrorHandler","kind":"calls","metadata":{"unresolvedName":"sessionErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setProject","kind":"calls","metadata":{"unresolvedName":"setProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setVcsInfo","kind":"calls","metadata":{"unresolvedName":"setVcsInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setGitDiffs","kind":"calls","metadata":{"unresolvedName":"setGitDiffs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setBranchDiffs","kind":"calls","metadata":{"unresolvedName":"setBranchDiffs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setSessionDiffs","kind":"calls","metadata":{"unresolvedName":"setSessionDiffs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setTurnDiffs","kind":"calls","metadata":{"unresolvedName":"setTurnDiffs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setLoadedModes","kind":"calls","metadata":{"unresolvedName":"setLoadedModes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setLoadingModes","kind":"calls","metadata":{"unresolvedName":"setLoadingModes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setOpenDiffFiles","kind":"calls","metadata":{"unresolvedName":"setOpenDiffFiles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setSelectedFile","kind":"calls","metadata":{"unresolvedName":"setSelectedFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setMountedPreviewFiles","kind":"calls","metadata":{"unresolvedName":"setMountedPreviewFiles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setExpandedDirs","kind":"calls","metadata":{"unresolvedName":"setExpandedDirs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setChangeMenuOpen","kind":"calls","metadata":{"unresolvedName":"setChangeMenuOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:resetSplitHeight","kind":"calls","metadata":{"unresolvedName":"resetSplitHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:loadProjectState","kind":"calls","metadata":{"unresolvedName":"loadProjectState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changeOptions.includes","kind":"calls","metadata":{"unresolvedName":"changeOptions.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setChangeMode","kind":"calls","metadata":{"unresolvedName":"setChangeMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changeOptions.includes","kind":"calls","metadata":{"unresolvedName":"changeOptions.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:loadDiffMode","kind":"calls","metadata":{"unresolvedName":"loadDiffMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setExpandedDirs","kind":"calls","metadata":{"unresolvedName":"setExpandedDirs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:collectExpandedDirPaths","kind":"calls","metadata":{"unresolvedName":"collectExpandedDirPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:buildChangesTree","kind":"calls","metadata":{"unresolvedName":"buildChangesTree"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:reconcileDiffPreviewState","kind":"calls","metadata":{"unresolvedName":"reconcileDiffPreviewState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setOpenDiffFiles","kind":"calls","metadata":{"unresolvedName":"setOpenDiffFiles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setSelectedFile","kind":"calls","metadata":{"unresolvedName":"setSelectedFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:resetSplitHeight","kind":"calls","metadata":{"unresolvedName":"resetSplitHeight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:loadProjectState","kind":"calls","metadata":{"unresolvedName":"loadProjectState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:loadDiffMode","kind":"calls","metadata":{"unresolvedName":"loadDiffMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setInitializingGit","kind":"calls","metadata":{"unresolvedName":"setInitializingGit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:initGitProject","kind":"calls","metadata":{"unresolvedName":"initGitProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setProject","kind":"calls","metadata":{"unresolvedName":"setProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setVcsInfo","kind":"calls","metadata":{"unresolvedName":"setVcsInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setGitDiffs","kind":"calls","metadata":{"unresolvedName":"setGitDiffs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setBranchDiffs","kind":"calls","metadata":{"unresolvedName":"setBranchDiffs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setSessionDiffs","kind":"calls","metadata":{"unresolvedName":"setSessionDiffs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setTurnDiffs","kind":"calls","metadata":{"unresolvedName":"setTurnDiffs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setLoadedModes","kind":"calls","metadata":{"unresolvedName":"setLoadedModes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setLoadingModes","kind":"calls","metadata":{"unresolvedName":"setLoadingModes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setChangeMenuOpen","kind":"calls","metadata":{"unresolvedName":"setChangeMenuOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:loadProjectState","kind":"calls","metadata":{"unresolvedName":"loadProjectState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:sessionErrorHandler","kind":"calls","metadata":{"unresolvedName":"sessionErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setOpenDiffFiles","kind":"calls","metadata":{"unresolvedName":"setOpenDiffFiles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:prev.includes","kind":"calls","metadata":{"unresolvedName":"prev.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setSelectedFile","kind":"calls","metadata":{"unresolvedName":"setSelectedFile"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setExpandedDirs","kind":"calls","metadata":{"unresolvedName":"setExpandedDirs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:next.has","kind":"calls","metadata":{"unresolvedName":"next.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:next.delete","kind":"calls","metadata":{"unresolvedName":"next.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:next.add","kind":"calls","metadata":{"unresolvedName":"next.add"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:next.has","kind":"calls","metadata":{"unresolvedName":"next.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:next.delete","kind":"calls","metadata":{"unresolvedName":"next.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:next.add","kind":"calls","metadata":{"unresolvedName":"next.add"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setOpenDiffFiles","kind":"calls","metadata":{"unresolvedName":"setOpenDiffFiles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setSelectedFile","kind":"calls","metadata":{"unresolvedName":"setSelectedFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:resetSplitHeight","kind":"calls","metadata":{"unresolvedName":"resetSplitHeight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setSelectedFile","kind":"calls","metadata":{"unresolvedName":"setSelectedFile"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setOpenDiffFiles","kind":"calls","metadata":{"unresolvedName":"setOpenDiffFiles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:prev.indexOf","kind":"calls","metadata":{"unresolvedName":"prev.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setSelectedFile","kind":"calls","metadata":{"unresolvedName":"setSelectedFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:prev.indexOf","kind":"calls","metadata":{"unresolvedName":"prev.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setSelectedFile","kind":"calls","metadata":{"unresolvedName":"setSelectedFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setOpenDiffFiles","kind":"calls","metadata":{"unresolvedName":"setOpenDiffFiles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:prev.indexOf","kind":"calls","metadata":{"unresolvedName":"prev.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:next.splice","kind":"calls","metadata":{"unresolvedName":"next.splice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:prev.indexOf","kind":"calls","metadata":{"unresolvedName":"prev.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:next.splice","kind":"calls","metadata":{"unresolvedName":"next.splice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setChangeMenuOpen","kind":"calls","metadata":{"unresolvedName":"setChangeMenuOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setChangeMenuOpen","kind":"calls","metadata":{"unresolvedName":"setChangeMenuOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:node.focus","kind":"calls","metadata":{"unresolvedName":"node.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setChangeMode","kind":"calls","metadata":{"unresolvedName":"setChangeMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setChangeMenuOpen","kind":"calls","metadata":{"unresolvedName":"setChangeMenuOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changeMenuTriggerRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"changeMenuTriggerRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:node.focus","kind":"calls","metadata":{"unresolvedName":"node.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setChangeMode","kind":"calls","metadata":{"unresolvedName":"setChangeMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setChangeMenuOpen","kind":"calls","metadata":{"unresolvedName":"setChangeMenuOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:changeMenuTriggerRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"changeMenuTriggerRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:getFileStatus","kind":"calls","metadata":{"unresolvedName":"getFileStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:handleSelectFile","kind":"calls","metadata":{"unresolvedName":"handleSelectFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:getMaterialIconUrl","kind":"calls","metadata":{"unresolvedName":"getMaterialIconUrl"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:detectLanguage","kind":"calls","metadata":{"unresolvedName":"detectLanguage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts:extractContentFromUnifiedDiff","kind":"calls","metadata":{"unresolvedName":"extractContentFromUnifiedDiff"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffViewer.tsx:useDiffViewerData","kind":"calls","metadata":{"unresolvedName":"useDiffViewerData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:diff.file.split(/[/\\\\]/).pop","kind":"calls","metadata":{"unresolvedName":"diff.file.split(/[/\\\\]/).pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:diff.file.split","kind":"calls","metadata":{"unresolvedName":"diff.file.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:previewDiffs.map","kind":"calls","metadata":{"unresolvedName":"previewDiffs.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:previewDiff.file.split(/[/\\\\]/).pop","kind":"calls","metadata":{"unresolvedName":"previewDiff.file.split(/[/\\\\]/).pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:previewDiff.file.split","kind":"calls","metadata":{"unresolvedName":"previewDiff.file.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setFullscreenViewMode","kind":"calls","metadata":{"unresolvedName":"setFullscreenViewMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setFullscreenOpen","kind":"calls","metadata":{"unresolvedName":"setFullscreenOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts:extractContentFromUnifiedDiff","kind":"calls","metadata":{"unresolvedName":"extractContentFromUnifiedDiff"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:previewDiff.file.split(/[/\\\\]/).pop","kind":"calls","metadata":{"unresolvedName":"previewDiff.file.split(/[/\\\\]/).pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:previewDiff.file.split","kind":"calls","metadata":{"unresolvedName":"previewDiff.file.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setFullscreenViewMode","kind":"calls","metadata":{"unresolvedName":"setFullscreenViewMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:setFullscreenOpen","kind":"calls","metadata":{"unresolvedName":"setFullscreenOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:getFileStatus","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:getFileStatus","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:getFileStatus","to":"external:diff.before.trim","kind":"calls","metadata":{"unresolvedName":"diff.before.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:getFileStatus","to":"external:diff.after.trim","kind":"calls","metadata":{"unresolvedName":"diff.after.trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:buildChangesTree","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:buildChangesTree","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:buildChangesTree","to":"external:diff.file.split(/[/\\\\]/).filter","kind":"calls","metadata":{"unresolvedName":"diff.file.split(/[/\\\\]/).filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:buildChangesTree","to":"external:diff.file.split","kind":"calls","metadata":{"unresolvedName":"diff.file.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:buildChangesTree","to":"external:parts.slice(0, i + 1).join","kind":"calls","metadata":{"unresolvedName":"parts.slice(0, i + 1).join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:buildChangesTree","to":"external:parts.slice","kind":"calls","metadata":{"unresolvedName":"parts.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:buildChangesTree","to":"external:currentLevel.find","kind":"calls","metadata":{"unresolvedName":"currentLevel.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:buildChangesTree","to":"symbol-name:getFileStatus","kind":"calls","metadata":{"unresolvedName":"getFileStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:buildChangesTree","to":"external:currentLevel.push","kind":"calls","metadata":{"unresolvedName":"currentLevel.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:buildChangesTree","to":"external:nodes\r\n .map","kind":"calls","metadata":{"unresolvedName":"nodes\r\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:buildChangesTree","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:processNodes","kind":"calls","metadata":{"unresolvedName":"processNodes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:buildChangesTree","to":"external:processedChildren.some","kind":"calls","metadata":{"unresolvedName":"processedChildren.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:buildChangesTree","to":"external:a.name.localeCompare","kind":"calls","metadata":{"unresolvedName":"a.name.localeCompare"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:processNodes","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:processNodes","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:processNodes","to":"external:nodes\r\n .map","kind":"calls","metadata":{"unresolvedName":"nodes\r\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:processNodes","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:processNodes","kind":"calls","metadata":{"unresolvedName":"processNodes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:processNodes","to":"external:processedChildren.some","kind":"calls","metadata":{"unresolvedName":"processedChildren.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:processNodes","to":"external:a.name.localeCompare","kind":"calls","metadata":{"unresolvedName":"a.name.localeCompare"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:processNodes","kind":"calls","metadata":{"unresolvedName":"processNodes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:processedChildren.some","kind":"calls","metadata":{"unresolvedName":"processedChildren.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:a.name.localeCompare","kind":"calls","metadata":{"unresolvedName":"a.name.localeCompare"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:collectExpandedDirPaths","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:collectExpandedDirPaths","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:collectExpandedDirPaths","to":"external:allDirPaths.add","kind":"calls","metadata":{"unresolvedName":"allDirPaths.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:collectExpandedDirPaths","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:collectDirs","kind":"calls","metadata":{"unresolvedName":"collectDirs"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:collectDirs","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:collectDirs","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:collectDirs","to":"external:allDirPaths.add","kind":"calls","metadata":{"unresolvedName":"allDirPaths.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:collectDirs","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:collectDirs","kind":"calls","metadata":{"unresolvedName":"collectDirs"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:expandedDirs.has","kind":"calls","metadata":{"unresolvedName":"expandedDirs.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:onToggleDir","kind":"calls","metadata":{"unresolvedName":"onToggleDir"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:getMaterialIconUrl","kind":"calls","metadata":{"unresolvedName":"getMaterialIconUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"external:node.children.map","kind":"calls","metadata":{"unresolvedName":"node.children.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","to":"symbol-name:onSelectFile","kind":"calls","metadata":{"unresolvedName":"onSelectFile"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:getSkillsMock.mockReset","kind":"calls","metadata":{"unresolvedName":"getSkillsMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:getSkillsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getSkillsMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:expect(screen.getByRole('button', { name: 'Refresh' })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Refresh' })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:expect(screen.getByText('Global')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('Global')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:expect(screen.getByText('Project')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('Project')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:expect(screen.getByText('(2)')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('(2)')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:expect(searchInput).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(searchInput).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:expect(itemButton).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(itemButton).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:expect(screen.getByText('skill content')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('skill content')).toBeInTheDocument"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:getSkillsMock.mockReset","kind":"calls","metadata":{"unresolvedName":"getSkillsMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:getSkillsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getSkillsMock.mockResolvedValue"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:expect(screen.getByRole('button', { name: 'Refresh' })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Refresh' })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:expect(screen.getByText('Global')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('Global')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:expect(screen.getByText('Project')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('Project')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:expect(screen.getByText('(2)')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('(2)')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:expect(searchInput).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(searchInput).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:expect(itemButton).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(itemButton).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.test.tsx:","to":"external:expect(screen.getByText('skill content')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('skill content')).toBeInTheDocument"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/skill.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useDirectory","kind":"calls","metadata":{"unresolvedName":"useDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts:getSkills","kind":"calls","metadata":{"unresolvedName":"getSkills"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"symbol-name:setSkills","kind":"calls","metadata":{"unresolvedName":"setSkills"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"symbol-name:loadSkills","kind":"calls","metadata":{"unresolvedName":"loadSkills"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"external:skills.filter","kind":"calls","metadata":{"unresolvedName":"skills.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"external:skill.name.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"skill.name.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"external:skill.name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"skill.name.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"external:filter.toLowerCase","kind":"calls","metadata":{"unresolvedName":"filter.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"external:skill.description.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"skill.description.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"external:skill.description.toLowerCase","kind":"calls","metadata":{"unresolvedName":"skill.description.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"external:SKILL_SOURCE_ORDER.map","kind":"calls","metadata":{"unresolvedName":"SKILL_SOURCE_ORDER.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"external:filteredSkills.filter","kind":"calls","metadata":{"unresolvedName":"filteredSkills.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"symbol-name:setFilter","kind":"calls","metadata":{"unresolvedName":"setFilter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"external:groupedSkills.map","kind":"calls","metadata":{"unresolvedName":"groupedSkills.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"external:group.skills.map","kind":"calls","metadata":{"unresolvedName":"group.skills.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/skill.ts:getSkills","kind":"calls","metadata":{"unresolvedName":"getSkills"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"symbol-name:setSkills","kind":"calls","metadata":{"unresolvedName":"setSkills"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"symbol-name:loadSkills","kind":"calls","metadata":{"unresolvedName":"loadSkills"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SkillPanel.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"external:@xterm/xterm","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"external:@xterm/addon-fit","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"external:@xterm/addon-serialize","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"external:@xterm/addon-web-links","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"external:@xterm/xterm/css/xterm.css","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/logger.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getHSLColor","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getHSLColor","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getHSLColor","to":"external:getComputedStyle(document.documentElement).getPropertyValue(varName).trim","kind":"calls","metadata":{"unresolvedName":"getComputedStyle(document.documentElement).getPropertyValue(varName).trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getHSLColor","to":"external:getComputedStyle(document.documentElement).getPropertyValue","kind":"calls","metadata":{"unresolvedName":"getComputedStyle(document.documentElement).getPropertyValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getHSLColor","to":"symbol-name:getComputedStyle","kind":"calls","metadata":{"unresolvedName":"getComputedStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getHSLColor","to":"external:value.split","kind":"calls","metadata":{"unresolvedName":"value.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getHSLColor","to":"symbol-name:parseFloat","kind":"calls","metadata":{"unresolvedName":"parseFloat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getHSLColor","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getHSLColor","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getHSLColor","to":"external:Math.round(255 * color)\r\n .toString(16)\r\n .padStart","kind":"calls","metadata":{"unresolvedName":"Math.round(255 * color)\r\n .toString(16)\r\n .padStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getHSLColor","to":"external:Math.round(255 * color)\r\n .toString","kind":"calls","metadata":{"unresolvedName":"Math.round(255 * color)\r\n .toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getHSLColor","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getHSLColor","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:f","kind":"calls","metadata":{"unresolvedName":"f"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:f","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:f","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:f","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:f","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:f","to":"external:Math.round(255 * color)\r\n .toString(16)\r\n .padStart","kind":"calls","metadata":{"unresolvedName":"Math.round(255 * color)\r\n .toString(16)\r\n .padStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:f","to":"external:Math.round(255 * color)\r\n .toString","kind":"calls","metadata":{"unresolvedName":"Math.round(255 * color)\r\n .toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:f","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getTerminalTheme","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getTerminalTheme","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getTerminalTheme","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getHSLColor","kind":"calls","metadata":{"unresolvedName":"getHSLColor"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:isDarkMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:isDarkMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:isDarkMode","to":"external:document.documentElement.getAttribute","kind":"calls","metadata":{"unresolvedName":"document.documentElement.getAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:isDarkMode","to":"external:window.matchMedia","kind":"calls","metadata":{"unresolvedName":"window.matchMedia"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:createStickyModifiers","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:createStickyModifiers","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:toCtrlSequence","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:toCtrlSequence","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:toCtrlSequence","to":"external:data.toUpperCase","kind":"calls","metadata":{"unresolvedName":"data.toUpperCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:toCtrlSequence","to":"external:String.fromCharCode","kind":"calls","metadata":{"unresolvedName":"String.fromCharCode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:toCtrlSequence","to":"external:upper.charCodeAt","kind":"calls","metadata":{"unresolvedName":"upper.charCodeAt"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:hasStickyModifier","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:hasStickyModifier","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:isNativePasteShortcut","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:isNativePasteShortcut","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:isNativePasteShortcut","to":"external:event.key.toLowerCase","kind":"calls","metadata":{"unresolvedName":"event.key.toLowerCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:canReadClipboardText","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:canReadClipboardText","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:applyStickyModifiers","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:applyStickyModifiers","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:applyStickyModifiers","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:toCtrlSequence","kind":"calls","metadata":{"unresolvedName":"toCtrlSequence"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:MobileExtraKeys","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:MobileExtraKeys","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:MobileExtraKeys","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:MobileExtraKeys","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:MobileExtraKeys","to":"symbol-name:onSend","kind":"calls","metadata":{"unresolvedName":"onSend"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:MobileExtraKeys","to":"symbol-name:onFocusTerminal","kind":"calls","metadata":{"unresolvedName":"onFocusTerminal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:MobileExtraKeys","to":"external:MOBILE_EXTRA_KEY_ROWS.map","kind":"calls","metadata":{"unresolvedName":"MOBILE_EXTRA_KEY_ROWS.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:MobileExtraKeys","to":"external:row.map","kind":"calls","metadata":{"unresolvedName":"row.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:MobileExtraKeys","to":"symbol-name:onToggleSticky","kind":"calls","metadata":{"unresolvedName":"onToggleSticky"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:MobileExtraKeys","to":"symbol-name:handleSend","kind":"calls","metadata":{"unresolvedName":"handleSend"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:onSend","kind":"calls","metadata":{"unresolvedName":"onSend"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:onFocusTerminal","kind":"calls","metadata":{"unresolvedName":"onFocusTerminal"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:onToggleSticky","kind":"calls","metadata":{"unresolvedName":"onToggleSticky"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:onFocusTerminal","kind":"calls","metadata":{"unresolvedName":"onFocusTerminal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:handleSend","kind":"calls","metadata":{"unresolvedName":"handleSend"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:onToggleSticky","kind":"calls","metadata":{"unresolvedName":"onToggleSticky"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:onFocusTerminal","kind":"calls","metadata":{"unresolvedName":"onFocusTerminal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:handleSend","kind":"calls","metadata":{"unresolvedName":"handleSend"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:createStickyModifiers","kind":"calls","metadata":{"unresolvedName":"createStickyModifiers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","kind":"calls","metadata":{"unresolvedName":"useInputCapabilities"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","kind":"calls","metadata":{"unresolvedName":"useTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"calls","metadata":{"unresolvedName":"useLayoutStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:panelTabs.find","kind":"calls","metadata":{"unresolvedName":"panelTabs.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:Number.isSafeInteger","kind":"calls","metadata":{"unresolvedName":"Number.isSafeInteger"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:setStickyModifiers","kind":"calls","metadata":{"unresolvedName":"setStickyModifiers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminalRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"terminalRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:applyStickyModifiers","kind":"calls","metadata":{"unresolvedName":"applyStickyModifiers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:transportSendRef.current","kind":"calls","metadata":{"unresolvedName":"transportSendRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:hasStickyModifier","kind":"calls","metadata":{"unresolvedName":"hasStickyModifier"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:clearStickyModifiers","kind":"calls","metadata":{"unresolvedName":"clearStickyModifiers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:setHasBeenActive","kind":"calls","metadata":{"unresolvedName":"setHasBeenActive"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getTerminalTheme","kind":"calls","metadata":{"unresolvedName":"getTerminalTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:isDarkMode","kind":"calls","metadata":{"unresolvedName":"isDarkMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:getComputedStyle","kind":"calls","metadata":{"unresolvedName":"getComputedStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:parseInt","kind":"calls","metadata":{"unresolvedName":"parseInt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:rootStyle.getPropertyValue('--fs-terminal').trim","kind":"calls","metadata":{"unresolvedName":"rootStyle.getPropertyValue('--fs-terminal').trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:rootStyle.getPropertyValue","kind":"calls","metadata":{"unresolvedName":"rootStyle.getPropertyValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:parseFloat","kind":"calls","metadata":{"unresolvedName":"parseFloat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:rootStyle.getPropertyValue('--fs-terminal-line-height').trim","kind":"calls","metadata":{"unresolvedName":"rootStyle.getPropertyValue('--fs-terminal-line-height').trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:rootStyle.getPropertyValue('--font-mono').trim","kind":"calls","metadata":{"unresolvedName":"rootStyle.getPropertyValue('--font-mono').trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:import('@tauri-apps/plugin-opener').then(mod => mod.openUrl(uri)).catch","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/plugin-opener').then(mod => mod.openUrl(uri)).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:import('@tauri-apps/plugin-opener').then","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/plugin-opener').then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:mod.openUrl","kind":"calls","metadata":{"unresolvedName":"mod.openUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:window.open","kind":"calls","metadata":{"unresolvedName":"window.open"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.loadAddon","kind":"calls","metadata":{"unresolvedName":"terminal.loadAddon"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.open","kind":"calls","metadata":{"unresolvedName":"terminal.open"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.attachCustomKeyEventHandler","kind":"calls","metadata":{"unresolvedName":"terminal.attachCustomKeyEventHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:keybindingStore.findMatchingAction","kind":"calls","metadata":{"unresolvedName":"keybindingStore.findMatchingAction"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:isNativePasteShortcut","kind":"calls","metadata":{"unresolvedName":"isNativePasteShortcut"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:readTextFromClipboard()\r\n .then","kind":"calls","metadata":{"unresolvedName":"readTextFromClipboard()\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:readTextFromClipboard","kind":"calls","metadata":{"unresolvedName":"readTextFromClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:sendTerminalData","kind":"calls","metadata":{"unresolvedName":"sendTerminalData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.hasSelection","kind":"calls","metadata":{"unresolvedName":"terminal.hasSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.getSelection","kind":"calls","metadata":{"unresolvedName":"terminal.getSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:copyTextToClipboard(selected).catch","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard(selected).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.clearSelection","kind":"calls","metadata":{"unresolvedName":"terminal.clearSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:copyTextToClipboard(selected)\r\n .then","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard(selected)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:canReadClipboardText","kind":"calls","metadata":{"unresolvedName":"canReadClipboardText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.focus","kind":"calls","metadata":{"unresolvedName":"terminal.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:readTextFromClipboard()\r\n .then","kind":"calls","metadata":{"unresolvedName":"readTextFromClipboard()\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminalElement?.addEventListener","kind":"calls","metadata":{"unresolvedName":"terminalElement?.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:textarea.setAttribute","kind":"calls","metadata":{"unresolvedName":"textarea.setAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:textarea.addEventListener","kind":"calls","metadata":{"unresolvedName":"textarea.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:logger.log","kind":"calls","metadata":{"unresolvedName":"logger.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:layoutStore.updateTerminalTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.updateTerminalTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:updatePtySession(ptyId, { size: { cols, rows } }, terminalDirectory).catch","kind":"calls","metadata":{"unresolvedName":"updatePtySession(ptyId, { size: { cols, rows } }, terminalDirectory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:updatePtySession","kind":"calls","metadata":{"unresolvedName":"updatePtySession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:resetTransport","kind":"calls","metadata":{"unresolvedName":"resetTransport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.write","kind":"calls","metadata":{"unresolvedName":"terminal.write"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:Math.pow","kind":"calls","metadata":{"unresolvedName":"Math.pow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:(delay / 1000).toFixed","kind":"calls","metadata":{"unresolvedName":"(delay / 1000).toFixed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","kind":"calls","metadata":{"unresolvedName":"connectTransport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:fitAddon.fit","kind":"calls","metadata":{"unresolvedName":"fitAddon.fit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:import('../api/ptyBridge')\r\n .then","kind":"calls","metadata":{"unresolvedName":"import('../api/ptyBridge')\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts:connectTauriPty","kind":"calls","metadata":{"unresolvedName":"connectTauriPty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parsePtyFrame","kind":"calls","metadata":{"unresolvedName":"parsePtyFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:connection.close","kind":"calls","metadata":{"unresolvedName":"connection.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:connection.send","kind":"calls","metadata":{"unresolvedName":"connection.send"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleDisconnected","kind":"calls","metadata":{"unresolvedName":"handleDisconnected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:getPtyConnectUrl","kind":"calls","metadata":{"unresolvedName":"getPtyConnectUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:ws.send","kind":"calls","metadata":{"unresolvedName":"ws.send"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:ws?.close","kind":"calls","metadata":{"unresolvedName":"ws?.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:disposeData?.dispose","kind":"calls","metadata":{"unresolvedName":"disposeData?.dispose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.onData","kind":"calls","metadata":{"unresolvedName":"terminal.onData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.scrollToLine","kind":"calls","metadata":{"unresolvedName":"terminal.scrollToLine"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:scheduleInitialConnect","kind":"calls","metadata":{"unresolvedName":"scheduleInitialConnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.onTitleChange","kind":"calls","metadata":{"unresolvedName":"terminal.onTitleChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:layoutStore.updateTerminalShellTitle","kind":"calls","metadata":{"unresolvedName":"layoutStore.updateTerminalShellTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:layoutStore.updateTerminalSnapshot","kind":"calls","metadata":{"unresolvedName":"layoutStore.updateTerminalSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:serializeAddon.serialize","kind":"calls","metadata":{"unresolvedName":"serializeAddon.serialize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:transportDisconnectRef.current","kind":"calls","metadata":{"unresolvedName":"transportDisconnectRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:disposeTitle?.dispose","kind":"calls","metadata":{"unresolvedName":"disposeTitle?.dispose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:textarea?.removeEventListener","kind":"calls","metadata":{"unresolvedName":"textarea?.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminalElement?.removeEventListener","kind":"calls","metadata":{"unresolvedName":"terminalElement?.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:fitAddon.dispose","kind":"calls","metadata":{"unresolvedName":"fitAddon.dispose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:serializeAddon.dispose","kind":"calls","metadata":{"unresolvedName":"serializeAddon.dispose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:webLinksAddon.dispose","kind":"calls","metadata":{"unresolvedName":"webLinksAddon.dispose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.dispose","kind":"calls","metadata":{"unresolvedName":"terminal.dispose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.element?.querySelector","kind":"calls","metadata":{"unresolvedName":"terminal.element?.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:setIsTouchScrolling","kind":"calls","metadata":{"unresolvedName":"setIsTouchScrolling"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:stopMomentum","kind":"calls","metadata":{"unresolvedName":"stopMomentum"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:startMomentum","kind":"calls","metadata":{"unresolvedName":"startMomentum"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:container.addEventListener","kind":"calls","metadata":{"unresolvedName":"container.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:container.removeEventListener","kind":"calls","metadata":{"unresolvedName":"container.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:fitAddonRef.current.fit","kind":"calls","metadata":{"unresolvedName":"fitAddonRef.current.fit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:resizeObserver.observe","kind":"calls","metadata":{"unresolvedName":"resizeObserver.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:handleResize","kind":"calls","metadata":{"unresolvedName":"handleResize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:resizeObserver.disconnect","kind":"calls","metadata":{"unresolvedName":"resizeObserver.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:observer.observe","kind":"calls","metadata":{"unresolvedName":"observer.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:observer.disconnect","kind":"calls","metadata":{"unresolvedName":"observer.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminalRef.current.focus","kind":"calls","metadata":{"unresolvedName":"terminalRef.current.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:fitAddonRef.current?.fit","kind":"calls","metadata":{"unresolvedName":"fitAddonRef.current?.fit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:focusTerminal","kind":"calls","metadata":{"unresolvedName":"focusTerminal"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:createStickyModifiers","kind":"calls","metadata":{"unresolvedName":"createStickyModifiers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:setStickyModifiers","kind":"calls","metadata":{"unresolvedName":"setStickyModifiers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:setStickyModifiers","kind":"calls","metadata":{"unresolvedName":"setStickyModifiers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminalRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"terminalRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:applyStickyModifiers","kind":"calls","metadata":{"unresolvedName":"applyStickyModifiers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:transportSendRef.current","kind":"calls","metadata":{"unresolvedName":"transportSendRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:hasStickyModifier","kind":"calls","metadata":{"unresolvedName":"hasStickyModifier"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:clearStickyModifiers","kind":"calls","metadata":{"unresolvedName":"clearStickyModifiers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:setHasBeenActive","kind":"calls","metadata":{"unresolvedName":"setHasBeenActive"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getTerminalTheme","kind":"calls","metadata":{"unresolvedName":"getTerminalTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:isDarkMode","kind":"calls","metadata":{"unresolvedName":"isDarkMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:getComputedStyle","kind":"calls","metadata":{"unresolvedName":"getComputedStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:parseInt","kind":"calls","metadata":{"unresolvedName":"parseInt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:rootStyle.getPropertyValue('--fs-terminal').trim","kind":"calls","metadata":{"unresolvedName":"rootStyle.getPropertyValue('--fs-terminal').trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:rootStyle.getPropertyValue","kind":"calls","metadata":{"unresolvedName":"rootStyle.getPropertyValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:parseFloat","kind":"calls","metadata":{"unresolvedName":"parseFloat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:rootStyle.getPropertyValue('--fs-terminal-line-height').trim","kind":"calls","metadata":{"unresolvedName":"rootStyle.getPropertyValue('--fs-terminal-line-height').trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:rootStyle.getPropertyValue('--font-mono').trim","kind":"calls","metadata":{"unresolvedName":"rootStyle.getPropertyValue('--font-mono').trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:import('@tauri-apps/plugin-opener').then(mod => mod.openUrl(uri)).catch","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/plugin-opener').then(mod => mod.openUrl(uri)).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:import('@tauri-apps/plugin-opener').then","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/plugin-opener').then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:mod.openUrl","kind":"calls","metadata":{"unresolvedName":"mod.openUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:window.open","kind":"calls","metadata":{"unresolvedName":"window.open"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.loadAddon","kind":"calls","metadata":{"unresolvedName":"terminal.loadAddon"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.open","kind":"calls","metadata":{"unresolvedName":"terminal.open"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:clearStickyModifiers","kind":"calls","metadata":{"unresolvedName":"clearStickyModifiers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.attachCustomKeyEventHandler","kind":"calls","metadata":{"unresolvedName":"terminal.attachCustomKeyEventHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:keybindingStore.findMatchingAction","kind":"calls","metadata":{"unresolvedName":"keybindingStore.findMatchingAction"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:isNativePasteShortcut","kind":"calls","metadata":{"unresolvedName":"isNativePasteShortcut"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:readTextFromClipboard()\r\n .then","kind":"calls","metadata":{"unresolvedName":"readTextFromClipboard()\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:readTextFromClipboard","kind":"calls","metadata":{"unresolvedName":"readTextFromClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:sendTerminalData","kind":"calls","metadata":{"unresolvedName":"sendTerminalData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.hasSelection","kind":"calls","metadata":{"unresolvedName":"terminal.hasSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.getSelection","kind":"calls","metadata":{"unresolvedName":"terminal.getSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:copyTextToClipboard(selected).catch","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard(selected).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.clearSelection","kind":"calls","metadata":{"unresolvedName":"terminal.clearSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:copyTextToClipboard(selected)\r\n .then","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard(selected)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:canReadClipboardText","kind":"calls","metadata":{"unresolvedName":"canReadClipboardText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.focus","kind":"calls","metadata":{"unresolvedName":"terminal.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:readTextFromClipboard()\r\n .then","kind":"calls","metadata":{"unresolvedName":"readTextFromClipboard()\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminalElement?.addEventListener","kind":"calls","metadata":{"unresolvedName":"terminalElement?.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:textarea.setAttribute","kind":"calls","metadata":{"unresolvedName":"textarea.setAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:textarea.addEventListener","kind":"calls","metadata":{"unresolvedName":"textarea.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:logger.log","kind":"calls","metadata":{"unresolvedName":"logger.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:layoutStore.updateTerminalTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.updateTerminalTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:updatePtySession(ptyId, { size: { cols, rows } }, terminalDirectory).catch","kind":"calls","metadata":{"unresolvedName":"updatePtySession(ptyId, { size: { cols, rows } }, terminalDirectory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:updatePtySession","kind":"calls","metadata":{"unresolvedName":"updatePtySession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:resetTransport","kind":"calls","metadata":{"unresolvedName":"resetTransport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.write","kind":"calls","metadata":{"unresolvedName":"terminal.write"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:Math.pow","kind":"calls","metadata":{"unresolvedName":"Math.pow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:(delay / 1000).toFixed","kind":"calls","metadata":{"unresolvedName":"(delay / 1000).toFixed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","kind":"calls","metadata":{"unresolvedName":"connectTransport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:fitAddon.fit","kind":"calls","metadata":{"unresolvedName":"fitAddon.fit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:import('../api/ptyBridge')\r\n .then","kind":"calls","metadata":{"unresolvedName":"import('../api/ptyBridge')\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts:connectTauriPty","kind":"calls","metadata":{"unresolvedName":"connectTauriPty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parsePtyFrame","kind":"calls","metadata":{"unresolvedName":"parsePtyFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:connection.close","kind":"calls","metadata":{"unresolvedName":"connection.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:connection.send","kind":"calls","metadata":{"unresolvedName":"connection.send"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleDisconnected","kind":"calls","metadata":{"unresolvedName":"handleDisconnected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:getPtyConnectUrl","kind":"calls","metadata":{"unresolvedName":"getPtyConnectUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:ws.send","kind":"calls","metadata":{"unresolvedName":"ws.send"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:ws?.close","kind":"calls","metadata":{"unresolvedName":"ws?.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:disposeData?.dispose","kind":"calls","metadata":{"unresolvedName":"disposeData?.dispose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.onData","kind":"calls","metadata":{"unresolvedName":"terminal.onData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.scrollToLine","kind":"calls","metadata":{"unresolvedName":"terminal.scrollToLine"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:scheduleInitialConnect","kind":"calls","metadata":{"unresolvedName":"scheduleInitialConnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.onTitleChange","kind":"calls","metadata":{"unresolvedName":"terminal.onTitleChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:layoutStore.updateTerminalShellTitle","kind":"calls","metadata":{"unresolvedName":"layoutStore.updateTerminalShellTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:layoutStore.updateTerminalSnapshot","kind":"calls","metadata":{"unresolvedName":"layoutStore.updateTerminalSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:serializeAddon.serialize","kind":"calls","metadata":{"unresolvedName":"serializeAddon.serialize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:transportDisconnectRef.current","kind":"calls","metadata":{"unresolvedName":"transportDisconnectRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:disposeTitle?.dispose","kind":"calls","metadata":{"unresolvedName":"disposeTitle?.dispose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:textarea?.removeEventListener","kind":"calls","metadata":{"unresolvedName":"textarea?.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminalElement?.removeEventListener","kind":"calls","metadata":{"unresolvedName":"terminalElement?.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:fitAddon.dispose","kind":"calls","metadata":{"unresolvedName":"fitAddon.dispose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:serializeAddon.dispose","kind":"calls","metadata":{"unresolvedName":"serializeAddon.dispose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:webLinksAddon.dispose","kind":"calls","metadata":{"unresolvedName":"webLinksAddon.dispose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.dispose","kind":"calls","metadata":{"unresolvedName":"terminal.dispose"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:import('@tauri-apps/plugin-opener').then(mod => mod.openUrl(uri)).catch","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/plugin-opener').then(mod => mod.openUrl(uri)).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:import('@tauri-apps/plugin-opener').then","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/plugin-opener').then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:mod.openUrl","kind":"calls","metadata":{"unresolvedName":"mod.openUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:window.open","kind":"calls","metadata":{"unresolvedName":"window.open"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:keybindingStore.findMatchingAction","kind":"calls","metadata":{"unresolvedName":"keybindingStore.findMatchingAction"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:isNativePasteShortcut","kind":"calls","metadata":{"unresolvedName":"isNativePasteShortcut"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:readTextFromClipboard()\r\n .then","kind":"calls","metadata":{"unresolvedName":"readTextFromClipboard()\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:readTextFromClipboard","kind":"calls","metadata":{"unresolvedName":"readTextFromClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:sendTerminalData","kind":"calls","metadata":{"unresolvedName":"sendTerminalData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.hasSelection","kind":"calls","metadata":{"unresolvedName":"terminal.hasSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.getSelection","kind":"calls","metadata":{"unresolvedName":"terminal.getSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:copyTextToClipboard(selected).catch","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard(selected).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.clearSelection","kind":"calls","metadata":{"unresolvedName":"terminal.clearSelection"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:sendTerminalData","kind":"calls","metadata":{"unresolvedName":"sendTerminalData"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleSelectionCopy","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleSelectionCopy","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleSelectionCopy","to":"external:terminal.hasSelection","kind":"calls","metadata":{"unresolvedName":"terminal.hasSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleSelectionCopy","to":"external:terminal.getSelection","kind":"calls","metadata":{"unresolvedName":"terminal.getSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleSelectionCopy","to":"external:copyTextToClipboard(selected)\r\n .then","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard(selected)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleSelectionCopy","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleSelectionCopy","to":"external:terminal.clearSelection","kind":"calls","metadata":{"unresolvedName":"terminal.clearSelection"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleContextMenuPaste","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleContextMenuPaste","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleContextMenuPaste","to":"external:terminal.hasSelection","kind":"calls","metadata":{"unresolvedName":"terminal.hasSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleContextMenuPaste","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleContextMenuPaste","to":"external:terminal.getSelection","kind":"calls","metadata":{"unresolvedName":"terminal.getSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleContextMenuPaste","to":"external:copyTextToClipboard(selected).catch","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard(selected).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleContextMenuPaste","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleContextMenuPaste","to":"external:terminal.clearSelection","kind":"calls","metadata":{"unresolvedName":"terminal.clearSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleContextMenuPaste","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:canReadClipboardText","kind":"calls","metadata":{"unresolvedName":"canReadClipboardText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleContextMenuPaste","to":"external:terminal.focus","kind":"calls","metadata":{"unresolvedName":"terminal.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleContextMenuPaste","to":"external:readTextFromClipboard()\r\n .then","kind":"calls","metadata":{"unresolvedName":"readTextFromClipboard()\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleContextMenuPaste","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:readTextFromClipboard","kind":"calls","metadata":{"unresolvedName":"readTextFromClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleContextMenuPaste","to":"symbol-name:sendTerminalData","kind":"calls","metadata":{"unresolvedName":"sendTerminalData"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:sendTerminalData","kind":"calls","metadata":{"unresolvedName":"sendTerminalData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.focus","kind":"calls","metadata":{"unresolvedName":"terminal.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:resetTransport","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:resetTransport","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleConnected","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleConnected","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleConnected","to":"external:logger.log","kind":"calls","metadata":{"unresolvedName":"logger.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleConnected","to":"external:layoutStore.updateTerminalTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.updateTerminalTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleConnected","to":"external:updatePtySession(ptyId, { size: { cols, rows } }, terminalDirectory).catch","kind":"calls","metadata":{"unresolvedName":"updatePtySession(ptyId, { size: { cols, rows } }, terminalDirectory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleConnected","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:updatePtySession","kind":"calls","metadata":{"unresolvedName":"updatePtySession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleDisconnected","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleDisconnected","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleDisconnected","to":"external:logger.log","kind":"calls","metadata":{"unresolvedName":"logger.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleDisconnected","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:resetTransport","kind":"calls","metadata":{"unresolvedName":"resetTransport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleDisconnected","to":"external:layoutStore.updateTerminalTab","kind":"calls","metadata":{"unresolvedName":"layoutStore.updateTerminalTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleDisconnected","to":"external:terminal.write","kind":"calls","metadata":{"unresolvedName":"terminal.write"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleDisconnected","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleDisconnected","to":"external:Math.pow","kind":"calls","metadata":{"unresolvedName":"Math.pow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleDisconnected","to":"external:(delay / 1000).toFixed","kind":"calls","metadata":{"unresolvedName":"(delay / 1000).toFixed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleDisconnected","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleDisconnected","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","kind":"calls","metadata":{"unresolvedName":"connectTransport"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","kind":"calls","metadata":{"unresolvedName":"connectTransport"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","to":"external:fitAddon.fit","kind":"calls","metadata":{"unresolvedName":"fitAddon.fit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","to":"external:logger.log","kind":"calls","metadata":{"unresolvedName":"logger.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","to":"external:import('../api/ptyBridge')\r\n .then","kind":"calls","metadata":{"unresolvedName":"import('../api/ptyBridge')\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/ptyBridge.ts:connectTauriPty","kind":"calls","metadata":{"unresolvedName":"connectTauriPty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parsePtyFrame","kind":"calls","metadata":{"unresolvedName":"parsePtyFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","to":"external:terminal.write","kind":"calls","metadata":{"unresolvedName":"terminal.write"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","to":"external:connection.close","kind":"calls","metadata":{"unresolvedName":"connection.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","to":"external:connection.send","kind":"calls","metadata":{"unresolvedName":"connection.send"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleDisconnected","kind":"calls","metadata":{"unresolvedName":"handleDisconnected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:getPtyConnectUrl","kind":"calls","metadata":{"unresolvedName":"getPtyConnectUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","to":"external:ws.send","kind":"calls","metadata":{"unresolvedName":"ws.send"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","to":"external:ws?.close","kind":"calls","metadata":{"unresolvedName":"ws?.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","to":"external:disposeData?.dispose","kind":"calls","metadata":{"unresolvedName":"disposeData?.dispose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","to":"external:terminal.onData","kind":"calls","metadata":{"unresolvedName":"terminal.onData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:connectTransport","to":"symbol-name:sendTerminalData","kind":"calls","metadata":{"unresolvedName":"sendTerminalData"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:onMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:onMessage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:onMessage","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parsePtyFrame","kind":"calls","metadata":{"unresolvedName":"parsePtyFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:onMessage","to":"external:terminal.write","kind":"calls","metadata":{"unresolvedName":"terminal.write"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:onError","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:onError","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:onError","to":"external:logger.log","kind":"calls","metadata":{"unresolvedName":"logger.log"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:connection.close","kind":"calls","metadata":{"unresolvedName":"connection.close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:connection.send","kind":"calls","metadata":{"unresolvedName":"connection.send"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:logger.log","kind":"calls","metadata":{"unresolvedName":"logger.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleDisconnected","kind":"calls","metadata":{"unresolvedName":"handleDisconnected"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:ws.send","kind":"calls","metadata":{"unresolvedName":"ws.send"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parsePtyFrame","kind":"calls","metadata":{"unresolvedName":"parsePtyFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.write","kind":"calls","metadata":{"unresolvedName":"terminal.write"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleDisconnected","kind":"calls","metadata":{"unresolvedName":"handleDisconnected"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:logger.log","kind":"calls","metadata":{"unresolvedName":"logger.log"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:sendTerminalData","kind":"calls","metadata":{"unresolvedName":"sendTerminalData"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:scheduleInitialConnect","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:scheduleInitialConnect","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:scheduleInitialConnect","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.scrollToLine","kind":"calls","metadata":{"unresolvedName":"terminal.scrollToLine"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:scheduleInitialConnect","kind":"calls","metadata":{"unresolvedName":"scheduleInitialConnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:layoutStore.updateTerminalShellTitle","kind":"calls","metadata":{"unresolvedName":"layoutStore.updateTerminalShellTitle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:layoutStore.updateTerminalSnapshot","kind":"calls","metadata":{"unresolvedName":"layoutStore.updateTerminalSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:serializeAddon.serialize","kind":"calls","metadata":{"unresolvedName":"serializeAddon.serialize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:transportDisconnectRef.current","kind":"calls","metadata":{"unresolvedName":"transportDisconnectRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:disposeData?.dispose","kind":"calls","metadata":{"unresolvedName":"disposeData?.dispose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:disposeTitle?.dispose","kind":"calls","metadata":{"unresolvedName":"disposeTitle?.dispose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:textarea?.removeEventListener","kind":"calls","metadata":{"unresolvedName":"textarea?.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminalElement?.removeEventListener","kind":"calls","metadata":{"unresolvedName":"terminalElement?.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:resetTransport","kind":"calls","metadata":{"unresolvedName":"resetTransport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:fitAddon.dispose","kind":"calls","metadata":{"unresolvedName":"fitAddon.dispose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:serializeAddon.dispose","kind":"calls","metadata":{"unresolvedName":"serializeAddon.dispose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:webLinksAddon.dispose","kind":"calls","metadata":{"unresolvedName":"webLinksAddon.dispose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.dispose","kind":"calls","metadata":{"unresolvedName":"terminal.dispose"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminal.element?.querySelector","kind":"calls","metadata":{"unresolvedName":"terminal.element?.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:setIsTouchScrolling","kind":"calls","metadata":{"unresolvedName":"setIsTouchScrolling"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:stopMomentum","kind":"calls","metadata":{"unresolvedName":"stopMomentum"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:startMomentum","kind":"calls","metadata":{"unresolvedName":"startMomentum"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:container.addEventListener","kind":"calls","metadata":{"unresolvedName":"container.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:container.removeEventListener","kind":"calls","metadata":{"unresolvedName":"container.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:stopMomentum","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:stopMomentum","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:stopMomentum","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:startMomentum","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:startMomentum","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:startMomentum","to":"external:terminal.element?.querySelector","kind":"calls","metadata":{"unresolvedName":"terminal.element?.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:startMomentum","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:startMomentum","to":"symbol-name:setIsTouchScrolling","kind":"calls","metadata":{"unresolvedName":"setIsTouchScrolling"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:startMomentum","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:startMomentum","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:step","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:step","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:step","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:step","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:step","to":"symbol-name:setIsTouchScrolling","kind":"calls","metadata":{"unresolvedName":"setIsTouchScrolling"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:step","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchStart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchStart","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchStart","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:stopMomentum","kind":"calls","metadata":{"unresolvedName":"stopMomentum"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchStart","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchStart","to":"external:terminal.element?.querySelector","kind":"calls","metadata":{"unresolvedName":"terminal.element?.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchStart","to":"symbol-name:setIsTouchScrolling","kind":"calls","metadata":{"unresolvedName":"setIsTouchScrolling"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchMove","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchMove","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchMove","to":"external:terminal.element?.querySelector","kind":"calls","metadata":{"unresolvedName":"terminal.element?.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchMove","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchMove","to":"symbol-name:setIsTouchScrolling","kind":"calls","metadata":{"unresolvedName":"setIsTouchScrolling"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchMove","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchMove","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchEnd","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchEnd","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchEnd","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:startMomentum","kind":"calls","metadata":{"unresolvedName":"startMomentum"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:stopMomentum","kind":"calls","metadata":{"unresolvedName":"stopMomentum"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:container.removeEventListener","kind":"calls","metadata":{"unresolvedName":"container.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:fitAddonRef.current.fit","kind":"calls","metadata":{"unresolvedName":"fitAddonRef.current.fit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:updatePtySession","kind":"calls","metadata":{"unresolvedName":"updatePtySession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:resizeObserver.observe","kind":"calls","metadata":{"unresolvedName":"resizeObserver.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:handleResize","kind":"calls","metadata":{"unresolvedName":"handleResize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:resizeObserver.disconnect","kind":"calls","metadata":{"unresolvedName":"resizeObserver.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleResize","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleResize","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleResize","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleResize","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleResize","to":"external:fitAddonRef.current.fit","kind":"calls","metadata":{"unresolvedName":"fitAddonRef.current.fit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleResize","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:updatePtySession","kind":"calls","metadata":{"unresolvedName":"updatePtySession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:fitAddonRef.current.fit","kind":"calls","metadata":{"unresolvedName":"fitAddonRef.current.fit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:updatePtySession","kind":"calls","metadata":{"unresolvedName":"updatePtySession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handlePanelResizeStart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handlePanelResizeStart","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:resizeObserver.disconnect","kind":"calls","metadata":{"unresolvedName":"resizeObserver.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getTerminalTheme","kind":"calls","metadata":{"unresolvedName":"getTerminalTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:isDarkMode","kind":"calls","metadata":{"unresolvedName":"isDarkMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:observer.observe","kind":"calls","metadata":{"unresolvedName":"observer.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:observer.disconnect","kind":"calls","metadata":{"unresolvedName":"observer.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:getTerminalTheme","kind":"calls","metadata":{"unresolvedName":"getTerminalTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:isDarkMode","kind":"calls","metadata":{"unresolvedName":"isDarkMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:terminalRef.current.focus","kind":"calls","metadata":{"unresolvedName":"terminalRef.current.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:fitAddonRef.current?.fit","kind":"calls","metadata":{"unresolvedName":"fitAddonRef.current?.fit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:fitAddonRef.current?.fit","kind":"calls","metadata":{"unresolvedName":"fitAddonRef.current?.fit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:clearStickyModifiers","kind":"calls","metadata":{"unresolvedName":"clearStickyModifiers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:fitAddonRef.current.fit","kind":"calls","metadata":{"unresolvedName":"fitAddonRef.current.fit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:updatePtySession","kind":"calls","metadata":{"unresolvedName":"updatePtySession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handlePanelResizeEnd","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handlePanelResizeEnd","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handlePanelResizeEnd","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handlePanelResizeEnd","to":"external:fitAddonRef.current.fit","kind":"calls","metadata":{"unresolvedName":"fitAddonRef.current.fit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handlePanelResizeEnd","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:updatePtySession","kind":"calls","metadata":{"unresolvedName":"updatePtySession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"external:fitAddonRef.current.fit","kind":"calls","metadata":{"unresolvedName":"fitAddonRef.current.fit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:updatePtySession","kind":"calls","metadata":{"unresolvedName":"updatePtySession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:focusTerminal","kind":"calls","metadata":{"unresolvedName":"focusTerminal"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:","to":"symbol-name:focusTerminal","kind":"calls","metadata":{"unresolvedName":"focusTerminal"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:Toast","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:Toast","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:Toast","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:Toast","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:Toast","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:Toast","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:Toast","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:Toast","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:Toast","to":"external:notificationStore.pauseToast","kind":"calls","metadata":{"unresolvedName":"notificationStore.pauseToast"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:Toast","to":"external:notificationStore.resumeToast","kind":"calls","metadata":{"unresolvedName":"notificationStore.resumeToast"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:Toast","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:Toast","to":"symbol-name:onDismiss","kind":"calls","metadata":{"unresolvedName":"onDismiss"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:Toast","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","to":"external:notificationStore.pauseToast","kind":"calls","metadata":{"unresolvedName":"notificationStore.pauseToast"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","to":"external:notificationStore.resumeToast","kind":"calls","metadata":{"unresolvedName":"notificationStore.resumeToast"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","to":"symbol-name:onDismiss","kind":"calls","metadata":{"unresolvedName":"onDismiss"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:UpdateToast","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:UpdateToast","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:UpdateToast","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:UpdateToast","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:useUpdateStore","kind":"calls","metadata":{"unresolvedName":"useUpdateStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:UpdateToast","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:shouldShowUpdateToast","kind":"calls","metadata":{"unresolvedName":"shouldShowUpdateToast"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:UpdateToast","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:hasUpdateAvailable","kind":"calls","metadata":{"unresolvedName":"hasUpdateAvailable"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:UpdateToast","to":"external:updateStore.hideToastForCurrentVersion","kind":"calls","metadata":{"unresolvedName":"updateStore.hideToastForCurrentVersion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:UpdateToast","to":"symbol-name:onOpenAbout","kind":"calls","metadata":{"unresolvedName":"onOpenAbout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:UpdateToast","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:UpdateToast","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:UpdateToast","to":"external:updateStore.dismissCurrentVersion","kind":"calls","metadata":{"unresolvedName":"updateStore.dismissCurrentVersion"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","to":"external:updateStore.hideToastForCurrentVersion","kind":"calls","metadata":{"unresolvedName":"updateStore.hideToastForCurrentVersion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","to":"symbol-name:onOpenAbout","kind":"calls","metadata":{"unresolvedName":"onOpenAbout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:","to":"external:updateStore.dismissCurrentVersion","kind":"calls","metadata":{"unresolvedName":"updateStore.dismissCurrentVersion"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:ToastContainer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:ToastContainer","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:ToastContainer","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:ToastContainer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useNotificationStore","kind":"calls","metadata":{"unresolvedName":"useNotificationStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:ToastContainer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:useUpdateStore","kind":"calls","metadata":{"unresolvedName":"useUpdateStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:ToastContainer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:shouldShowUpdateToast","kind":"calls","metadata":{"unresolvedName":"shouldShowUpdateToast"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:ToastContainer","to":"external:notificationStore.dismissToast","kind":"calls","metadata":{"unresolvedName":"notificationStore.dismissToast"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:ToastContainer","to":"external:notificationStore.markRead","kind":"calls","metadata":{"unresolvedName":"notificationStore.markRead"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:ToastContainer","to":"external:window.location.assign","kind":"calls","metadata":{"unresolvedName":"window.location.assign"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:ToastContainer","to":"external:toasts.map","kind":"calls","metadata":{"unresolvedName":"toasts.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:ToastContainer","to":"symbol-name:handleClick","kind":"calls","metadata":{"unresolvedName":"handleClick"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:ToastContainer","to":"external:notificationStore.dismissAllToasts","kind":"calls","metadata":{"unresolvedName":"notificationStore.dismissAllToasts"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:ToastContainer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:handleClick","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:handleClick","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:handleClick","to":"external:notificationStore.dismissToast","kind":"calls","metadata":{"unresolvedName":"notificationStore.dismissToast"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:handleClick","to":"external:notificationStore.markRead","kind":"calls","metadata":{"unresolvedName":"notificationStore.markRead"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ToastContainer.tsx:handleClick","to":"external:window.location.assign","kind":"calls","metadata":{"unresolvedName":"window.location.assign"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:AnimatedPresence","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:AnimatedPresence","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:AnimatedPresence","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:AnimatedPresence","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:AnimatedPresence","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:AnimatedPresence","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:AnimatedPresence","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:AnimatedPresence","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:ExpandableSection","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/AnimatedPresence.tsx:ExpandableSection","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx:ConfirmDialog","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx:ConfirmDialog","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx:ConfirmDialog","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx:ConfirmDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx:ConfirmDialog","to":"symbol-name:onConfirm","kind":"calls","metadata":{"unresolvedName":"onConfirm"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx:","to":"symbol-name:onConfirm","kind":"calls","metadata":{"unresolvedName":"onConfirm"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx","to":"external:clsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:CopyButton","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:CopyButton","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:CopyButton","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:CopyButton","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:CopyButton","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:CopyButton","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:CopyButton","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:CopyButton","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:CopyButton","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:CopyButton","to":"symbol-name:setCopied","kind":"calls","metadata":{"unresolvedName":"setCopied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:CopyButton","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:CopyButton","to":"symbol-name:clipboardErrorHandler","kind":"calls","metadata":{"unresolvedName":"clipboardErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:CopyButton","to":"symbol-name:clsx","kind":"calls","metadata":{"unresolvedName":"clsx"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:","to":"symbol-name:setCopied","kind":"calls","metadata":{"unresolvedName":"setCopied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/CopyButton.tsx:","to":"symbol-name:clipboardErrorHandler","kind":"calls","metadata":{"unresolvedName":"clipboardErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(screen.getByRole('dialog', { name: 'Test Dialog' })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('dialog', { name: 'Test Dialog' })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(screen.getByText('Test Dialog')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('Test Dialog')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(screen.getByText('dialog body')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('dialog body')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(onClose).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(onClose).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(screen.queryByText('dialog body')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByText('dialog body')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:screen.queryByText","kind":"calls","metadata":{"unresolvedName":"screen.queryByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(backdrop).not.toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(backdrop).not.toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:fireEvent.pointerDown","kind":"calls","metadata":{"unresolvedName":"fireEvent.pointerDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:setIsOpen","kind":"calls","metadata":{"unresolvedName":"setIsOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:trigger.focus","kind":"calls","metadata":{"unresolvedName":"trigger.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(screen.getByRole('button', { name: 'Close' })).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Close' })).toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(screen.getByRole('dialog', { name: 'Settings' })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('dialog', { name: 'Settings' })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:setIsFirstOpen","kind":"calls","metadata":{"unresolvedName":"setIsFirstOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:setIsSecondOpen","kind":"calls","metadata":{"unresolvedName":"setIsSecondOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(screen.getByRole('dialog', { name: 'Second Dialog' })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('dialog', { name: 'Second Dialog' })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(document.getElementById('first-trigger')).not.toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(document.getElementById('first-trigger')).not.toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:fireEvent.keyDown","kind":"calls","metadata":{"unresolvedName":"fireEvent.keyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(secondClose).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(secondClose).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(firstClose).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(firstClose).not.toHaveBeenCalled"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(screen.getByRole('dialog', { name: 'Test Dialog' })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('dialog', { name: 'Test Dialog' })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(screen.getByText('Test Dialog')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('Test Dialog')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(screen.getByText('dialog body')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('dialog body')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(onClose).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(onClose).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(screen.queryByText('dialog body')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByText('dialog body')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:screen.queryByText","kind":"calls","metadata":{"unresolvedName":"screen.queryByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(backdrop).not.toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(backdrop).not.toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:fireEvent.pointerDown","kind":"calls","metadata":{"unresolvedName":"fireEvent.pointerDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(onClose).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(onClose).toHaveBeenCalledTimes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:setIsOpen","kind":"calls","metadata":{"unresolvedName":"setIsOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:trigger.focus","kind":"calls","metadata":{"unresolvedName":"trigger.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(screen.getByRole('button', { name: 'Close' })).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Close' })).toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:Harness","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:Harness","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:Harness","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:Harness","to":"symbol-name:setIsOpen","kind":"calls","metadata":{"unresolvedName":"setIsOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(screen.getByRole('dialog', { name: 'Settings' })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('dialog', { name: 'Settings' })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:setIsFirstOpen","kind":"calls","metadata":{"unresolvedName":"setIsFirstOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:setIsSecondOpen","kind":"calls","metadata":{"unresolvedName":"setIsSecondOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(screen.getByRole('dialog', { name: 'Second Dialog' })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('dialog', { name: 'Second Dialog' })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(document.getElementById('first-trigger')).not.toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(document.getElementById('first-trigger')).not.toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:Harness","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:Harness","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:Harness","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:Harness","to":"symbol-name:setIsFirstOpen","kind":"calls","metadata":{"unresolvedName":"setIsFirstOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:Harness","to":"symbol-name:setIsSecondOpen","kind":"calls","metadata":{"unresolvedName":"setIsSecondOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:setIsFirstOpen","kind":"calls","metadata":{"unresolvedName":"setIsFirstOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:setIsSecondOpen","kind":"calls","metadata":{"unresolvedName":"setIsSecondOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:fireEvent.keyDown","kind":"calls","metadata":{"unresolvedName":"fireEvent.keyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(secondClose).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(secondClose).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.test.tsx:","to":"external:expect(firstClose).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(firstClose).not.toHaveBeenCalled"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"external:react-dom","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:useId","kind":"calls","metadata":{"unresolvedName":"useId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:container.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"container.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:target?.focus","kind":"calls","metadata":{"unresolvedName":"target?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:document.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"document.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:document.contains","kind":"calls","metadata":{"unresolvedName":"document.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:previousFocusedElement.focus","kind":"calls","metadata":{"unresolvedName":"previousFocusedElement.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:replacement?.focus","kind":"calls","metadata":{"unresolvedName":"replacement?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:dialogs.at","kind":"calls","metadata":{"unresolvedName":"dialogs.at"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:focusFirstFocusable","kind":"calls","metadata":{"unresolvedName":"focusFirstFocusable"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:getTopOpenDialog","kind":"calls","metadata":{"unresolvedName":"getTopOpenDialog"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:activeDialog.contains","kind":"calls","metadata":{"unresolvedName":"activeDialog.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:restorePreviousFocus","kind":"calls","metadata":{"unresolvedName":"restorePreviousFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:handle.contains","kind":"calls","metadata":{"unresolvedName":"handle.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:setIsDraggingActive","kind":"calls","metadata":{"unresolvedName":"setIsDraggingActive"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:setDragY","kind":"calls","metadata":{"unresolvedName":"setDragY"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:requestClose","kind":"calls","metadata":{"unresolvedName":"requestClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:dialog.contains","kind":"calls","metadata":{"unresolvedName":"dialog.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:dialogRef.current.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"dialogRef.current.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:dialogRef.current.contains","kind":"calls","metadata":{"unresolvedName":"dialogRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:last.focus","kind":"calls","metadata":{"unresolvedName":"last.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:first.focus","kind":"calls","metadata":{"unresolvedName":"first.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:handleFocusTrap","kind":"calls","metadata":{"unresolvedName":"handleFocusTrap"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:focusDialogContent","kind":"calls","metadata":{"unresolvedName":"focusDialogContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:createPortal","kind":"calls","metadata":{"unresolvedName":"createPortal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:handleBackdropPointerDown","kind":"calls","metadata":{"unresolvedName":"handleBackdropPointerDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"symbol-name:handleBackdropClick","kind":"calls","metadata":{"unresolvedName":"handleBackdropClick"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:Dialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:container.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"container.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:target?.focus","kind":"calls","metadata":{"unresolvedName":"target?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:document.contains","kind":"calls","metadata":{"unresolvedName":"document.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:previousFocusedElement.focus","kind":"calls","metadata":{"unresolvedName":"previousFocusedElement.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:replacement?.focus","kind":"calls","metadata":{"unresolvedName":"replacement?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:document.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"document.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:dialogs.at","kind":"calls","metadata":{"unresolvedName":"dialogs.at"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:focusFirstFocusable","kind":"calls","metadata":{"unresolvedName":"focusFirstFocusable"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:getTopOpenDialog","kind":"calls","metadata":{"unresolvedName":"getTopOpenDialog"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:activeDialog.contains","kind":"calls","metadata":{"unresolvedName":"activeDialog.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:restorePreviousFocus","kind":"calls","metadata":{"unresolvedName":"restorePreviousFocus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:document.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"document.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:dialogs.at","kind":"calls","metadata":{"unresolvedName":"dialogs.at"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:focusFirstFocusable","kind":"calls","metadata":{"unresolvedName":"focusFirstFocusable"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:getTopOpenDialog","kind":"calls","metadata":{"unresolvedName":"getTopOpenDialog"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:activeDialog.contains","kind":"calls","metadata":{"unresolvedName":"activeDialog.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:restorePreviousFocus","kind":"calls","metadata":{"unresolvedName":"restorePreviousFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:focusFirstFocusable","kind":"calls","metadata":{"unresolvedName":"focusFirstFocusable"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:handle.contains","kind":"calls","metadata":{"unresolvedName":"handle.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:setIsDraggingActive","kind":"calls","metadata":{"unresolvedName":"setIsDraggingActive"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:setIsDraggingActive","kind":"calls","metadata":{"unresolvedName":"setIsDraggingActive"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:setDragY","kind":"calls","metadata":{"unresolvedName":"setDragY"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:requestClose","kind":"calls","metadata":{"unresolvedName":"requestClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:setIsDraggingActive","kind":"calls","metadata":{"unresolvedName":"setIsDraggingActive"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:setDragY","kind":"calls","metadata":{"unresolvedName":"setDragY"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:requestClose","kind":"calls","metadata":{"unresolvedName":"requestClose"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:dialog.contains","kind":"calls","metadata":{"unresolvedName":"dialog.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:focusFirstFocusable","kind":"calls","metadata":{"unresolvedName":"focusFirstFocusable"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:dialogRef.current.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"dialogRef.current.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:dialogRef.current.contains","kind":"calls","metadata":{"unresolvedName":"dialogRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:last.focus","kind":"calls","metadata":{"unresolvedName":"last.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:first.focus","kind":"calls","metadata":{"unresolvedName":"first.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:getTopOpenDialog","kind":"calls","metadata":{"unresolvedName":"getTopOpenDialog"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:requestClose","kind":"calls","metadata":{"unresolvedName":"requestClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:handleFocusTrap","kind":"calls","metadata":{"unresolvedName":"handleFocusTrap"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:handleKeyDown","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:handleKeyDown","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:handleKeyDown","to":"symbol-name:getTopOpenDialog","kind":"calls","metadata":{"unresolvedName":"getTopOpenDialog"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:handleKeyDown","to":"symbol-name:requestClose","kind":"calls","metadata":{"unresolvedName":"requestClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:handleKeyDown","to":"symbol-name:handleFocusTrap","kind":"calls","metadata":{"unresolvedName":"handleFocusTrap"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:focusDialogContent","kind":"calls","metadata":{"unresolvedName":"focusDialogContent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:getTopOpenDialog","kind":"calls","metadata":{"unresolvedName":"getTopOpenDialog"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:activeDialog.contains","kind":"calls","metadata":{"unresolvedName":"activeDialog.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:restorePreviousFocus","kind":"calls","metadata":{"unresolvedName":"restorePreviousFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:focusFirstFocusable","kind":"calls","metadata":{"unresolvedName":"focusFirstFocusable"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:getTopOpenDialog","kind":"calls","metadata":{"unresolvedName":"getTopOpenDialog"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:activeDialog.contains","kind":"calls","metadata":{"unresolvedName":"activeDialog.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:restorePreviousFocus","kind":"calls","metadata":{"unresolvedName":"restorePreviousFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:focusFirstFocusable","kind":"calls","metadata":{"unresolvedName":"focusFirstFocusable"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:handleBackdropPointerDown","kind":"calls","metadata":{"unresolvedName":"handleBackdropPointerDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"symbol-name:handleBackdropClick","kind":"calls","metadata":{"unresolvedName":"handleBackdropClick"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:DropdownHarness","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:DropdownHarness","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:DropdownHarness","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:ConstrainedDropdownHarness","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:ConstrainedDropdownHarness","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:ConstrainedDropdownHarness","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.stubGlobal","kind":"calls","metadata":{"unresolvedName":"vi.stubGlobal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.unstubAllGlobals","kind":"calls","metadata":{"unresolvedName":"vi.unstubAllGlobals"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:Object.defineProperty","kind":"calls","metadata":{"unresolvedName":"Object.defineProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:expect(screen.getByText('dropdown content')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('dropdown content')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:expect(screen.queryByText('dropdown content')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByText('dropdown content')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:screen.queryByText","kind":"calls","metadata":{"unresolvedName":"screen.queryByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:expect(menu).toHaveStyle","kind":"calls","metadata":{"unresolvedName":"expect(menu).toHaveStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:window.dispatchEvent","kind":"calls","metadata":{"unresolvedName":"window.dispatchEvent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.stubGlobal","kind":"calls","metadata":{"unresolvedName":"vi.stubGlobal"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:observe","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:observe","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:disconnect","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:disconnect","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.unstubAllGlobals","kind":"calls","metadata":{"unresolvedName":"vi.unstubAllGlobals"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:Object.defineProperty","kind":"calls","metadata":{"unresolvedName":"Object.defineProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:expect(screen.getByText('dropdown content')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('dropdown content')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:expect(screen.queryByText('dropdown content')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByText('dropdown content')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:screen.queryByText","kind":"calls","metadata":{"unresolvedName":"screen.queryByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:Object.defineProperty","kind":"calls","metadata":{"unresolvedName":"Object.defineProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:expect(menu).toHaveStyle","kind":"calls","metadata":{"unresolvedName":"expect(menu).toHaveStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:window.dispatchEvent","kind":"calls","metadata":{"unresolvedName":"window.dispatchEvent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:window.dispatchEvent","kind":"calls","metadata":{"unresolvedName":"window.dispatchEvent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"external:react-dom","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","to":"external:triggerRef.current.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"triggerRef.current.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","to":"external:constrainToRef.current.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"constrainToRef.current.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","to":"symbol-name:calcStyles","kind":"calls","metadata":{"unresolvedName":"calcStyles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","to":"symbol-name:setPosStyle","kind":"calls","metadata":{"unresolvedName":"setPosStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","to":"symbol-name:setSizeStyle","kind":"calls","metadata":{"unresolvedName":"setSizeStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","to":"symbol-name:updateStyles","kind":"calls","metadata":{"unresolvedName":"updateStyles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:scheduleUpdate","kind":"calls","metadata":{"unresolvedName":"scheduleUpdate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","to":"external:resizeObserver.observe","kind":"calls","metadata":{"unresolvedName":"resizeObserver.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","to":"external:resizeObserver?.disconnect","kind":"calls","metadata":{"unresolvedName":"resizeObserver?.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:DropdownMenu","to":"symbol-name:createPortal","kind":"calls","metadata":{"unresolvedName":"createPortal"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"external:triggerRef.current.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"triggerRef.current.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"external:constrainToRef.current.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"constrainToRef.current.getBoundingClientRect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"symbol-name:calcStyles","kind":"calls","metadata":{"unresolvedName":"calcStyles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"symbol-name:setPosStyle","kind":"calls","metadata":{"unresolvedName":"setPosStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"symbol-name:setSizeStyle","kind":"calls","metadata":{"unresolvedName":"setSizeStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"symbol-name:updateStyles","kind":"calls","metadata":{"unresolvedName":"updateStyles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"symbol-name:updateStyles","kind":"calls","metadata":{"unresolvedName":"updateStyles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"symbol-name:updateStyles","kind":"calls","metadata":{"unresolvedName":"updateStyles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:scheduleUpdate","kind":"calls","metadata":{"unresolvedName":"scheduleUpdate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"external:resizeObserver.observe","kind":"calls","metadata":{"unresolvedName":"resizeObserver.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"external:resizeObserver?.disconnect","kind":"calls","metadata":{"unresolvedName":"resizeObserver?.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:scheduleUpdate","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:scheduleUpdate","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:scheduleUpdate","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:scheduleUpdate","to":"symbol-name:updateStyles","kind":"calls","metadata":{"unresolvedName":"updateStyles"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"symbol-name:updateStyles","kind":"calls","metadata":{"unresolvedName":"updateStyles"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:scheduleUpdate","kind":"calls","metadata":{"unresolvedName":"scheduleUpdate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"external:resizeObserver?.disconnect","kind":"calls","metadata":{"unresolvedName":"resizeObserver?.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/DropdownMenu.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/IconButton.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/IconButton.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/IconButton.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/IconButton.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/IconButton.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/MenuItem.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/MenuItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/MenuItem.tsx:MenuItem","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/MenuItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/MenuItem.tsx:MenuItem","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ModalShell.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ModalShell.tsx","to":"external:react-dom","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ModalShell.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ModalShell.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ModalShell.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ModalShell.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ModalShell.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ModalShell.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:useModalAnimation","kind":"calls","metadata":{"unresolvedName":"useModalAnimation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ModalShell.tsx:","to":"symbol-name:createPortal","kind":"calls","metadata":{"unresolvedName":"createPortal"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","kind":"calls","metadata":{"unresolvedName":"useInputCapabilities"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:Math.floor","kind":"calls","metadata":{"unresolvedName":"Math.floor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"symbol-name:useLayoutEffect","kind":"calls","metadata":{"unresolvedName":"useLayoutEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"symbol-name:setIsResizing","kind":"calls","metadata":{"unresolvedName":"setIsResizing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:window.dispatchEvent","kind":"calls","metadata":{"unresolvedName":"window.dispatchEvent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"symbol-name:onSizeChange","kind":"calls","metadata":{"unresolvedName":"onSizeChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:panel.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"panel.getBoundingClientRect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"symbol-name:setIsResizing","kind":"calls","metadata":{"unresolvedName":"setIsResizing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:window.dispatchEvent","kind":"calls","metadata":{"unresolvedName":"window.dispatchEvent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"symbol-name:onSizeChange","kind":"calls","metadata":{"unresolvedName":"onSizeChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handlePointerMove","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handlePointerMove","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handlePointerMove","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handlePointerMove","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handlePointerMove","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handlePointerMove","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handlePointerUp","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handlePointerUp","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handlePointerUp","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handlePointerUp","to":"external:window.dispatchEvent","kind":"calls","metadata":{"unresolvedName":"window.dispatchEvent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handlePointerUp","to":"symbol-name:setIsResizing","kind":"calls","metadata":{"unresolvedName":"setIsResizing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handlePointerUp","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handlePointerUp","to":"symbol-name:onSizeChange","kind":"calls","metadata":{"unresolvedName":"onSizeChange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"symbol-name:setIsResizing","kind":"calls","metadata":{"unresolvedName":"setIsResizing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:panel.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"panel.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:window.dispatchEvent","kind":"calls","metadata":{"unresolvedName":"window.dispatchEvent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"symbol-name:onSizeChange","kind":"calls","metadata":{"unresolvedName":"onSizeChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handleTouchMove","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handleTouchMove","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handleTouchMove","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handleTouchMove","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handleTouchEnd","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handleTouchEnd","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handleTouchEnd","to":"symbol-name:setIsResizing","kind":"calls","metadata":{"unresolvedName":"setIsResizing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handleTouchEnd","to":"external:window.dispatchEvent","kind":"calls","metadata":{"unresolvedName":"window.dispatchEvent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handleTouchEnd","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:handleTouchEnd","to":"symbol-name:onSizeChange","kind":"calls","metadata":{"unresolvedName":"onSizeChange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ResizablePanel.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ScrollArea.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ScrollArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ScrollArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ScrollArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ScrollArea.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx","to":"external:motion/mini","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:SmoothHeight","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:SmoothHeight","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:SmoothHeight","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:SmoothHeight","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:SmoothHeight","to":"external:animRef.current?.stop","kind":"calls","metadata":{"unresolvedName":"animRef.current?.stop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:SmoothHeight","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:SmoothHeight","to":"symbol-name:animate","kind":"calls","metadata":{"unresolvedName":"animate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:SmoothHeight","to":"external:ro.observe","kind":"calls","metadata":{"unresolvedName":"ro.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:SmoothHeight","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:","to":"external:animRef.current?.stop","kind":"calls","metadata":{"unresolvedName":"animRef.current?.stop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:","to":"symbol-name:animate","kind":"calls","metadata":{"unresolvedName":"animate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:","to":"external:ro.observe","kind":"calls","metadata":{"unresolvedName":"ro.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:update","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:update","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:update","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:update","to":"external:animRef.current?.stop","kind":"calls","metadata":{"unresolvedName":"animRef.current?.stop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:update","to":"symbol-name:animate","kind":"calls","metadata":{"unresolvedName":"animate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/SmoothHeight.tsx:","to":"external:animRef.current?.stop","kind":"calls","metadata":{"unresolvedName":"animRef.current?.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useDirectory","kind":"calls","metadata":{"unresolvedName":"useDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:useVcsInfo","kind":"calls","metadata":{"unresolvedName":"useVcsInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getCurrentProject","kind":"calls","metadata":{"unresolvedName":"getCurrentProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setWorktrees","kind":"calls","metadata":{"unresolvedName":"setWorktrees"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setRootDirectory","kind":"calls","metadata":{"unresolvedName":"setRootDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:resolveRootDirectory","kind":"calls","metadata":{"unresolvedName":"resolveRootDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:listWorktrees","kind":"calls","metadata":{"unresolvedName":"listWorktrees"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:loadWorktrees","kind":"calls","metadata":{"unresolvedName":"loadWorktrees"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setActionLoading","kind":"calls","metadata":{"unresolvedName":"setActionLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:refreshVcs","kind":"calls","metadata":{"unresolvedName":"refreshVcs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:listPtySessions","kind":"calls","metadata":{"unresolvedName":"listPtySessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"external:Promise.allSettled","kind":"calls","metadata":{"unresolvedName":"Promise.allSettled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"external:ptySessions.map","kind":"calls","metadata":{"unresolvedName":"ptySessions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:removePtySession","kind":"calls","metadata":{"unresolvedName":"removePtySession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts:disposeInstance","kind":"calls","metadata":{"unresolvedName":"disposeInstance"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:addDirectory","kind":"calls","metadata":{"unresolvedName":"addDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"external:name.trim","kind":"calls","metadata":{"unresolvedName":"name.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:requireRootDirectory","kind":"calls","metadata":{"unresolvedName":"requireRootDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:createWorktree","kind":"calls","metadata":{"unresolvedName":"createWorktree"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setShowCreateForm","kind":"calls","metadata":{"unresolvedName":"setShowCreateForm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:requestGitWorkspaceCatalogRefresh","kind":"calls","metadata":{"unresolvedName":"requestGitWorkspaceCatalogRefresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:handleOpenSession","kind":"calls","metadata":{"unresolvedName":"handleOpenSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setCurrentDirectory","kind":"calls","metadata":{"unresolvedName":"setCurrentDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:releaseWorktreeResources","kind":"calls","metadata":{"unresolvedName":"releaseWorktreeResources"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:removeWorktree","kind":"calls","metadata":{"unresolvedName":"removeWorktree"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setDeleteConfirm","kind":"calls","metadata":{"unresolvedName":"setDeleteConfirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:resetWorktree","kind":"calls","metadata":{"unresolvedName":"resetWorktree"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setResetConfirm","kind":"calls","metadata":{"unresolvedName":"setResetConfirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"external:worktrees.map","kind":"calls","metadata":{"unresolvedName":"worktrees.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDirectoryName","kind":"calls","metadata":{"unresolvedName":"getDirectoryName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleDelete","kind":"calls","metadata":{"unresolvedName":"handleDelete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:handleReset","kind":"calls","metadata":{"unresolvedName":"handleReset"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getCurrentProject","kind":"calls","metadata":{"unresolvedName":"getCurrentProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setWorktrees","kind":"calls","metadata":{"unresolvedName":"setWorktrees"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setRootDirectory","kind":"calls","metadata":{"unresolvedName":"setRootDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:resolveRootDirectory","kind":"calls","metadata":{"unresolvedName":"resolveRootDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:listWorktrees","kind":"calls","metadata":{"unresolvedName":"listWorktrees"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:loadWorktrees","kind":"calls","metadata":{"unresolvedName":"loadWorktrees"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:loadWorktrees","kind":"calls","metadata":{"unresolvedName":"loadWorktrees"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setActionLoading","kind":"calls","metadata":{"unresolvedName":"setActionLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:refreshVcs","kind":"calls","metadata":{"unresolvedName":"refreshVcs"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:onWorktreeReady","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:onWorktreeReady","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:onWorktreeReady","to":"symbol-name:loadWorktrees","kind":"calls","metadata":{"unresolvedName":"loadWorktrees"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:onWorktreeFailed","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:onWorktreeFailed","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:onWorktreeFailed","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:onWorktreeFailed","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:onWorktreeFailed","to":"symbol-name:setActionLoading","kind":"calls","metadata":{"unresolvedName":"setActionLoading"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:onVcsBranchUpdated","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:onVcsBranchUpdated","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:onVcsBranchUpdated","to":"symbol-name:refreshVcs","kind":"calls","metadata":{"unresolvedName":"refreshVcs"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:listPtySessions","kind":"calls","metadata":{"unresolvedName":"listPtySessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"external:Promise.allSettled","kind":"calls","metadata":{"unresolvedName":"Promise.allSettled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"external:ptySessions.map","kind":"calls","metadata":{"unresolvedName":"ptySessions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/pty.ts:removePtySession","kind":"calls","metadata":{"unresolvedName":"removePtySession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/global.ts:disposeInstance","kind":"calls","metadata":{"unresolvedName":"disposeInstance"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:addDirectory","kind":"calls","metadata":{"unresolvedName":"addDirectory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"external:name.trim","kind":"calls","metadata":{"unresolvedName":"name.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setActionLoading","kind":"calls","metadata":{"unresolvedName":"setActionLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:requireRootDirectory","kind":"calls","metadata":{"unresolvedName":"requireRootDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:createWorktree","kind":"calls","metadata":{"unresolvedName":"createWorktree"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setShowCreateForm","kind":"calls","metadata":{"unresolvedName":"setShowCreateForm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:loadWorktrees","kind":"calls","metadata":{"unresolvedName":"loadWorktrees"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:requestGitWorkspaceCatalogRefresh","kind":"calls","metadata":{"unresolvedName":"requestGitWorkspaceCatalogRefresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:handleOpenSession","kind":"calls","metadata":{"unresolvedName":"handleOpenSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setActionLoading","kind":"calls","metadata":{"unresolvedName":"setActionLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:requireRootDirectory","kind":"calls","metadata":{"unresolvedName":"requireRootDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setCurrentDirectory","kind":"calls","metadata":{"unresolvedName":"setCurrentDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:releaseWorktreeResources","kind":"calls","metadata":{"unresolvedName":"releaseWorktreeResources"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:removeWorktree","kind":"calls","metadata":{"unresolvedName":"removeWorktree"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:loadWorktrees","kind":"calls","metadata":{"unresolvedName":"loadWorktrees"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:requestGitWorkspaceCatalogRefresh","kind":"calls","metadata":{"unresolvedName":"requestGitWorkspaceCatalogRefresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setDeleteConfirm","kind":"calls","metadata":{"unresolvedName":"setDeleteConfirm"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setActionLoading","kind":"calls","metadata":{"unresolvedName":"setActionLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:requireRootDirectory","kind":"calls","metadata":{"unresolvedName":"requireRootDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:releaseWorktreeResources","kind":"calls","metadata":{"unresolvedName":"releaseWorktreeResources"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:resetWorktree","kind":"calls","metadata":{"unresolvedName":"resetWorktree"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:loadWorktrees","kind":"calls","metadata":{"unresolvedName":"loadWorktrees"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:requestGitWorkspaceCatalogRefresh","kind":"calls","metadata":{"unresolvedName":"requestGitWorkspaceCatalogRefresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:setResetConfirm","kind":"calls","metadata":{"unresolvedName":"setResetConfirm"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:loadWorktrees","kind":"calls","metadata":{"unresolvedName":"loadWorktrees"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:refreshVcs","kind":"calls","metadata":{"unresolvedName":"refreshVcs"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleDelete","kind":"calls","metadata":{"unresolvedName":"handleDelete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:handleReset","kind":"calls","metadata":{"unresolvedName":"handleReset"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:CreateWorktreeForm","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:CreateWorktreeForm","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:CreateWorktreeForm","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:CreateWorktreeForm","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:CreateWorktreeForm","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:CreateWorktreeForm","to":"external:name.trim","kind":"calls","metadata":{"unresolvedName":"name.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:CreateWorktreeForm","to":"symbol-name:onSubmit","kind":"calls","metadata":{"unresolvedName":"onSubmit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:CreateWorktreeForm","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:CreateWorktreeForm","to":"symbol-name:setName","kind":"calls","metadata":{"unresolvedName":"setName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:CreateWorktreeForm","to":"symbol-name:setAutoOpen","kind":"calls","metadata":{"unresolvedName":"setAutoOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:handleSubmit","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:handleSubmit","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:handleSubmit","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:handleSubmit","to":"external:name.trim","kind":"calls","metadata":{"unresolvedName":"name.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:handleSubmit","to":"symbol-name:onSubmit","kind":"calls","metadata":{"unresolvedName":"onSubmit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/WorktreePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.shared.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.shared.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.shared.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:useRouter","kind":"calls","metadata":{"unresolvedName":"useRouter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"calls","metadata":{"unresolvedName":"useLayoutStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"external:serverStorage.getJSON","kind":"calls","metadata":{"unresolvedName":"serverStorage.getJSON"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"external:serverStore.onServerChange","kind":"calls","metadata":{"unresolvedName":"serverStore.onServerChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"symbol-name:setSavedDirectories","kind":"calls","metadata":{"unresolvedName":"setSavedDirectories"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"symbol-name:setRecentProjects","kind":"calls","metadata":{"unresolvedName":"setRecentProjects"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"symbol-name:setPathInfo","kind":"calls","metadata":{"unresolvedName":"setPathInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"symbol-name:setUrlDirectory","kind":"calls","metadata":{"unresolvedName":"setUrlDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"external:getPath().then(setPathInfo).catch","kind":"calls","metadata":{"unresolvedName":"getPath().then(setPathInfo).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"external:getPath().then","kind":"calls","metadata":{"unresolvedName":"getPath().then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getPath","kind":"calls","metadata":{"unresolvedName":"getPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:handleError","kind":"calls","metadata":{"unresolvedName":"handleError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"external:serverStorage.setJSON","kind":"calls","metadata":{"unresolvedName":"serverStorage.setJSON"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"external:path.replace(/\\\\/g, '/').replace","kind":"calls","metadata":{"unresolvedName":"path.replace(/\\\\/g, '/').replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"external:path.replace","kind":"calls","metadata":{"unresolvedName":"path.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"external:/^[a-zA-Z]:\\/$/.test","kind":"calls","metadata":{"unresolvedName":"/^[a-zA-Z]:\\/$/.test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"external:trimmed.slice","kind":"calls","metadata":{"unresolvedName":"trimmed.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"external:savedDirectories.some","kind":"calls","metadata":{"unresolvedName":"savedDirectories.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"symbol-name:setCurrentDirectory","kind":"calls","metadata":{"unresolvedName":"setCurrentDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDirectoryName","kind":"calls","metadata":{"unresolvedName":"getDirectoryName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"external:next.findIndex","kind":"calls","metadata":{"unresolvedName":"next.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"external:next.splice","kind":"calls","metadata":{"unresolvedName":"next.splice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"external:import('@tauri-apps/api/core').then","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/api/core').then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"external:invoke('get_cli_directory')\r\n .then","kind":"calls","metadata":{"unresolvedName":"invoke('get_cli_directory')\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"symbol-name:invoke","kind":"calls","metadata":{"unresolvedName":"invoke"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"external:addDirectoryRef.current","kind":"calls","metadata":{"unresolvedName":"addDirectoryRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"external:import('@tauri-apps/api/event').then","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/api/event').then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"symbol-name:listen","kind":"calls","metadata":{"unresolvedName":"listen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"symbol-name:unlisten","kind":"calls","metadata":{"unresolvedName":"unlisten"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"external:layoutStore.setSidebarExpanded","kind":"calls","metadata":{"unresolvedName":"layoutStore.setSidebarExpanded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:DirectoryProvider","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:serverStorage.getJSON","kind":"calls","metadata":{"unresolvedName":"serverStorage.getJSON"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:serverStorage.getJSON","kind":"calls","metadata":{"unresolvedName":"serverStorage.getJSON"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:serverStore.onServerChange","kind":"calls","metadata":{"unresolvedName":"serverStore.onServerChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:setSavedDirectories","kind":"calls","metadata":{"unresolvedName":"setSavedDirectories"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:serverStorage.getJSON","kind":"calls","metadata":{"unresolvedName":"serverStorage.getJSON"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:setRecentProjects","kind":"calls","metadata":{"unresolvedName":"setRecentProjects"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:setPathInfo","kind":"calls","metadata":{"unresolvedName":"setPathInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:setUrlDirectory","kind":"calls","metadata":{"unresolvedName":"setUrlDirectory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:setSavedDirectories","kind":"calls","metadata":{"unresolvedName":"setSavedDirectories"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:serverStorage.getJSON","kind":"calls","metadata":{"unresolvedName":"serverStorage.getJSON"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:setRecentProjects","kind":"calls","metadata":{"unresolvedName":"setRecentProjects"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:setPathInfo","kind":"calls","metadata":{"unresolvedName":"setPathInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:setUrlDirectory","kind":"calls","metadata":{"unresolvedName":"setUrlDirectory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:getPath().then(setPathInfo).catch","kind":"calls","metadata":{"unresolvedName":"getPath().then(setPathInfo).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:getPath().then","kind":"calls","metadata":{"unresolvedName":"getPath().then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getPath","kind":"calls","metadata":{"unresolvedName":"getPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:handleError","kind":"calls","metadata":{"unresolvedName":"handleError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:serverStorage.setJSON","kind":"calls","metadata":{"unresolvedName":"serverStorage.setJSON"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:serverStorage.setJSON","kind":"calls","metadata":{"unresolvedName":"serverStorage.setJSON"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:setUrlDirectory","kind":"calls","metadata":{"unresolvedName":"setUrlDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:setRecentProjects","kind":"calls","metadata":{"unresolvedName":"setRecentProjects"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:path.replace(/\\\\/g, '/').replace","kind":"calls","metadata":{"unresolvedName":"path.replace(/\\\\/g, '/').replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:path.replace","kind":"calls","metadata":{"unresolvedName":"path.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:/^[a-zA-Z]:\\/$/.test","kind":"calls","metadata":{"unresolvedName":"/^[a-zA-Z]:\\/$/.test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:trimmed.slice","kind":"calls","metadata":{"unresolvedName":"trimmed.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:savedDirectories.some","kind":"calls","metadata":{"unresolvedName":"savedDirectories.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:setCurrentDirectory","kind":"calls","metadata":{"unresolvedName":"setCurrentDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDirectoryName","kind":"calls","metadata":{"unresolvedName":"getDirectoryName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:setSavedDirectories","kind":"calls","metadata":{"unresolvedName":"setSavedDirectories"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:setSavedDirectories","kind":"calls","metadata":{"unresolvedName":"setSavedDirectories"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:setCurrentDirectory","kind":"calls","metadata":{"unresolvedName":"setCurrentDirectory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:setSavedDirectories","kind":"calls","metadata":{"unresolvedName":"setSavedDirectories"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:next.findIndex","kind":"calls","metadata":{"unresolvedName":"next.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:next.splice","kind":"calls","metadata":{"unresolvedName":"next.splice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:next.findIndex","kind":"calls","metadata":{"unresolvedName":"next.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:next.splice","kind":"calls","metadata":{"unresolvedName":"next.splice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:import('@tauri-apps/api/core').then","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/api/core').then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:invoke('get_cli_directory')\r\n .then","kind":"calls","metadata":{"unresolvedName":"invoke('get_cli_directory')\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:invoke","kind":"calls","metadata":{"unresolvedName":"invoke"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:addDirectoryRef.current","kind":"calls","metadata":{"unresolvedName":"addDirectoryRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:import('@tauri-apps/api/event').then","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/api/event').then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:listen","kind":"calls","metadata":{"unresolvedName":"listen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:unlisten","kind":"calls","metadata":{"unresolvedName":"unlisten"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:invoke('get_cli_directory')\r\n .then","kind":"calls","metadata":{"unresolvedName":"invoke('get_cli_directory')\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:invoke","kind":"calls","metadata":{"unresolvedName":"invoke"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:addDirectoryRef.current","kind":"calls","metadata":{"unresolvedName":"addDirectoryRef.current"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:addDirectoryRef.current","kind":"calls","metadata":{"unresolvedName":"addDirectoryRef.current"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:listen","kind":"calls","metadata":{"unresolvedName":"listen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:addDirectoryRef.current","kind":"calls","metadata":{"unresolvedName":"addDirectoryRef.current"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:addDirectoryRef.current","kind":"calls","metadata":{"unresolvedName":"addDirectoryRef.current"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"symbol-name:unlisten","kind":"calls","metadata":{"unresolvedName":"unlisten"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.tsx:","to":"external:layoutStore.setSidebarExpanded","kind":"calls","metadata":{"unresolvedName":"layoutStore.setSidebarExpanded"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.shared.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.shared.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/event.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.shared.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:createDeferred","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:createDeferred","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:SessionContextProbe","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:SessionContextProbe","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:SessionContextProbe","to":"symbol-name:useContext","kind":"calls","metadata":{"unresolvedName":"useContext"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:SessionContextProbe","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:getSessionsMock.mockReset","kind":"calls","metadata":{"unresolvedName":"getSessionsMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:createSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"createSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:deleteSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"deleteSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:subscribeToEventsMock.mockReset","kind":"calls","metadata":{"unresolvedName":"subscribeToEventsMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:clearChildrenMock.mockReset","kind":"calls","metadata":{"unresolvedName":"clearChildrenMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:clearFollowupQueueMock.mockReset","kind":"calls","metadata":{"unresolvedName":"clearFollowupQueueMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:setTodosMock.mockReset","kind":"calls","metadata":{"unresolvedName":"setTodosMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:sessionErrorHandlerMock.mockReset","kind":"calls","metadata":{"unresolvedName":"sessionErrorHandlerMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:autoDetectPathStyleMock.mockReset","kind":"calls","metadata":{"unresolvedName":"autoDetectPathStyleMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:subscribeToEventsMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"subscribeToEventsMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"symbol-name:createDeferred","kind":"calls","metadata":{"unresolvedName":"createDeferred"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:getSessionsMock.mockImplementationOnce","kind":"calls","metadata":{"unresolvedName":"getSessionsMock.mockImplementationOnce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:expect(latestContext).not.toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(latestContext).not.toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:latestContext!.setSearch","kind":"calls","metadata":{"unresolvedName":"latestContext!.setSearch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:firstRequest.resolve","kind":"calls","metadata":{"unresolvedName":"firstRequest.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:latestEventCallbacks.onReconnected","kind":"calls","metadata":{"unresolvedName":"latestEventCallbacks.onReconnected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:expect(getSessionsMock).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(getSessionsMock).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:secondRequest.resolve","kind":"calls","metadata":{"unresolvedName":"secondRequest.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:getSessionsMock.mockReset","kind":"calls","metadata":{"unresolvedName":"getSessionsMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:createSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"createSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:deleteSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"deleteSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:subscribeToEventsMock.mockReset","kind":"calls","metadata":{"unresolvedName":"subscribeToEventsMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:clearChildrenMock.mockReset","kind":"calls","metadata":{"unresolvedName":"clearChildrenMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:clearFollowupQueueMock.mockReset","kind":"calls","metadata":{"unresolvedName":"clearFollowupQueueMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:setTodosMock.mockReset","kind":"calls","metadata":{"unresolvedName":"setTodosMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:sessionErrorHandlerMock.mockReset","kind":"calls","metadata":{"unresolvedName":"sessionErrorHandlerMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:autoDetectPathStyleMock.mockReset","kind":"calls","metadata":{"unresolvedName":"autoDetectPathStyleMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:subscribeToEventsMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"subscribeToEventsMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"symbol-name:createDeferred","kind":"calls","metadata":{"unresolvedName":"createDeferred"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:getSessionsMock.mockImplementationOnce","kind":"calls","metadata":{"unresolvedName":"getSessionsMock.mockImplementationOnce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:expect(latestContext).not.toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(latestContext).not.toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:latestContext!.setSearch","kind":"calls","metadata":{"unresolvedName":"latestContext!.setSearch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:firstRequest.resolve","kind":"calls","metadata":{"unresolvedName":"firstRequest.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:latestEventCallbacks.onReconnected","kind":"calls","metadata":{"unresolvedName":"latestEventCallbacks.onReconnected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:expect(getSessionsMock).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(getSessionsMock).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:secondRequest.resolve","kind":"calls","metadata":{"unresolvedName":"secondRequest.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:latestContext!.setSearch","kind":"calls","metadata":{"unresolvedName":"latestContext!.setSearch"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:firstRequest.resolve","kind":"calls","metadata":{"unresolvedName":"firstRequest.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:latestEventCallbacks.onReconnected","kind":"calls","metadata":{"unresolvedName":"latestEventCallbacks.onReconnected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:secondRequest.resolve","kind":"calls","metadata":{"unresolvedName":"secondRequest.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.shared.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useDirectory","kind":"calls","metadata":{"unresolvedName":"useDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"symbol-name:setIsLoadingMore","kind":"calls","metadata":{"unresolvedName":"setIsLoadingMore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessions","kind":"calls","metadata":{"unresolvedName":"getSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:autoDetectPathStyle","kind":"calls","metadata":{"unresolvedName":"autoDetectPathStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"symbol-name:setSessions","kind":"calls","metadata":{"unresolvedName":"setSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"external:prev.map","kind":"calls","metadata":{"unresolvedName":"prev.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"external:data.filter","kind":"calls","metadata":{"unresolvedName":"data.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"external:existingIds.has","kind":"calls","metadata":{"unresolvedName":"existingIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"symbol-name:setHasMore","kind":"calls","metadata":{"unresolvedName":"setHasMore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"symbol-name:sessionErrorHandler","kind":"calls","metadata":{"unresolvedName":"sessionErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"symbol-name:fetchSessions","kind":"calls","metadata":{"unresolvedName":"fetchSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"symbol-name:matchesCurrentDirectory","kind":"calls","metadata":{"unresolvedName":"matchesCurrentDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"external:fetchSessionsRef.current","kind":"calls","metadata":{"unresolvedName":"fetchSessionsRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"external:prev.some","kind":"calls","metadata":{"unresolvedName":"prev.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"external:prev.findIndex","kind":"calls","metadata":{"unresolvedName":"prev.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"external:todoStore.setTodos","kind":"calls","metadata":{"unresolvedName":"todoStore.setTodos"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"symbol-name:apiCreateSession","kind":"calls","metadata":{"unresolvedName":"apiCreateSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"symbol-name:apiDeleteSession","kind":"calls","metadata":{"unresolvedName":"apiDeleteSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"external:childSessionStore.clearChildren","kind":"calls","metadata":{"unresolvedName":"childSessionStore.clearChildren"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"external:followupQueueStore.clearSession","kind":"calls","metadata":{"unresolvedName":"followupQueueStore.clearSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:SessionProvider","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"symbol-name:setIsLoadingMore","kind":"calls","metadata":{"unresolvedName":"setIsLoadingMore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessions","kind":"calls","metadata":{"unresolvedName":"getSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:autoDetectPathStyle","kind":"calls","metadata":{"unresolvedName":"autoDetectPathStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"symbol-name:setSessions","kind":"calls","metadata":{"unresolvedName":"setSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"external:prev.map","kind":"calls","metadata":{"unresolvedName":"prev.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"external:data.filter","kind":"calls","metadata":{"unresolvedName":"data.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"external:existingIds.has","kind":"calls","metadata":{"unresolvedName":"existingIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"symbol-name:setHasMore","kind":"calls","metadata":{"unresolvedName":"setHasMore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"symbol-name:sessionErrorHandler","kind":"calls","metadata":{"unresolvedName":"sessionErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"external:prev.map","kind":"calls","metadata":{"unresolvedName":"prev.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"external:data.filter","kind":"calls","metadata":{"unresolvedName":"data.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"external:existingIds.has","kind":"calls","metadata":{"unresolvedName":"existingIds.has"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"symbol-name:fetchSessions","kind":"calls","metadata":{"unresolvedName":"fetchSessions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"symbol-name:fetchSessions","kind":"calls","metadata":{"unresolvedName":"fetchSessions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"symbol-name:matchesCurrentDirectory","kind":"calls","metadata":{"unresolvedName":"matchesCurrentDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"external:fetchSessionsRef.current","kind":"calls","metadata":{"unresolvedName":"fetchSessionsRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"symbol-name:setSessions","kind":"calls","metadata":{"unresolvedName":"setSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"external:prev.some","kind":"calls","metadata":{"unresolvedName":"prev.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"external:prev.findIndex","kind":"calls","metadata":{"unresolvedName":"prev.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"external:todoStore.setTodos","kind":"calls","metadata":{"unresolvedName":"todoStore.setTodos"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onSessionCreated","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onSessionCreated","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onSessionCreated","to":"symbol-name:matchesCurrentDirectory","kind":"calls","metadata":{"unresolvedName":"matchesCurrentDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onSessionCreated","to":"external:fetchSessionsRef.current","kind":"calls","metadata":{"unresolvedName":"fetchSessionsRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onSessionCreated","to":"symbol-name:setSessions","kind":"calls","metadata":{"unresolvedName":"setSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onSessionCreated","to":"external:prev.some","kind":"calls","metadata":{"unresolvedName":"prev.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"external:prev.some","kind":"calls","metadata":{"unresolvedName":"prev.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onSessionUpdated","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onSessionUpdated","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onSessionUpdated","to":"symbol-name:matchesCurrentDirectory","kind":"calls","metadata":{"unresolvedName":"matchesCurrentDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onSessionUpdated","to":"external:fetchSessionsRef.current","kind":"calls","metadata":{"unresolvedName":"fetchSessionsRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onSessionUpdated","to":"symbol-name:setSessions","kind":"calls","metadata":{"unresolvedName":"setSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onSessionUpdated","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onSessionUpdated","to":"external:prev.findIndex","kind":"calls","metadata":{"unresolvedName":"prev.findIndex"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"external:prev.findIndex","kind":"calls","metadata":{"unresolvedName":"prev.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"symbol-name:matchesCurrentDirectory","kind":"calls","metadata":{"unresolvedName":"matchesCurrentDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onTodoUpdated","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onTodoUpdated","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onTodoUpdated","to":"external:todoStore.setTodos","kind":"calls","metadata":{"unresolvedName":"todoStore.setTodos"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onReconnected","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onReconnected","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onReconnected","to":"symbol-name:setSessions","kind":"calls","metadata":{"unresolvedName":"setSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:onReconnected","to":"external:fetchSessionsRef.current","kind":"calls","metadata":{"unresolvedName":"fetchSessionsRef.current"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"symbol-name:setIsLoadingMore","kind":"calls","metadata":{"unresolvedName":"setIsLoadingMore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"symbol-name:fetchSessions","kind":"calls","metadata":{"unresolvedName":"fetchSessions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"symbol-name:apiCreateSession","kind":"calls","metadata":{"unresolvedName":"apiCreateSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"symbol-name:apiDeleteSession","kind":"calls","metadata":{"unresolvedName":"apiDeleteSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"external:childSessionStore.clearChildren","kind":"calls","metadata":{"unresolvedName":"childSessionStore.clearChildren"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"external:followupQueueStore.clearSession","kind":"calls","metadata":{"unresolvedName":"followupQueueStore.clearSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"symbol-name:setSessions","kind":"calls","metadata":{"unresolvedName":"setSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.tsx:","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx:defaultNavigateToSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx:defaultNavigateToSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx:defaultNavigateToSession","to":"symbol-name:encodeURIComponent","kind":"calls","metadata":{"unresolvedName":"encodeURIComponent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx:useSessionNavigation","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx:useSessionNavigation","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx:useSessionNavigation","to":"symbol-name:useContext","kind":"calls","metadata":{"unresolvedName":"useContext"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/DirectoryContext.shared.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useDirectory","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useDirectory","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useDirectory","to":"symbol-name:useContext","kind":"calls","metadata":{"unresolvedName":"useContext"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useCurrentDirectory","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useCurrentDirectory","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useCurrentDirectory","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useDirectory","kind":"calls","metadata":{"unresolvedName":"useDirectory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useSavedDirectories","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useSavedDirectories","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useSavedDirectories","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useDirectory","kind":"calls","metadata":{"unresolvedName":"useDirectory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:usePathInfo","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:usePathInfo","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:usePathInfo","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useDirectory","kind":"calls","metadata":{"unresolvedName":"useDirectory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useSidebarExpanded","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useSidebarExpanded","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useSidebarExpanded","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"calls","metadata":{"unresolvedName":"useLayoutStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useSidebarExpanded","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useSidebarExpanded","to":"external:layoutStore.setSidebarExpanded","kind":"calls","metadata":{"unresolvedName":"layoutStore.setSidebarExpanded"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:","to":"external:layoutStore.setSidebarExpanded","kind":"calls","metadata":{"unresolvedName":"layoutStore.setSidebarExpanded"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useSessionContext.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useSessionContext.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionContext.shared.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useSessionContext.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useSessionContext.ts:useSessionContext","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useSessionContext.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useSessionContext.ts:useSessionContext","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useSessionContext.ts:useSessionContext","to":"symbol-name:useContext","kind":"calls","metadata":{"unresolvedName":"useContext"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:expect(screen.getByText('notes.txt')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('notes.txt')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:expect(screen.getByText('hello world')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('hello world')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:expect(screen.queryByText('notes.txt')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByText('notes.txt')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:screen.queryByText","kind":"calls","metadata":{"unresolvedName":"screen.queryByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:screen.getByAltText","kind":"calls","metadata":{"unresolvedName":"screen.getByAltText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:fireEvent.load","kind":"calls","metadata":{"unresolvedName":"fireEvent.load"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:expect(screen.getByRole('button', { name: 'Zoom out' })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Zoom out' })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:expect(screen.getByRole('button', { name: 'Zoom in' })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Zoom in' })).toBeInTheDocument"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:expect(screen.getByText('notes.txt')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('notes.txt')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:expect(screen.getByText('hello world')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('hello world')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:expect(screen.queryByText('notes.txt')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByText('notes.txt')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:screen.queryByText","kind":"calls","metadata":{"unresolvedName":"screen.queryByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:screen.getByAltText","kind":"calls","metadata":{"unresolvedName":"screen.getByAltText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:fireEvent.load","kind":"calls","metadata":{"unresolvedName":"fireEvent.load"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:expect(screen.getByRole('button', { name: 'Zoom out' })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Zoom out' })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.test.tsx:","to":"external:expect(screen.getByRole('button', { name: 'Zoom in' })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Zoom in' })).toBeInTheDocument"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodePreview.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:getTouchDistance","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:getTouchDistance","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:getTouchDistance","to":"external:Math.sqrt","kind":"calls","metadata":{"unresolvedName":"Math.sqrt"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:getTouchCenter","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:getTouchCenter","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:clamp","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:clamp","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:clamp","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:clamp","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:attachment.mime?.startsWith","kind":"calls","metadata":{"unresolvedName":"attachment.mime?.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:getAttachmentIcon","kind":"calls","metadata":{"unresolvedName":"getAttachmentIcon"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:detectLanguage","kind":"calls","metadata":{"unresolvedName":"detectLanguage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:DownloadButton","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:DownloadButton","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:DownloadButton","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:DownloadButton","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:DownloadButton","to":"external:attachment.mime?.startsWith","kind":"calls","metadata":{"unresolvedName":"attachment.mime?.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:DownloadButton","to":"external:fetch(attachment.url)\r\n .then(res => res.arrayBuffer())\r\n .then","kind":"calls","metadata":{"unresolvedName":"fetch(attachment.url)\r\n .then(res => res.arrayBuffer())\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:DownloadButton","to":"external:fetch(attachment.url)\r\n .then","kind":"calls","metadata":{"unresolvedName":"fetch(attachment.url)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:DownloadButton","to":"symbol-name:fetch","kind":"calls","metadata":{"unresolvedName":"fetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:DownloadButton","to":"external:res.arrayBuffer","kind":"calls","metadata":{"unresolvedName":"res.arrayBuffer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:DownloadButton","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:saveData","kind":"calls","metadata":{"unresolvedName":"saveData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:DownloadButton","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:DownloadButton","to":"external:new TextEncoder().encode","kind":"calls","metadata":{"unresolvedName":"new TextEncoder().encode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:DownloadButton","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:attachment.mime?.startsWith","kind":"calls","metadata":{"unresolvedName":"attachment.mime?.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:fetch(attachment.url)\r\n .then(res => res.arrayBuffer())\r\n .then","kind":"calls","metadata":{"unresolvedName":"fetch(attachment.url)\r\n .then(res => res.arrayBuffer())\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:fetch(attachment.url)\r\n .then","kind":"calls","metadata":{"unresolvedName":"fetch(attachment.url)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:fetch","kind":"calls","metadata":{"unresolvedName":"fetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:res.arrayBuffer","kind":"calls","metadata":{"unresolvedName":"res.arrayBuffer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:saveData","kind":"calls","metadata":{"unresolvedName":"saveData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:new TextEncoder().encode","kind":"calls","metadata":{"unresolvedName":"new TextEncoder().encode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"symbol-name:setScale","kind":"calls","metadata":{"unresolvedName":"setScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"symbol-name:setTranslate","kind":"calls","metadata":{"unresolvedName":"setTranslate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"external:containerRef.current?.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"containerRef.current?.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"symbol-name:getContainerCenter","kind":"calls","metadata":{"unresolvedName":"getContainerCenter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"symbol-name:clamp","kind":"calls","metadata":{"unresolvedName":"clamp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"symbol-name:zoomToPoint","kind":"calls","metadata":{"unresolvedName":"zoomToPoint"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"symbol-name:resetView","kind":"calls","metadata":{"unresolvedName":"resetView"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"symbol-name:toggleZoomAtPoint","kind":"calls","metadata":{"unresolvedName":"toggleZoomAtPoint"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"symbol-name:setIsDragging","kind":"calls","metadata":{"unresolvedName":"setIsDragging"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"external:toggleZoomRef.current","kind":"calls","metadata":{"unresolvedName":"toggleZoomRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:getTouchDistance","kind":"calls","metadata":{"unresolvedName":"getTouchDistance"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:getTouchCenter","kind":"calls","metadata":{"unresolvedName":"getTouchCenter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"external:getContainerCenterRef.current","kind":"calls","metadata":{"unresolvedName":"getContainerCenterRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"external:el.addEventListener","kind":"calls","metadata":{"unresolvedName":"el.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"external:el.removeEventListener","kind":"calls","metadata":{"unresolvedName":"el.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"symbol-name:setImgLoaded","kind":"calls","metadata":{"unresolvedName":"setImgLoaded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomableImage","to":"symbol-name:setImgError","kind":"calls","metadata":{"unresolvedName":"setImgError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:setScale","kind":"calls","metadata":{"unresolvedName":"setScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:setTranslate","kind":"calls","metadata":{"unresolvedName":"setTranslate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:containerRef.current?.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"containerRef.current?.getBoundingClientRect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:getContainerCenter","kind":"calls","metadata":{"unresolvedName":"getContainerCenter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:setScale","kind":"calls","metadata":{"unresolvedName":"setScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:setTranslate","kind":"calls","metadata":{"unresolvedName":"setTranslate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:clamp","kind":"calls","metadata":{"unresolvedName":"clamp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:zoomToPoint","kind":"calls","metadata":{"unresolvedName":"zoomToPoint"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:setScale","kind":"calls","metadata":{"unresolvedName":"setScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:clamp","kind":"calls","metadata":{"unresolvedName":"clamp"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:setScale","kind":"calls","metadata":{"unresolvedName":"setScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:clamp","kind":"calls","metadata":{"unresolvedName":"clamp"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:zoomToPoint","kind":"calls","metadata":{"unresolvedName":"zoomToPoint"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:resetView","kind":"calls","metadata":{"unresolvedName":"resetView"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:toggleZoomAtPoint","kind":"calls","metadata":{"unresolvedName":"toggleZoomAtPoint"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:setIsDragging","kind":"calls","metadata":{"unresolvedName":"setIsDragging"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:setTranslate","kind":"calls","metadata":{"unresolvedName":"setTranslate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:setIsDragging","kind":"calls","metadata":{"unresolvedName":"setIsDragging"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:handleMouseMove","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:handleMouseMove","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:handleMouseMove","to":"symbol-name:setTranslate","kind":"calls","metadata":{"unresolvedName":"setTranslate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:toggleZoomRef.current","kind":"calls","metadata":{"unresolvedName":"toggleZoomRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:setIsDragging","kind":"calls","metadata":{"unresolvedName":"setIsDragging"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:getTouchDistance","kind":"calls","metadata":{"unresolvedName":"getTouchDistance"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:getTouchCenter","kind":"calls","metadata":{"unresolvedName":"getTouchCenter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:setTranslate","kind":"calls","metadata":{"unresolvedName":"setTranslate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:clamp","kind":"calls","metadata":{"unresolvedName":"clamp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:getContainerCenterRef.current","kind":"calls","metadata":{"unresolvedName":"getContainerCenterRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"symbol-name:setScale","kind":"calls","metadata":{"unresolvedName":"setScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:el.addEventListener","kind":"calls","metadata":{"unresolvedName":"el.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:el.removeEventListener","kind":"calls","metadata":{"unresolvedName":"el.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchStart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchStart","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchStart","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchStart","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchStart","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchStart","to":"external:toggleZoomRef.current","kind":"calls","metadata":{"unresolvedName":"toggleZoomRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchStart","to":"symbol-name:setIsDragging","kind":"calls","metadata":{"unresolvedName":"setIsDragging"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchStart","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:getTouchDistance","kind":"calls","metadata":{"unresolvedName":"getTouchDistance"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchStart","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:getTouchCenter","kind":"calls","metadata":{"unresolvedName":"getTouchCenter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchMove","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchMove","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchMove","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchMove","to":"symbol-name:setTranslate","kind":"calls","metadata":{"unresolvedName":"setTranslate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchMove","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:getTouchDistance","kind":"calls","metadata":{"unresolvedName":"getTouchDistance"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchMove","to":"symbol-name:clamp","kind":"calls","metadata":{"unresolvedName":"clamp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchMove","to":"external:getContainerCenterRef.current","kind":"calls","metadata":{"unresolvedName":"getContainerCenterRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchMove","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:getTouchCenter","kind":"calls","metadata":{"unresolvedName":"getTouchCenter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchMove","to":"symbol-name:setScale","kind":"calls","metadata":{"unresolvedName":"setScale"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchEnd","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchEnd","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchEnd","to":"symbol-name:setIsDragging","kind":"calls","metadata":{"unresolvedName":"setIsDragging"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:","to":"external:el.removeEventListener","kind":"calls","metadata":{"unresolvedName":"el.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomButton","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:ZoomButton","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:AttachmentItemComponent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:AttachmentItemComponent","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:AttachmentItemComponent","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:AttachmentItemComponent","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:AttachmentItemComponent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:AttachmentItemComponent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:getAttachmentIcon","kind":"calls","metadata":{"unresolvedName":"getAttachmentIcon"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:AttachmentItemComponent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:hasExpandableContent","kind":"calls","metadata":{"unresolvedName":"hasExpandableContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:AttachmentItemComponent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:getMaterialIconUrl","kind":"calls","metadata":{"unresolvedName":"getMaterialIconUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:AttachmentItemComponent","to":"symbol-name:setIsExpanded","kind":"calls","metadata":{"unresolvedName":"setIsExpanded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:AttachmentItemComponent","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:AttachmentItemComponent","to":"symbol-name:onRemove","kind":"calls","metadata":{"unresolvedName":"onRemove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:AttachmentItemComponent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:AttachmentItemComponent","to":"symbol-name:setImageError","kind":"calls","metadata":{"unresolvedName":"setImageError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:AttachmentItemComponent","to":"symbol-name:setIsModalOpen","kind":"calls","metadata":{"unresolvedName":"setIsModalOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","to":"symbol-name:onRemove","kind":"calls","metadata":{"unresolvedName":"onRemove"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:MetaRow","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:MetaRow","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ExpandedContent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ExpandedContent","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ExpandedContent","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ExpandedContent","to":"external:mime?.startsWith","kind":"calls","metadata":{"unresolvedName":"mime?.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ExpandedContent","to":"external:content.slice","kind":"calls","metadata":{"unresolvedName":"content.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ExpandedContent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ExpandedContent","to":"external:url.startsWith","kind":"calls","metadata":{"unresolvedName":"url.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ExpandedContent","to":"symbol-name:decodeURIComponent","kind":"calls","metadata":{"unresolvedName":"decodeURIComponent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ExpandedContent","to":"external:url.replace","kind":"calls","metadata":{"unresolvedName":"url.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ExpandedContent","to":"external:url?.startsWith","kind":"calls","metadata":{"unresolvedName":"url?.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ExpandedContent","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","to":"symbol-name:setCopied","kind":"calls","metadata":{"unresolvedName":"setCopied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","to":"symbol-name:clipboardErrorHandler","kind":"calls","metadata":{"unresolvedName":"clipboardErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","to":"external:attachment.mime?.startsWith","kind":"calls","metadata":{"unresolvedName":"attachment.mime?.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","to":"external:fetch(attachment.url)\r\n .then","kind":"calls","metadata":{"unresolvedName":"fetch(attachment.url)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","to":"symbol-name:fetch","kind":"calls","metadata":{"unresolvedName":"fetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","to":"external:res.arrayBuffer","kind":"calls","metadata":{"unresolvedName":"res.arrayBuffer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:saveData","kind":"calls","metadata":{"unresolvedName":"saveData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","to":"external:new TextEncoder().encode","kind":"calls","metadata":{"unresolvedName":"new TextEncoder().encode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","to":"symbol-name:onOpenDetail","kind":"calls","metadata":{"unresolvedName":"onOpenDetail"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:ActionBar","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","to":"symbol-name:setCopied","kind":"calls","metadata":{"unresolvedName":"setCopied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","to":"symbol-name:clipboardErrorHandler","kind":"calls","metadata":{"unresolvedName":"clipboardErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","to":"external:attachment.mime?.startsWith","kind":"calls","metadata":{"unresolvedName":"attachment.mime?.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","to":"external:fetch(attachment.url)\r\n .then","kind":"calls","metadata":{"unresolvedName":"fetch(attachment.url)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","to":"symbol-name:fetch","kind":"calls","metadata":{"unresolvedName":"fetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","to":"external:res.arrayBuffer","kind":"calls","metadata":{"unresolvedName":"res.arrayBuffer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:saveData","kind":"calls","metadata":{"unresolvedName":"saveData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","to":"external:new TextEncoder().encode","kind":"calls","metadata":{"unresolvedName":"new TextEncoder().encode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx:","to":"symbol-name:onOpenDetail","kind":"calls","metadata":{"unresolvedName":"onOpenDetail"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentPreview.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentItem.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentPreview.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentPreview.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentPreview.tsx:AttachmentPreview","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentPreview.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentPreview.tsx:AttachmentPreview","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentPreview.tsx:AttachmentPreview","to":"external:attachments.map","kind":"calls","metadata":{"unresolvedName":"attachments.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromFilePart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromFilePart","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromFilePart","to":"external:crypto.randomUUID","kind":"calls","metadata":{"unresolvedName":"crypto.randomUUID"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromAgentPart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromAgentPart","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromAgentPart","to":"external:crypto.randomUUID","kind":"calls","metadata":{"unresolvedName":"crypto.randomUUID"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromTextPart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromTextPart","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromTextPart","to":"external:part.text.trim","kind":"calls","metadata":{"unresolvedName":"part.text.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromTextPart","to":"external:text.slice(0, 30).replace","kind":"calls","metadata":{"unresolvedName":"text.slice(0, 30).replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromTextPart","to":"external:text.slice","kind":"calls","metadata":{"unresolvedName":"text.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromTextPart","to":"external:text.replace","kind":"calls","metadata":{"unresolvedName":"text.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromTextPart","to":"external:crypto.randomUUID","kind":"calls","metadata":{"unresolvedName":"crypto.randomUUID"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:getMentionText","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:getMentionText","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:hasExpandableContent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:hasExpandableContent","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:hasExpandableContent","to":"external:attachment.mime?.startsWith","kind":"calls","metadata":{"unresolvedName":"attachment.mime?.startsWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:getAttachmentIcon","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:getAttachmentIcon","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:getAttachmentIcon","to":"external:attachment.mime?.startsWith","kind":"calls","metadata":{"unresolvedName":"attachment.mime?.startsWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:createUserMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:createUserMessage","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:createAssistantMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:createAssistantMessage","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:createToolPart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:createToolPart","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"symbol-name:createAssistantMessage","kind":"calls","metadata":{"unresolvedName":"createAssistantMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:createToolPart","kind":"calls","metadata":{"unresolvedName":"createToolPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","kind":"calls","metadata":{"unresolvedName":"buildVisibleMessageEntries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(entries).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(entries).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(entries[0].sourceIds).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(entries[0].sourceIds).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(entries[0].message.parts).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(entries[0].message.parts).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(getVisibleMessageForkTargetId(entries[0])).toBe","kind":"calls","metadata":{"unresolvedName":"expect(getVisibleMessageForkTargetId(entries[0])).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:getVisibleMessageForkTargetId","kind":"calls","metadata":{"unresolvedName":"getVisibleMessageForkTargetId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(entries[0].message.info.id).toBe","kind":"calls","metadata":{"unresolvedName":"expect(entries[0].message.info.id).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"symbol-name:createAssistantMessage","kind":"calls","metadata":{"unresolvedName":"createAssistantMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:createToolPart","kind":"calls","metadata":{"unresolvedName":"createToolPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","kind":"calls","metadata":{"unresolvedName":"buildVisibleMessageEntries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(entries).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(entries).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(entries[0].sourceIds).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(entries[0].sourceIds).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(entries[0].message.parts).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(entries[0].message.parts).toHaveLength"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"symbol-name:createAssistantMessage","kind":"calls","metadata":{"unresolvedName":"createAssistantMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:createToolPart","kind":"calls","metadata":{"unresolvedName":"createToolPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","kind":"calls","metadata":{"unresolvedName":"buildVisibleMessageEntries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(entries).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(entries).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(entries[0].sourceIds).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(entries[0].sourceIds).toEqual"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"symbol-name:createAssistantMessage","kind":"calls","metadata":{"unresolvedName":"createAssistantMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:createToolPart","kind":"calls","metadata":{"unresolvedName":"createToolPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","kind":"calls","metadata":{"unresolvedName":"buildVisibleMessageEntries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(entries).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(entries).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(getVisibleMessageForkTargetId(entries[0])).toBe","kind":"calls","metadata":{"unresolvedName":"expect(getVisibleMessageForkTargetId(entries[0])).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:getVisibleMessageForkTargetId","kind":"calls","metadata":{"unresolvedName":"getVisibleMessageForkTargetId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"symbol-name:createAssistantMessage","kind":"calls","metadata":{"unresolvedName":"createAssistantMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:createToolPart","kind":"calls","metadata":{"unresolvedName":"createToolPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","kind":"calls","metadata":{"unresolvedName":"buildVisibleMessageEntries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(entries).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(entries).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(entries[0].message.info.id).toBe","kind":"calls","metadata":{"unresolvedName":"expect(entries[0].message.info.id).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"symbol-name:createAssistantMessage","kind":"calls","metadata":{"unresolvedName":"createAssistantMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","kind":"calls","metadata":{"unresolvedName":"buildVisibleMessageEntries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(entries).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(entries).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"symbol-name:createUserMessage","kind":"calls","metadata":{"unresolvedName":"createUserMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"symbol-name:createAssistantMessage","kind":"calls","metadata":{"unresolvedName":"createAssistantMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:buildTurnDurationMap","kind":"calls","metadata":{"unresolvedName":"buildTurnDurationMap"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(durationMap.get('assistant-2')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(durationMap.get('assistant-2')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:durationMap.get","kind":"calls","metadata":{"unresolvedName":"durationMap.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(durationMap.get('assistant-3')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(durationMap.get('assistant-3')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(durationMap.has('assistant-1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(durationMap.has('assistant-1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:durationMap.has","kind":"calls","metadata":{"unresolvedName":"durationMap.has"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"symbol-name:createUserMessage","kind":"calls","metadata":{"unresolvedName":"createUserMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"symbol-name:createAssistantMessage","kind":"calls","metadata":{"unresolvedName":"createAssistantMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:buildTurnDurationMap","kind":"calls","metadata":{"unresolvedName":"buildTurnDurationMap"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(durationMap.get('assistant-2')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(durationMap.get('assistant-2')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:durationMap.get","kind":"calls","metadata":{"unresolvedName":"durationMap.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(durationMap.get('assistant-3')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(durationMap.get('assistant-3')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:expect(durationMap.has('assistant-1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(durationMap.has('assistant-1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.test.ts:","to":"external:durationMap.has","kind":"calls","metadata":{"unresolvedName":"durationMap.has"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"external:motion/mini","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:NOOP","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:NOOP","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:estimateMessageHeight","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:estimateMessageHeight","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:estimateMessageHeight","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:rememberMeasuredMessageHeight","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:rememberMeasuredMessageHeight","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:rememberMeasuredMessageHeight","to":"external:measuredMessageHeightCache.set","kind":"calls","metadata":{"unresolvedName":"measuredMessageHeightCache.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:rememberMeasuredMessageHeight","to":"external:measuredMessageHeightCache.keys().next","kind":"calls","metadata":{"unresolvedName":"measuredMessageHeightCache.keys().next"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:rememberMeasuredMessageHeight","to":"external:measuredMessageHeightCache.keys","kind":"calls","metadata":{"unresolvedName":"measuredMessageHeightCache.keys"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:rememberMeasuredMessageHeight","to":"external:measuredMessageHeightCache.delete","kind":"calls","metadata":{"unresolvedName":"measuredMessageHeightCache.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:buildTurnDurationMap","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:buildTurnDurationMap","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:buildTurnDurationMap","to":"external:visibleMessages.filter(message => message.info.role === 'assistant').map","kind":"calls","metadata":{"unresolvedName":"visibleMessages.filter(message => message.info.role === 'assistant').map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:buildTurnDurationMap","to":"external:visibleMessages.filter","kind":"calls","metadata":{"unresolvedName":"visibleMessages.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:buildTurnDurationMap","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:buildTurnDurationMap","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:commitTurn","kind":"calls","metadata":{"unresolvedName":"commitTurn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:buildTurnDurationMap","to":"external:visibleAssistantIds.has","kind":"calls","metadata":{"unresolvedName":"visibleAssistantIds.has"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:commitTurn","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:commitTurn","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:commitTurn","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","kind":"calls","metadata":{"unresolvedName":"useTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewport","kind":"calls","metadata":{"unresolvedName":"useChatViewport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","kind":"calls","metadata":{"unresolvedName":"buildVisibleMessageEntries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:visibleMessageEntries.map","kind":"calls","metadata":{"unresolvedName":"visibleMessageEntries.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:getVisibleMessageForkTargetId","kind":"calls","metadata":{"unresolvedName":"getVisibleMessageForkTargetId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:buildTurnDurationMap","kind":"calls","metadata":{"unresolvedName":"buildTurnDurationMap"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:visibleMessages.slice(-STICKY_RENDER_MESSAGE_COUNT).map","kind":"calls","metadata":{"unresolvedName":"visibleMessages.slice(-STICKY_RENDER_MESSAGE_COUNT).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:visibleMessages.slice","kind":"calls","metadata":{"unresolvedName":"visibleMessages.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:setScrollRoot","kind":"calls","metadata":{"unresolvedName":"setScrollRoot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:onAtBottomChange","kind":"calls","metadata":{"unresolvedName":"onAtBottomChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:el.addEventListener","kind":"calls","metadata":{"unresolvedName":"el.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:el.removeEventListener","kind":"calls","metadata":{"unresolvedName":"el.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:animate","kind":"calls","metadata":{"unresolvedName":"animate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:setIsLoadingMore","kind":"calls","metadata":{"unresolvedName":"setIsLoadingMore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:Promise.resolve(fn()).finally","kind":"calls","metadata":{"unresolvedName":"Promise.resolve(fn()).finally"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:observer.observe","kind":"calls","metadata":{"unresolvedName":"observer.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:observer.disconnect","kind":"calls","metadata":{"unresolvedName":"observer.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:entry.target.getAttribute","kind":"calls","metadata":{"unresolvedName":"entry.target.getAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:visibleIds.has","kind":"calls","metadata":{"unresolvedName":"visibleIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:visibleIds.add","kind":"calls","metadata":{"unresolvedName":"visibleIds.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:visibleIds.delete","kind":"calls","metadata":{"unresolvedName":"visibleIds.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:onVisibleIdsChangeRef.current","kind":"calls","metadata":{"unresolvedName":"onVisibleIdsChangeRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:root.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"root.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:elements.forEach","kind":"calls","metadata":{"unresolvedName":"elements.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:useImperativeHandle","kind":"calls","metadata":{"unresolvedName":"useImperativeHandle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:el.scrollTo","kind":"calls","metadata":{"unresolvedName":"el.scrollTo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:scrollRef.current\n ?.querySelector","kind":"calls","metadata":{"unresolvedName":"scrollRef.current\n ?.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:prev.push","kind":"calls","metadata":{"unresolvedName":"prev.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:groups.push","kind":"calls","metadata":{"unresolvedName":"groups.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:messages.map","kind":"calls","metadata":{"unresolvedName":"messages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:stickyRenderIds.has","kind":"calls","metadata":{"unresolvedName":"stickyRenderIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:estimateMessageHeight","kind":"calls","metadata":{"unresolvedName":"estimateMessageHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:turnDurationMap.get","kind":"calls","metadata":{"unresolvedName":"turnDurationMap.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:forkTargetIdMap.get","kind":"calls","metadata":{"unresolvedName":"forkTargetIdMap.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:messageGroups.map","kind":"calls","metadata":{"unresolvedName":"messageGroups.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:renderMessageGroup","kind":"calls","metadata":{"unresolvedName":"renderMessageGroup"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:setScrollRoot","kind":"calls","metadata":{"unresolvedName":"setScrollRoot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:onAtBottomChange","kind":"calls","metadata":{"unresolvedName":"onAtBottomChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:el.addEventListener","kind":"calls","metadata":{"unresolvedName":"el.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:el.removeEventListener","kind":"calls","metadata":{"unresolvedName":"el.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:onScroll","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:onScroll","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:onScroll","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:onScroll","to":"symbol-name:onAtBottomChange","kind":"calls","metadata":{"unresolvedName":"onAtBottomChange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:onAtBottomChange","kind":"calls","metadata":{"unresolvedName":"onAtBottomChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:animate","kind":"calls","metadata":{"unresolvedName":"animate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:animate","kind":"calls","metadata":{"unresolvedName":"animate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:setIsLoadingMore","kind":"calls","metadata":{"unresolvedName":"setIsLoadingMore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:Promise.resolve(fn()).finally","kind":"calls","metadata":{"unresolvedName":"Promise.resolve(fn()).finally"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:observer.observe","kind":"calls","metadata":{"unresolvedName":"observer.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:observer.disconnect","kind":"calls","metadata":{"unresolvedName":"observer.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:setIsLoadingMore","kind":"calls","metadata":{"unresolvedName":"setIsLoadingMore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:Promise.resolve(fn()).finally","kind":"calls","metadata":{"unresolvedName":"Promise.resolve(fn()).finally"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:setIsLoadingMore","kind":"calls","metadata":{"unresolvedName":"setIsLoadingMore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:entry.target.getAttribute","kind":"calls","metadata":{"unresolvedName":"entry.target.getAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:visibleIds.has","kind":"calls","metadata":{"unresolvedName":"visibleIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:visibleIds.add","kind":"calls","metadata":{"unresolvedName":"visibleIds.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:visibleIds.delete","kind":"calls","metadata":{"unresolvedName":"visibleIds.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:onVisibleIdsChangeRef.current","kind":"calls","metadata":{"unresolvedName":"onVisibleIdsChangeRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:root.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"root.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:elements.forEach","kind":"calls","metadata":{"unresolvedName":"elements.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:observer.observe","kind":"calls","metadata":{"unresolvedName":"observer.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:observer.disconnect","kind":"calls","metadata":{"unresolvedName":"observer.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:entry.target.getAttribute","kind":"calls","metadata":{"unresolvedName":"entry.target.getAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:visibleIds.has","kind":"calls","metadata":{"unresolvedName":"visibleIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:visibleIds.add","kind":"calls","metadata":{"unresolvedName":"visibleIds.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:visibleIds.delete","kind":"calls","metadata":{"unresolvedName":"visibleIds.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:onVisibleIdsChangeRef.current","kind":"calls","metadata":{"unresolvedName":"onVisibleIdsChangeRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToBottom","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToBottom","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToBottom","to":"external:el.scrollTo","kind":"calls","metadata":{"unresolvedName":"el.scrollTo"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToBottomIfAtBottom","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToBottomIfAtBottom","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToBottomIfAtBottom","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToLastMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToLastMessage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToLastMessage","to":"external:scrollRef.current\n ?.querySelector","kind":"calls","metadata":{"unresolvedName":"scrollRef.current\n ?.querySelector"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToMessageIndex","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToMessageIndex","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToMessageIndex","to":"external:scrollRef.current\n ?.querySelector","kind":"calls","metadata":{"unresolvedName":"scrollRef.current\n ?.querySelector"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToMessageId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToMessageId","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:scrollToMessageId","to":"external:scrollRef.current\n ?.querySelector","kind":"calls","metadata":{"unresolvedName":"scrollRef.current\n ?.querySelector"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:prev.push","kind":"calls","metadata":{"unresolvedName":"prev.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:groups.push","kind":"calls","metadata":{"unresolvedName":"groups.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:messages.map","kind":"calls","metadata":{"unresolvedName":"messages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:stickyRenderIds.has","kind":"calls","metadata":{"unresolvedName":"stickyRenderIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:estimateMessageHeight","kind":"calls","metadata":{"unresolvedName":"estimateMessageHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:turnDurationMap.get","kind":"calls","metadata":{"unresolvedName":"turnDurationMap.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:forkTargetIdMap.get","kind":"calls","metadata":{"unresolvedName":"forkTargetIdMap.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:renderMessageGroup","kind":"calls","metadata":{"unresolvedName":"renderMessageGroup"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:measuredMessageHeightCache.get","kind":"calls","metadata":{"unresolvedName":"measuredMessageHeightCache.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:registerMessage","kind":"calls","metadata":{"unresolvedName":"registerMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:setIsNearViewport","kind":"calls","metadata":{"unresolvedName":"setIsNearViewport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:observer.observe","kind":"calls","metadata":{"unresolvedName":"observer.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:observer.disconnect","kind":"calls","metadata":{"unresolvedName":"observer.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:setMeasuredHeightState","kind":"calls","metadata":{"unresolvedName":"setMeasuredHeightState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:rememberMeasuredMessageHeight","kind":"calls","metadata":{"unresolvedName":"rememberMeasuredMessageHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:updateHeight","kind":"calls","metadata":{"unresolvedName":"updateHeight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:registerMessage","kind":"calls","metadata":{"unresolvedName":"registerMessage"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:setIsNearViewport","kind":"calls","metadata":{"unresolvedName":"setIsNearViewport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:observer.observe","kind":"calls","metadata":{"unresolvedName":"observer.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:observer.disconnect","kind":"calls","metadata":{"unresolvedName":"observer.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:setIsNearViewport","kind":"calls","metadata":{"unresolvedName":"setIsNearViewport"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"symbol-name:setMeasuredHeightState","kind":"calls","metadata":{"unresolvedName":"setMeasuredHeightState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:rememberMeasuredMessageHeight","kind":"calls","metadata":{"unresolvedName":"rememberMeasuredMessageHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:updateHeight","kind":"calls","metadata":{"unresolvedName":"updateHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:observer.observe","kind":"calls","metadata":{"unresolvedName":"observer.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:observer.disconnect","kind":"calls","metadata":{"unresolvedName":"observer.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:updateHeight","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:updateHeight","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:updateHeight","to":"symbol-name:setMeasuredHeightState","kind":"calls","metadata":{"unresolvedName":"setMeasuredHeightState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:updateHeight","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:updateHeight","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:rememberMeasuredMessageHeight","kind":"calls","metadata":{"unresolvedName":"rememberMeasuredMessageHeight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatArea.tsx:rememberMeasuredMessageHeight","kind":"calls","metadata":{"unresolvedName":"rememberMeasuredMessageHeight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:messageHasContent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:messageHasContent","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:messageHasContent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:hasRenderableParts","kind":"calls","metadata":{"unresolvedName":"hasRenderableParts"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:messageHasContent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isAbortedMessage","kind":"calls","metadata":{"unresolvedName":"isAbortedMessage"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isVisibleThinking","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isVisibleThinking","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isVisibleThinking","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleReasoningPart","kind":"calls","metadata":{"unresolvedName":"isVisibleReasoningPart"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isVisibleText","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isVisibleText","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isVisibleText","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleTextPart","kind":"calls","metadata":{"unresolvedName":"isVisibleTextPart"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:endsWithTool","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:endsWithTool","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:endsWithTool","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleReasoningPart","kind":"calls","metadata":{"unresolvedName":"isVisibleReasoningPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:endsWithTool","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleTextPart","kind":"calls","metadata":{"unresolvedName":"isVisibleTextPart"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isToolOnlyFollowUp","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isToolOnlyFollowUp","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isToolOnlyFollowUp","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isVisibleThinking","kind":"calls","metadata":{"unresolvedName":"isVisibleThinking"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isToolOnlyFollowUp","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isVisibleText","kind":"calls","metadata":{"unresolvedName":"isVisibleText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isMergeableTrailing","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isMergeableTrailing","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isMergeableTrailing","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isVisibleThinking","kind":"calls","metadata":{"unresolvedName":"isVisibleThinking"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isMergeableTrailing","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isVisibleText","kind":"calls","metadata":{"unresolvedName":"isVisibleText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:getVisibleMessageForkTargetId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:getVisibleMessageForkTargetId","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","to":"external:seenIds.has","kind":"calls","metadata":{"unresolvedName":"seenIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","to":"external:seenIds.add","kind":"calls","metadata":{"unresolvedName":"seenIds.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","to":"external:unique.push","kind":"calls","metadata":{"unresolvedName":"unique.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","to":"external:unique.filter","kind":"calls","metadata":{"unresolvedName":"unique.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:endsWithTool","kind":"calls","metadata":{"unresolvedName":"endsWithTool"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","to":"external:result.push","kind":"calls","metadata":{"unresolvedName":"result.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isToolOnlyFollowUp","kind":"calls","metadata":{"unresolvedName":"isToolOnlyFollowUp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","to":"external:sourceIds.push","kind":"calls","metadata":{"unresolvedName":"sourceIds.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:isMergeableTrailing","kind":"calls","metadata":{"unresolvedName":"isMergeableTrailing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","to":"external:filteredMessages.slice","kind":"calls","metadata":{"unresolvedName":"filteredMessages.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","to":"external:mergedMessages.flatMap","kind":"calls","metadata":{"unresolvedName":"mergedMessages.flatMap"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatAreaVisibility.ts:buildVisibleMessageEntries","to":"external:mergedMessages.some","kind":"calls","metadata":{"unresolvedName":"mergedMessages.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/OutlineIndex.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/sessionHelpers.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:setSidebarRequestedWidth","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:setSidebarRequestedWidth","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:scheduleSplitSessionNavigation","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:scheduleSplitSessionNavigation","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:scheduleSplitSessionNavigation","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:scheduleSplitSessionNavigation","to":"symbol-name:callback","kind":"calls","metadata":{"unresolvedName":"callback"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:callback","kind":"calls","metadata":{"unresolvedName":"callback"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:callback","kind":"calls","metadata":{"unresolvedName":"callback"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:cancelPendingSplitSessionNavigation","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:cancelPendingSplitSessionNavigation","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportMaybe","kind":"calls","metadata":{"unresolvedName":"useChatViewportMaybe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:canUseSplitPane","kind":"calls","metadata":{"unresolvedName":"canUseSplitPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:useModels","kind":"calls","metadata":{"unresolvedName":"useModels"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:useHiddenModelKeys","kind":"calls","metadata":{"unresolvedName":"useHiddenModelKeys"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:models.filter","kind":"calls","metadata":{"unresolvedName":"models.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:hiddenModelKeys.includes","kind":"calls","metadata":{"unresolvedName":"hiddenModelKeys.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","kind":"calls","metadata":{"unresolvedName":"useModelSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:autoApproveStore.onFullAutoChange","kind":"calls","metadata":{"unresolvedName":"autoApproveStore.onFullAutoChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:setFullAutoHint","kind":"calls","metadata":{"unresolvedName":"setFullAutoHint"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:navigatePaneToSession","kind":"calls","metadata":{"unresolvedName":"navigatePaneToSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:navigatePaneHome","kind":"calls","metadata":{"unresolvedName":"navigatePaneHome"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:prev.every","kind":"calls","metadata":{"unresolvedName":"prev.every"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:setVisibleMessageIds","kind":"calls","metadata":{"unresolvedName":"setVisibleMessageIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:chatAreaRef.current?.scrollToMessageId","kind":"calls","metadata":{"unresolvedName":"chatAreaRef.current?.scrollToMessageId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:setInputBoxHeight","kind":"calls","metadata":{"unresolvedName":"setInputBoxHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:ro.observe","kind":"calls","metadata":{"unresolvedName":"ro.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","kind":"calls","metadata":{"unresolvedName":"useChatSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:useDeferredValue","kind":"calls","metadata":{"unresolvedName":"useDeferredValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:messageStore.protectSession","kind":"calls","metadata":{"unresolvedName":"messageStore.protectSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:messageStore.unprotectSession","kind":"calls","metadata":{"unresolvedName":"messageStore.unprotectSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:useCancelHint","kind":"calls","metadata":{"unresolvedName":"useCancelHint"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:handleVisibleMessageIdsChangeRef.current","kind":"calls","metadata":{"unresolvedName":"handleVisibleMessageIdsChangeRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:setVisibleMessageIdsStable","kind":"calls","metadata":{"unresolvedName":"setVisibleMessageIdsStable"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:agents.find","kind":"calls","metadata":{"unresolvedName":"agents.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:findModelByKey","kind":"calls","metadata":{"unresolvedName":"findModelByKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:handleModelChange","kind":"calls","metadata":{"unresolvedName":"handleModelChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:setSelectedAgent","kind":"calls","metadata":{"unresolvedName":"setSelectedAgent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:syncModelForAgent","kind":"calls","metadata":{"unresolvedName":"syncModelForAgent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:agents.filter","kind":"calls","metadata":{"unresolvedName":"agents.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:primaryAgents.findIndex","kind":"calls","metadata":{"unresolvedName":"primaryAgents.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:handleAgentChange","kind":"calls","metadata":{"unresolvedName":"handleAgentChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/sessionHelpers.ts:restoreModelSelection","kind":"calls","metadata":{"unresolvedName":"restoreModelSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:restoreFromMessage","kind":"calls","metadata":{"unresolvedName":"restoreFromMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:[...messages].reverse().find","kind":"calls","metadata":{"unresolvedName":"[...messages].reverse().find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:[...messages].reverse","kind":"calls","metadata":{"unresolvedName":"[...messages].reverse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:restoreAgentFromMessage","kind":"calls","metadata":{"unresolvedName":"restoreAgentFromMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:paneLayoutStore.focusPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.focusPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:overlayRef.current?.setZone","kind":"calls","metadata":{"unresolvedName":"overlayRef.current?.setZone"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:cancelPendingZone","kind":"calls","metadata":{"unresolvedName":"cancelPendingZone"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:writeZone","kind":"calls","metadata":{"unresolvedName":"writeZone"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:resetDropState","kind":"calls","metadata":{"unresolvedName":"resetDropState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:e.dataTransfer.types.includes","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.types.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:e.dataTransfer.getData","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.getData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:e.currentTarget.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"e.currentTarget.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:resolveDropZone","kind":"calls","metadata":{"unresolvedName":"resolveDropZone"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:e.currentTarget.contains","kind":"calls","metadata":{"unresolvedName":"e.currentTarget.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:cancelPendingSplitSessionNavigation","kind":"calls","metadata":{"unresolvedName":"cancelPendingSplitSessionNavigation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:readSessionDragPayload","kind":"calls","metadata":{"unresolvedName":"readSessionDragPayload"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:paneLayoutStore.getFocusedPaneId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:paneLayoutStore.splitPaneToSide","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.splitPaneToSide"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:paneLayoutStore.findLeaf","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.findLeaf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:scheduleSplitSessionNavigation","kind":"calls","metadata":{"unresolvedName":"scheduleSplitSessionNavigation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:autoApproveStore.cyclePaneFullAutoMode","kind":"calls","metadata":{"unresolvedName":"autoApproveStore.cyclePaneFullAutoMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:modelSelectorRef.current?.openMenu","kind":"calls","metadata":{"unresolvedName":"modelSelectorRef.current?.openMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:controllerActionsRef.current.newSession","kind":"calls","metadata":{"unresolvedName":"controllerActionsRef.current.newSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:controllerActionsRef.current.archiveSession","kind":"calls","metadata":{"unresolvedName":"controllerActionsRef.current.archiveSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:controllerActionsRef.current.previousSession","kind":"calls","metadata":{"unresolvedName":"controllerActionsRef.current.previousSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:controllerActionsRef.current.nextSession","kind":"calls","metadata":{"unresolvedName":"controllerActionsRef.current.nextSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:controllerActionsRef.current.toggleAgent","kind":"calls","metadata":{"unresolvedName":"controllerActionsRef.current.toggleAgent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:controllerActionsRef.current.copyLastResponse","kind":"calls","metadata":{"unresolvedName":"controllerActionsRef.current.copyLastResponse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:controllerActionsRef.current.cancelMessage","kind":"calls","metadata":{"unresolvedName":"controllerActionsRef.current.cancelMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:controllerActionsRef.current.openModelSelector","kind":"calls","metadata":{"unresolvedName":"controllerActionsRef.current.openModelSelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:controllerActionsRef.current.toggleFullAuto","kind":"calls","metadata":{"unresolvedName":"controllerActionsRef.current.toggleFullAuto"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:paneControllerStore.removeController","kind":"calls","metadata":{"unresolvedName":"paneControllerStore.removeController"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:paneControllerStore.setController","kind":"calls","metadata":{"unresolvedName":"paneControllerStore.setController"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:setPermissionCollapsed","kind":"calls","metadata":{"unresolvedName":"setPermissionCollapsed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:setQuestionCollapsed","kind":"calls","metadata":{"unresolvedName":"setQuestionCollapsed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","kind":"calls","metadata":{"unresolvedName":"useTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:pendingPermissionRequests.find","kind":"calls","metadata":{"unresolvedName":"pendingPermissionRequests.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:handlePermissionReply","kind":"calls","metadata":{"unresolvedName":"handlePermissionReply"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:handleQuestionReply","kind":"calls","metadata":{"unresolvedName":"handleQuestionReply"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:handleQuestionReject","kind":"calls","metadata":{"unresolvedName":"handleQuestionReject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:chatAreaRef.current?.scrollToBottom","kind":"calls","metadata":{"unresolvedName":"chatAreaRef.current?.scrollToBottom"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:autoApproveStore.onFullAutoChange","kind":"calls","metadata":{"unresolvedName":"autoApproveStore.onFullAutoChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:setFullAutoHint","kind":"calls","metadata":{"unresolvedName":"setFullAutoHint"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:setFullAutoHint","kind":"calls","metadata":{"unresolvedName":"setFullAutoHint"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:navigatePaneToSession","kind":"calls","metadata":{"unresolvedName":"navigatePaneToSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:navigatePaneHome","kind":"calls","metadata":{"unresolvedName":"navigatePaneHome"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:prev.every","kind":"calls","metadata":{"unresolvedName":"prev.every"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:setVisibleMessageIds","kind":"calls","metadata":{"unresolvedName":"setVisibleMessageIds"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:chatAreaRef.current?.scrollToMessageId","kind":"calls","metadata":{"unresolvedName":"chatAreaRef.current?.scrollToMessageId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:setInputBoxHeight","kind":"calls","metadata":{"unresolvedName":"setInputBoxHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:ro.observe","kind":"calls","metadata":{"unresolvedName":"ro.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:setInputBoxHeight","kind":"calls","metadata":{"unresolvedName":"setInputBoxHeight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:messageStore.protectSession","kind":"calls","metadata":{"unresolvedName":"messageStore.protectSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:messageStore.unprotectSession","kind":"calls","metadata":{"unresolvedName":"messageStore.unprotectSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:messageStore.unprotectSession","kind":"calls","metadata":{"unresolvedName":"messageStore.unprotectSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:handleVisibleMessageIdsChangeRef.current","kind":"calls","metadata":{"unresolvedName":"handleVisibleMessageIdsChangeRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:setVisibleMessageIdsStable","kind":"calls","metadata":{"unresolvedName":"setVisibleMessageIdsStable"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:agents.find","kind":"calls","metadata":{"unresolvedName":"agents.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:findModelByKey","kind":"calls","metadata":{"unresolvedName":"findModelByKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:handleModelChange","kind":"calls","metadata":{"unresolvedName":"handleModelChange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:setSelectedAgent","kind":"calls","metadata":{"unresolvedName":"setSelectedAgent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:syncModelForAgent","kind":"calls","metadata":{"unresolvedName":"syncModelForAgent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:agents.filter","kind":"calls","metadata":{"unresolvedName":"agents.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:primaryAgents.findIndex","kind":"calls","metadata":{"unresolvedName":"primaryAgents.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:handleAgentChange","kind":"calls","metadata":{"unresolvedName":"handleAgentChange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/sessionHelpers.ts:restoreModelSelection","kind":"calls","metadata":{"unresolvedName":"restoreModelSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:restoreFromMessage","kind":"calls","metadata":{"unresolvedName":"restoreFromMessage"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:[...messages].reverse().find","kind":"calls","metadata":{"unresolvedName":"[...messages].reverse().find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:[...messages].reverse","kind":"calls","metadata":{"unresolvedName":"[...messages].reverse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:restoreFromMessage","kind":"calls","metadata":{"unresolvedName":"restoreFromMessage"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:restoreAgentFromMessage","kind":"calls","metadata":{"unresolvedName":"restoreAgentFromMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:[...messages].reverse().find","kind":"calls","metadata":{"unresolvedName":"[...messages].reverse().find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:[...messages].reverse","kind":"calls","metadata":{"unresolvedName":"[...messages].reverse"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:paneLayoutStore.focusPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.focusPane"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:overlayRef.current?.setZone","kind":"calls","metadata":{"unresolvedName":"overlayRef.current?.setZone"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:cancelPendingZone","kind":"calls","metadata":{"unresolvedName":"cancelPendingZone"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:writeZone","kind":"calls","metadata":{"unresolvedName":"writeZone"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:resetDropState","kind":"calls","metadata":{"unresolvedName":"resetDropState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:e.dataTransfer.types.includes","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.types.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:e.dataTransfer.getData","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.getData"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:e.dataTransfer.types.includes","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.types.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:e.currentTarget.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"e.currentTarget.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:resolveDropZone","kind":"calls","metadata":{"unresolvedName":"resolveDropZone"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:writeZone","kind":"calls","metadata":{"unresolvedName":"writeZone"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:writeZone","kind":"calls","metadata":{"unresolvedName":"writeZone"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:e.currentTarget.contains","kind":"calls","metadata":{"unresolvedName":"e.currentTarget.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:resetDropState","kind":"calls","metadata":{"unresolvedName":"resetDropState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:resetDropState","kind":"calls","metadata":{"unresolvedName":"resetDropState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:cancelPendingSplitSessionNavigation","kind":"calls","metadata":{"unresolvedName":"cancelPendingSplitSessionNavigation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:readSessionDragPayload","kind":"calls","metadata":{"unresolvedName":"readSessionDragPayload"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:navigatePaneToSession","kind":"calls","metadata":{"unresolvedName":"navigatePaneToSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:paneLayoutStore.getFocusedPaneId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:paneLayoutStore.splitPaneToSide","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.splitPaneToSide"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:paneLayoutStore.findLeaf","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.findLeaf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:paneLayoutStore.focusPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.focusPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:scheduleSplitSessionNavigation","kind":"calls","metadata":{"unresolvedName":"scheduleSplitSessionNavigation"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:paneLayoutStore.findLeaf","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.findLeaf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:navigatePaneToSession","kind":"calls","metadata":{"unresolvedName":"navigatePaneToSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:autoApproveStore.cyclePaneFullAutoMode","kind":"calls","metadata":{"unresolvedName":"autoApproveStore.cyclePaneFullAutoMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:modelSelectorRef.current?.openMenu","kind":"calls","metadata":{"unresolvedName":"modelSelectorRef.current?.openMenu"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:paneControllerStore.removeController","kind":"calls","metadata":{"unresolvedName":"paneControllerStore.removeController"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:paneControllerStore.removeController","kind":"calls","metadata":{"unresolvedName":"paneControllerStore.removeController"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"external:paneControllerStore.setController","kind":"calls","metadata":{"unresolvedName":"paneControllerStore.setController"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:setPermissionCollapsed","kind":"calls","metadata":{"unresolvedName":"setPermissionCollapsed"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:","to":"symbol-name:setQuestionCollapsed","kind":"calls","metadata":{"unresolvedName":"setQuestionCollapsed"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:onPermissionReply","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:onPermissionReply","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:onPermissionReply","to":"external:pendingPermissionRequests.find","kind":"calls","metadata":{"unresolvedName":"pendingPermissionRequests.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ChatPane.tsx:onPermissionReply","to":"symbol-name:handlePermissionReply","kind":"calls","metadata":{"unresolvedName":"handlePermissionReply"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:clamp","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:clamp","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:clamp","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:clamp","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:getResponsiveSidebarMaxWidth","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:getResponsiveSidebarMaxWidth","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:getResponsiveSidebarMaxWidth","to":"external:Math.floor","kind":"calls","metadata":{"unresolvedName":"Math.floor"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:getResponsiveSidebarDefaultWidth","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:getResponsiveSidebarDefaultWidth","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:getResponsiveSidebarDefaultWidth","to":"external:Math.floor","kind":"calls","metadata":{"unresolvedName":"Math.floor"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:getResponsiveRightPanelMaxWidth","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:getResponsiveRightPanelMaxWidth","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:getResponsiveRightPanelMaxWidth","to":"external:Math.floor","kind":"calls","metadata":{"unresolvedName":"Math.floor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:getResponsiveRightPanelMaxWidth","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:canUseSplitPane","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:canUseSplitPane","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:computeChatViewport","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:computeChatViewport","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:computeChatViewport","to":"symbol-name:clamp","kind":"calls","metadata":{"unresolvedName":"clamp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:computeChatViewport","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:getResponsiveSidebarMaxWidth","kind":"calls","metadata":{"unresolvedName":"getResponsiveSidebarMaxWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:computeChatViewport","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:getResponsiveSidebarDefaultWidth","kind":"calls","metadata":{"unresolvedName":"getResponsiveSidebarDefaultWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:computeChatViewport","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:getResponsiveRightPanelMaxWidth","kind":"calls","metadata":{"unresolvedName":"getResponsiveRightPanelMaxWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:computeChatViewport","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:computeChatViewport","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:computeChatViewport","to":"external:Math.floor","kind":"calls","metadata":{"unresolvedName":"Math.floor"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:ChatViewportProvider","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:ChatViewportProvider","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewport","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewport","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewport","to":"symbol-name:useContext","kind":"calls","metadata":{"unresolvedName":"useContext"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportMaybe","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportMaybe","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportMaybe","to":"symbol-name:useContext","kind":"calls","metadata":{"unresolvedName":"useContext"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","kind":"calls","metadata":{"unresolvedName":"useInputCapabilities"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","to":"symbol-name:parseInt","kind":"calls","metadata":{"unresolvedName":"parseInt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","to":"symbol-name:setViewportWidth","kind":"calls","metadata":{"unresolvedName":"setViewportWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","to":"symbol-name:setViewportHeight","kind":"calls","metadata":{"unresolvedName":"setViewportHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","to":"symbol-name:setSurfaceWidth","kind":"calls","metadata":{"unresolvedName":"setSurfaceWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","to":"external:ro.observe","kind":"calls","metadata":{"unresolvedName":"ro.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","to":"symbol-name:setSidebarHasCustomWidth","kind":"calls","metadata":{"unresolvedName":"setSidebarHasCustomWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","to":"symbol-name:setRequestedSidebarWidthState","kind":"calls","metadata":{"unresolvedName":"setRequestedSidebarWidthState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewportController","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:computeChatViewport","kind":"calls","metadata":{"unresolvedName":"computeChatViewport"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","to":"symbol-name:parseInt","kind":"calls","metadata":{"unresolvedName":"parseInt"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","to":"symbol-name:setViewportWidth","kind":"calls","metadata":{"unresolvedName":"setViewportWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","to":"symbol-name:setViewportHeight","kind":"calls","metadata":{"unresolvedName":"setViewportHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:handleResize","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:handleResize","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:handleResize","to":"symbol-name:setViewportWidth","kind":"calls","metadata":{"unresolvedName":"setViewportWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:handleResize","to":"symbol-name:setViewportHeight","kind":"calls","metadata":{"unresolvedName":"setViewportHeight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","to":"symbol-name:setSurfaceWidth","kind":"calls","metadata":{"unresolvedName":"setSurfaceWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","to":"external:ro.observe","kind":"calls","metadata":{"unresolvedName":"ro.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","to":"symbol-name:setSurfaceWidth","kind":"calls","metadata":{"unresolvedName":"setSurfaceWidth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","to":"symbol-name:setSidebarHasCustomWidth","kind":"calls","metadata":{"unresolvedName":"setSidebarHasCustomWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","to":"symbol-name:setRequestedSidebarWidthState","kind":"calls","metadata":{"unresolvedName":"setRequestedSidebarWidthState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"external:getPath().then(setPathInfo).catch","kind":"calls","metadata":{"unresolvedName":"getPath().then(setPathInfo).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"external:getPath().then","kind":"calls","metadata":{"unresolvedName":"getPath().then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getPath","kind":"calls","metadata":{"unresolvedName":"getPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:handleError","kind":"calls","metadata":{"unresolvedName":"handleError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"external:dropdownRef.current.contains","kind":"calls","metadata":{"unresolvedName":"dropdownRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"symbol-name:setIsDropdownOpen","kind":"calls","metadata":{"unresolvedName":"setIsDropdownOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"external:inputRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"inputRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"external:customPath.trim","kind":"calls","metadata":{"unresolvedName":"customPath.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"symbol-name:onStartChat","kind":"calls","metadata":{"unresolvedName":"onStartChat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"symbol-name:setCustomPath","kind":"calls","metadata":{"unresolvedName":"setCustomPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"symbol-name:setIsCustomMode","kind":"calls","metadata":{"unresolvedName":"setIsCustomMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"external:projects\r\n .filter","kind":"calls","metadata":{"unresolvedName":"projects\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleStart","kind":"calls","metadata":{"unresolvedName":"handleStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleSelectDirectory","kind":"calls","metadata":{"unresolvedName":"handleSelectDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:EmptyState","to":"external:otherDirectories.map","kind":"calls","metadata":{"unresolvedName":"otherDirectories.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","to":"external:getPath().then(setPathInfo).catch","kind":"calls","metadata":{"unresolvedName":"getPath().then(setPathInfo).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","to":"external:getPath().then","kind":"calls","metadata":{"unresolvedName":"getPath().then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getPath","kind":"calls","metadata":{"unresolvedName":"getPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:handleError","kind":"calls","metadata":{"unresolvedName":"handleError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","to":"external:dropdownRef.current.contains","kind":"calls","metadata":{"unresolvedName":"dropdownRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","to":"symbol-name:setIsDropdownOpen","kind":"calls","metadata":{"unresolvedName":"setIsDropdownOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleClickOutside","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleClickOutside","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleClickOutside","to":"external:dropdownRef.current.contains","kind":"calls","metadata":{"unresolvedName":"dropdownRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleClickOutside","to":"symbol-name:setIsDropdownOpen","kind":"calls","metadata":{"unresolvedName":"setIsDropdownOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","to":"external:inputRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"inputRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleStart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleStart","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleStart","to":"external:customPath.trim","kind":"calls","metadata":{"unresolvedName":"customPath.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleStart","to":"symbol-name:onStartChat","kind":"calls","metadata":{"unresolvedName":"onStartChat"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleSelectDirectory","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleSelectDirectory","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleSelectDirectory","to":"symbol-name:setCustomPath","kind":"calls","metadata":{"unresolvedName":"setCustomPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleSelectDirectory","to":"symbol-name:setIsDropdownOpen","kind":"calls","metadata":{"unresolvedName":"setIsDropdownOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleSelectDirectory","to":"symbol-name:setIsCustomMode","kind":"calls","metadata":{"unresolvedName":"setIsCustomMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleCustomPath","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleCustomPath","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleCustomPath","to":"symbol-name:setIsCustomMode","kind":"calls","metadata":{"unresolvedName":"setIsCustomMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleCustomPath","to":"symbol-name:setIsDropdownOpen","kind":"calls","metadata":{"unresolvedName":"setIsDropdownOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleCustomPath","to":"symbol-name:setCustomPath","kind":"calls","metadata":{"unresolvedName":"setCustomPath"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","to":"external:customPath.trim","kind":"calls","metadata":{"unresolvedName":"customPath.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleStart","kind":"calls","metadata":{"unresolvedName":"handleStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:","to":"symbol-name:setIsCustomMode","kind":"calls","metadata":{"unresolvedName":"setIsCustomMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useSessionContext.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:SessionTitleControl","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:SessionTitleControl","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:SessionTitleControl","to":"symbol-name:setEditTitle","kind":"calls","metadata":{"unresolvedName":"setEditTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:SessionTitleControl","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleRename","kind":"calls","metadata":{"unresolvedName":"handleRename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:SessionTitleControl","to":"symbol-name:setIsEditingTitle","kind":"calls","metadata":{"unresolvedName":"setIsEditingTitle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleRename","kind":"calls","metadata":{"unresolvedName":"handleRename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:","to":"symbol-name:setIsEditingTitle","kind":"calls","metadata":{"unresolvedName":"setIsEditingTitle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStore","kind":"calls","metadata":{"unresolvedName":"useMessageStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"calls","metadata":{"unresolvedName":"useLayoutStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useSessionContext.ts:useSessionContext","kind":"calls","metadata":{"unresolvedName":"useSessionContext"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useDirectory","kind":"calls","metadata":{"unresolvedName":"useDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewport","kind":"calls","metadata":{"unresolvedName":"useChatViewport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"symbol-name:setIsEditingTitle","kind":"calls","metadata":{"unresolvedName":"setIsEditingTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"external:titleInputRef.current.focus","kind":"calls","metadata":{"unresolvedName":"titleInputRef.current.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"external:titleInputRef.current.select","kind":"calls","metadata":{"unresolvedName":"titleInputRef.current.select"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"symbol-name:setEditTitle","kind":"calls","metadata":{"unresolvedName":"setEditTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"external:editTitle.trim","kind":"calls","metadata":{"unresolvedName":"editTitle.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:updateSession","kind":"calls","metadata":{"unresolvedName":"updateSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"external:messageStore.updateSessionMetadata","kind":"calls","metadata":{"unresolvedName":"messageStore.updateSessionMetadata"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"symbol-name:refresh","kind":"calls","metadata":{"unresolvedName":"refresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"symbol-name:setShareDialogOpen","kind":"calls","metadata":{"unresolvedName":"setShareDialogOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"external:layoutStore.toggleBottomPanel","kind":"calls","metadata":{"unresolvedName":"layoutStore.toggleBottomPanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:Header","to":"external:layoutStore.toggleRightPanel","kind":"calls","metadata":{"unresolvedName":"layoutStore.toggleRightPanel"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:","to":"symbol-name:setIsEditingTitle","kind":"calls","metadata":{"unresolvedName":"setIsEditingTitle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:","to":"external:titleInputRef.current.focus","kind":"calls","metadata":{"unresolvedName":"titleInputRef.current.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:","to":"external:titleInputRef.current.select","kind":"calls","metadata":{"unresolvedName":"titleInputRef.current.select"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleStartEdit","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleStartEdit","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleStartEdit","to":"symbol-name:setEditTitle","kind":"calls","metadata":{"unresolvedName":"setEditTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleStartEdit","to":"symbol-name:setIsEditingTitle","kind":"calls","metadata":{"unresolvedName":"setIsEditingTitle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleRename","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleRename","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleRename","to":"external:editTitle.trim","kind":"calls","metadata":{"unresolvedName":"editTitle.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleRename","to":"symbol-name:setIsEditingTitle","kind":"calls","metadata":{"unresolvedName":"setIsEditingTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleRename","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:updateSession","kind":"calls","metadata":{"unresolvedName":"updateSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleRename","to":"external:messageStore.updateSessionMetadata","kind":"calls","metadata":{"unresolvedName":"messageStore.updateSessionMetadata"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleRename","to":"symbol-name:refresh","kind":"calls","metadata":{"unresolvedName":"refresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleRename","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:","to":"external:(request.patterns as string[]).map(p => p.replace(/\\\\n/g, '\\n')).join","kind":"calls","metadata":{"unresolvedName":"(request.patterns as string[]).map(p => p.replace(/\\\\n/g, '\\n')).join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:","to":"external:(request.patterns as string[]).map","kind":"calls","metadata":{"unresolvedName":"(request.patterns as string[]).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:","to":"external:p.replace","kind":"calls","metadata":{"unresolvedName":"p.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:","to":"external:autoApproveStore.addRules","kind":"calls","metadata":{"unresolvedName":"autoApproveStore.addRules"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:","to":"symbol-name:onReply","kind":"calls","metadata":{"unresolvedName":"onReply"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:handleAlways","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:handleAlways","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:handleAlways","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:handleAlways","to":"external:autoApproveStore.addRules","kind":"calls","metadata":{"unresolvedName":"autoApproveStore.addRules"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx:handleAlways","to":"symbol-name:onReply","kind":"calls","metadata":{"unresolvedName":"onReply"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:request.questions.forEach","kind":"calls","metadata":{"unresolvedName":"request.questions.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:setAnswers","kind":"calls","metadata":{"unresolvedName":"setAnswers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:m.set","kind":"calls","metadata":{"unresolvedName":"m.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:setCustomEnabled","kind":"calls","metadata":{"unresolvedName":"setCustomEnabled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:prev.get","kind":"calls","metadata":{"unresolvedName":"prev.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:s.has","kind":"calls","metadata":{"unresolvedName":"s.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:s.delete","kind":"calls","metadata":{"unresolvedName":"s.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:s.add","kind":"calls","metadata":{"unresolvedName":"s.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:setCustomValues","kind":"calls","metadata":{"unresolvedName":"setCustomValues"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:request.questions.map","kind":"calls","metadata":{"unresolvedName":"request.questions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:answers.get","kind":"calls","metadata":{"unresolvedName":"answers.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:customEnabled.get","kind":"calls","metadata":{"unresolvedName":"customEnabled.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:customValues.get(idx)?.trim","kind":"calls","metadata":{"unresolvedName":"customValues.get(idx)?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:customValues.get","kind":"calls","metadata":{"unresolvedName":"customValues.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:onReply","kind":"calls","metadata":{"unresolvedName":"onReply"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:request.questions.every","kind":"calls","metadata":{"unresolvedName":"request.questions.every"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:onReject","kind":"calls","metadata":{"unresolvedName":"onReject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:keybindingStore.getKey","kind":"calls","metadata":{"unresolvedName":"keybindingStore.getKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:matchesKeybinding","kind":"calls","metadata":{"unresolvedName":"matchesKeybinding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:handleSubmit","kind":"calls","metadata":{"unresolvedName":"handleSubmit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:selectOption","kind":"calls","metadata":{"unresolvedName":"selectOption"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:selectCustom","kind":"calls","metadata":{"unresolvedName":"selectCustom"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:toggleOption","kind":"calls","metadata":{"unresolvedName":"toggleOption"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:toggleCustom","kind":"calls","metadata":{"unresolvedName":"toggleCustom"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:updateCustomValue","kind":"calls","metadata":{"unresolvedName":"updateCustomValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:request.questions.forEach","kind":"calls","metadata":{"unresolvedName":"request.questions.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:request.questions.forEach","kind":"calls","metadata":{"unresolvedName":"request.questions.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:request.questions.forEach","kind":"calls","metadata":{"unresolvedName":"request.questions.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:setAnswers","kind":"calls","metadata":{"unresolvedName":"setAnswers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:m.set","kind":"calls","metadata":{"unresolvedName":"m.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:setCustomEnabled","kind":"calls","metadata":{"unresolvedName":"setCustomEnabled"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:m.set","kind":"calls","metadata":{"unresolvedName":"m.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:m.set","kind":"calls","metadata":{"unresolvedName":"m.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:setAnswers","kind":"calls","metadata":{"unresolvedName":"setAnswers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:m.set","kind":"calls","metadata":{"unresolvedName":"m.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:setCustomEnabled","kind":"calls","metadata":{"unresolvedName":"setCustomEnabled"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:m.set","kind":"calls","metadata":{"unresolvedName":"m.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:m.set","kind":"calls","metadata":{"unresolvedName":"m.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:setAnswers","kind":"calls","metadata":{"unresolvedName":"setAnswers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:prev.get","kind":"calls","metadata":{"unresolvedName":"prev.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:s.has","kind":"calls","metadata":{"unresolvedName":"s.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:s.delete","kind":"calls","metadata":{"unresolvedName":"s.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:s.add","kind":"calls","metadata":{"unresolvedName":"s.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:m.set","kind":"calls","metadata":{"unresolvedName":"m.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:prev.get","kind":"calls","metadata":{"unresolvedName":"prev.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:s.has","kind":"calls","metadata":{"unresolvedName":"s.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:s.delete","kind":"calls","metadata":{"unresolvedName":"s.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:s.add","kind":"calls","metadata":{"unresolvedName":"s.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:m.set","kind":"calls","metadata":{"unresolvedName":"m.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:setCustomEnabled","kind":"calls","metadata":{"unresolvedName":"setCustomEnabled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:m.set","kind":"calls","metadata":{"unresolvedName":"m.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:prev.get","kind":"calls","metadata":{"unresolvedName":"prev.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:m.set","kind":"calls","metadata":{"unresolvedName":"m.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:prev.get","kind":"calls","metadata":{"unresolvedName":"prev.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:setCustomValues","kind":"calls","metadata":{"unresolvedName":"setCustomValues"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:m.set","kind":"calls","metadata":{"unresolvedName":"m.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:m.set","kind":"calls","metadata":{"unresolvedName":"m.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:request.questions.map","kind":"calls","metadata":{"unresolvedName":"request.questions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:answers.get","kind":"calls","metadata":{"unresolvedName":"answers.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:customEnabled.get","kind":"calls","metadata":{"unresolvedName":"customEnabled.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:customValues.get(idx)?.trim","kind":"calls","metadata":{"unresolvedName":"customValues.get(idx)?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:customValues.get","kind":"calls","metadata":{"unresolvedName":"customValues.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:onReply","kind":"calls","metadata":{"unresolvedName":"onReply"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:answers.get","kind":"calls","metadata":{"unresolvedName":"answers.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:customEnabled.get","kind":"calls","metadata":{"unresolvedName":"customEnabled.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:customValues.get(idx)?.trim","kind":"calls","metadata":{"unresolvedName":"customValues.get(idx)?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:customValues.get","kind":"calls","metadata":{"unresolvedName":"customValues.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:answers.get","kind":"calls","metadata":{"unresolvedName":"answers.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:customEnabled.get","kind":"calls","metadata":{"unresolvedName":"customEnabled.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:customValues.get(idx)?.trim","kind":"calls","metadata":{"unresolvedName":"customValues.get(idx)?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:customValues.get","kind":"calls","metadata":{"unresolvedName":"customValues.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:onReject","kind":"calls","metadata":{"unresolvedName":"onReject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:keybindingStore.getKey","kind":"calls","metadata":{"unresolvedName":"keybindingStore.getKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:matchesKeybinding","kind":"calls","metadata":{"unresolvedName":"matchesKeybinding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:handleSubmit","kind":"calls","metadata":{"unresolvedName":"handleSubmit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:InlineQuestionItem","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:InlineQuestionItem","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:InlineQuestionItem","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:InlineQuestionItem","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:InlineQuestionItem","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:InlineQuestionItem","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:InlineQuestionItem","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:InlineQuestionItem","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:InlineQuestionItem","to":"external:(question.options || []).map","kind":"calls","metadata":{"unresolvedName":"(question.options || []).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:InlineQuestionItem","to":"external:selected.has","kind":"calls","metadata":{"unresolvedName":"selected.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:InlineQuestionItem","to":"symbol-name:onToggleOption","kind":"calls","metadata":{"unresolvedName":"onToggleOption"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:InlineQuestionItem","to":"symbol-name:onSelectOption","kind":"calls","metadata":{"unresolvedName":"onSelectOption"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:InlineQuestionItem","to":"symbol-name:onToggleCustom","kind":"calls","metadata":{"unresolvedName":"onToggleCustom"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:InlineQuestionItem","to":"symbol-name:onSelectCustom","kind":"calls","metadata":{"unresolvedName":"onSelectCustom"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:InlineQuestionItem","to":"symbol-name:onCustomValueChange","kind":"calls","metadata":{"unresolvedName":"onCustomValueChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:InlineQuestionItem","to":"symbol-name:adjustHeight","kind":"calls","metadata":{"unresolvedName":"adjustHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:InlineQuestionItem","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:InlineQuestionItem","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:selected.has","kind":"calls","metadata":{"unresolvedName":"selected.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:onToggleOption","kind":"calls","metadata":{"unresolvedName":"onToggleOption"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:onSelectOption","kind":"calls","metadata":{"unresolvedName":"onSelectOption"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:onToggleCustom","kind":"calls","metadata":{"unresolvedName":"onToggleCustom"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:onSelectCustom","kind":"calls","metadata":{"unresolvedName":"onSelectCustom"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:onCustomValueChange","kind":"calls","metadata":{"unresolvedName":"onCustomValueChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:adjustHeight","kind":"calls","metadata":{"unresolvedName":"adjustHeight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:onToggleCustom","kind":"calls","metadata":{"unresolvedName":"onToggleCustom"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx:","to":"symbol-name:onSelectCustom","kind":"calls","metadata":{"unresolvedName":"onSelectCustom"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:onPermissionReply","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:onPermissionReply","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:onQuestionReply","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:onQuestionReply","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:onQuestionReject","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:onQuestionReject","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:useInlineToolRequests","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:useInlineToolRequests","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:useInlineToolRequests","to":"symbol-name:useContext","kind":"calls","metadata":{"unresolvedName":"useContext"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:findPermissionRequestForTool","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:findPermissionRequestForTool","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:findPermissionRequestForTool","to":"external:pendingPermissions.find","kind":"calls","metadata":{"unresolvedName":"pendingPermissions.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:findPermissionRequestForTool","to":"external:childSessionStore.isChildOf","kind":"calls","metadata":{"unresolvedName":"childSessionStore.isChildOf"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:findQuestionRequestForTool","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:findQuestionRequestForTool","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:findQuestionRequestForTool","to":"external:pendingQuestions.find","kind":"calls","metadata":{"unresolvedName":"pendingQuestions.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:findQuestionRequestForTool","to":"external:childSessionStore.isChildOf","kind":"calls","metadata":{"unresolvedName":"childSessionStore.isChildOf"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.importActual","kind":"calls","metadata":{"unresolvedName":"vi.importActual"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked(getVcsStatus).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getVcsStatus).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked(getVcsBranches).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getVcsBranches).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked(stageGitPaths).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(stageGitPaths).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked(commitGitChanges).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(commitGitChanges).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked(getVcsStatus).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getVcsStatus).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked(getVcsBranches).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getVcsBranches).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:screen.findByRole","kind":"calls","metadata":{"unresolvedName":"screen.findByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:expect(trigger).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(trigger).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:expect(screen.getByText('main')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('main')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:expect(screen.getByText('1 ahead')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('1 ahead')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:expect(screen.getByText('2 behind')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('2 behind')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked(getVcsStatus).mockRejectedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getVcsStatus).mockRejectedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked(getVcsBranches).mockRejectedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getVcsBranches).mockRejectedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:screen.findByText","kind":"calls","metadata":{"unresolvedName":"screen.findByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked(stageGitPaths).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(stageGitPaths).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked(commitGitChanges).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(commitGitChanges).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:expect(stageGitPaths).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(stageGitPaths).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:screen.getByLabelText","kind":"calls","metadata":{"unresolvedName":"screen.getByLabelText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:expect(commitGitChanges).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(commitGitChanges).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked(getVcsStatus).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getVcsStatus).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked(getVcsBranches).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getVcsBranches).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked(stageGitPaths).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(stageGitPaths).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked(commitGitChanges).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(commitGitChanges).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked(getVcsStatus).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getVcsStatus).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked(getVcsBranches).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getVcsBranches).mockResolvedValue"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:screen.findByRole","kind":"calls","metadata":{"unresolvedName":"screen.findByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:expect(trigger).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(trigger).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:expect(screen.getByText('main')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('main')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:expect(screen.getByText('1 ahead')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('1 ahead')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:expect(screen.getByText('2 behind')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('2 behind')).toBeInTheDocument"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked(getVcsStatus).mockRejectedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getVcsStatus).mockRejectedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked(getVcsBranches).mockRejectedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getVcsBranches).mockRejectedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:screen.findByRole","kind":"calls","metadata":{"unresolvedName":"screen.findByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:expect(trigger).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(trigger).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:screen.findByText","kind":"calls","metadata":{"unresolvedName":"screen.findByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked(stageGitPaths).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(stageGitPaths).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:vi.mocked(commitGitChanges).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(commitGitChanges).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:screen.findByRole","kind":"calls","metadata":{"unresolvedName":"screen.findByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:expect(stageGitPaths).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(stageGitPaths).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:screen.getByLabelText","kind":"calls","metadata":{"unresolvedName":"screen.getByLabelText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:expect(commitGitChanges).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(commitGitChanges).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:expect(stageGitPaths).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(stageGitPaths).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"external:expect(commitGitChanges).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(commitGitChanges).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"external:@primer/octicons-react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/vcs.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:fileStatusLabel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:fileStatusLabel","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:compactBranchName","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:compactBranchName","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:compactBranchName","to":"external:branch.slice","kind":"calls","metadata":{"unresolvedName":"branch.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:countStaged","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:countStaged","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:countStaged","to":"external:files.filter","kind":"calls","metadata":{"unresolvedName":"files.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:countUnstaged","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:countUnstaged","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:countUnstaged","to":"external:files.filter","kind":"calls","metadata":{"unresolvedName":"files.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:countStaged","kind":"calls","metadata":{"unresolvedName":"countStaged"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:countUnstaged","kind":"calls","metadata":{"unresolvedName":"countUnstaged"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"external:branches.find","kind":"calls","metadata":{"unresolvedName":"branches.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:setStatus","kind":"calls","metadata":{"unresolvedName":"setStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:setBranches","kind":"calls","metadata":{"unresolvedName":"setBranches"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"external:Promise.all","kind":"calls","metadata":{"unresolvedName":"Promise.all"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsStatus","kind":"calls","metadata":{"unresolvedName":"getVcsStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsBranches","kind":"calls","metadata":{"unresolvedName":"getVcsBranches"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:refresh","kind":"calls","metadata":{"unresolvedName":"refresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"external:menuRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"menuRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"external:triggerRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"triggerRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:setOpen","kind":"calls","metadata":{"unresolvedName":"setOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"external:triggerRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"triggerRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:setActionLoading","kind":"calls","metadata":{"unresolvedName":"setActionLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","kind":"calls","metadata":{"unresolvedName":"action"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:setCommitMessage","kind":"calls","metadata":{"unresolvedName":"setCommitMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"external:newBranchName.trim","kind":"calls","metadata":{"unresolvedName":"newBranchName.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:runAction","kind":"calls","metadata":{"unresolvedName":"runAction"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:createGitBranch","kind":"calls","metadata":{"unresolvedName":"createGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:setNewBranchName","kind":"calls","metadata":{"unresolvedName":"setNewBranchName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"external:status?.files.map","kind":"calls","metadata":{"unresolvedName":"status?.files.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"external:status?.files.filter(file => file.staged).map","kind":"calls","metadata":{"unresolvedName":"status?.files.filter(file => file.staged).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"external:status?.files.filter","kind":"calls","metadata":{"unresolvedName":"status?.files.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:compactBranchName","kind":"calls","metadata":{"unresolvedName":"compactBranchName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"external:branches.map","kind":"calls","metadata":{"unresolvedName":"branches.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:checkoutGitBranch","kind":"calls","metadata":{"unresolvedName":"checkoutGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"external:commitMessage.trim","kind":"calls","metadata":{"unresolvedName":"commitMessage.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:commitGitChanges","kind":"calls","metadata":{"unresolvedName":"commitGitChanges"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"external:window.confirm","kind":"calls","metadata":{"unresolvedName":"window.confirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:pullGitBranch","kind":"calls","metadata":{"unresolvedName":"pullGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:pushGitBranch","kind":"calls","metadata":{"unresolvedName":"pushGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:stageGitPaths","kind":"calls","metadata":{"unresolvedName":"stageGitPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"symbol-name:unstageGitPaths","kind":"calls","metadata":{"unresolvedName":"unstageGitPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"external:status?.files\n .slice(0, 8)\n .map","kind":"calls","metadata":{"unresolvedName":"status?.files\n .slice(0, 8)\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitComposerControl","to":"external:status?.files\n .slice","kind":"calls","metadata":{"unresolvedName":"status?.files\n .slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"symbol-name:setStatus","kind":"calls","metadata":{"unresolvedName":"setStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"symbol-name:setBranches","kind":"calls","metadata":{"unresolvedName":"setBranches"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"external:Promise.all","kind":"calls","metadata":{"unresolvedName":"Promise.all"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsStatus","kind":"calls","metadata":{"unresolvedName":"getVcsStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsBranches","kind":"calls","metadata":{"unresolvedName":"getVcsBranches"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"symbol-name:refresh","kind":"calls","metadata":{"unresolvedName":"refresh"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"external:menuRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"menuRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"external:triggerRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"triggerRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"symbol-name:setOpen","kind":"calls","metadata":{"unresolvedName":"setOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"external:triggerRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"triggerRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:handlePointerDown","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:handlePointerDown","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:handlePointerDown","to":"external:menuRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"menuRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:handlePointerDown","to":"external:triggerRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"triggerRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:handlePointerDown","to":"symbol-name:setOpen","kind":"calls","metadata":{"unresolvedName":"setOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:handleKeyDown","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:handleKeyDown","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:handleKeyDown","to":"symbol-name:setOpen","kind":"calls","metadata":{"unresolvedName":"setOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:handleKeyDown","to":"external:triggerRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"triggerRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"symbol-name:setActionLoading","kind":"calls","metadata":{"unresolvedName":"setActionLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx:action","kind":"calls","metadata":{"unresolvedName":"action"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"symbol-name:setCommitMessage","kind":"calls","metadata":{"unresolvedName":"setCommitMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"symbol-name:refresh","kind":"calls","metadata":{"unresolvedName":"refresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"symbol-name:setOpen","kind":"calls","metadata":{"unresolvedName":"setOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"external:newBranchName.trim","kind":"calls","metadata":{"unresolvedName":"newBranchName.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"symbol-name:runAction","kind":"calls","metadata":{"unresolvedName":"runAction"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"symbol-name:createGitBranch","kind":"calls","metadata":{"unresolvedName":"createGitBranch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"symbol-name:setNewBranchName","kind":"calls","metadata":{"unresolvedName":"setNewBranchName"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"symbol-name:setOpen","kind":"calls","metadata":{"unresolvedName":"setOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"symbol-name:refresh","kind":"calls","metadata":{"unresolvedName":"refresh"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"external:window.confirm","kind":"calls","metadata":{"unresolvedName":"window.confirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"symbol-name:runAction","kind":"calls","metadata":{"unresolvedName":"runAction"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"symbol-name:pullGitBranch","kind":"calls","metadata":{"unresolvedName":"pullGitBranch"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"external:window.confirm","kind":"calls","metadata":{"unresolvedName":"window.confirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"symbol-name:runAction","kind":"calls","metadata":{"unresolvedName":"runAction"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:","to":"symbol-name:pushGitBranch","kind":"calls","metadata":{"unresolvedName":"pushGitBranch"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:StatusBadge","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:StatusBadge","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitActionButton","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:GitActionButton","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:ChangedFileRow","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:ChangedFileRow","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:ChangedFileRow","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx:fileStatusLabel","kind":"calls","metadata":{"unresolvedName":"fileStatusLabel"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/UndoStatus.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx:PresenceItem","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx:PresenceItem","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx:PresenceItem","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:usePresence","kind":"calls","metadata":{"unresolvedName":"usePresence"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CircularProgress.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/event.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:useFullAutoMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:useFullAutoMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:useFullAutoMode","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:useFullAutoMode","to":"external:autoApproveStore.onFullAutoChange","kind":"calls","metadata":{"unresolvedName":"autoApproveStore.onFullAutoChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:useFullAutoMode","to":"external:autoApproveStore.getPaneFullAutoMode","kind":"calls","metadata":{"unresolvedName":"autoApproveStore.getPaneFullAutoMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useTodos","kind":"calls","metadata":{"unresolvedName":"useTodos"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useTodoStats","kind":"calls","metadata":{"unresolvedName":"useTodoStats"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useCurrentTask","kind":"calls","metadata":{"unresolvedName":"useCurrentTask"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:useFullAutoMode","kind":"calls","metadata":{"unresolvedName":"useFullAutoMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:getSessionTodos(sessionId)\r\n .then","kind":"calls","metadata":{"unresolvedName":"getSessionTodos(sessionId)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionTodos","kind":"calls","metadata":{"unresolvedName":"getSessionTodos"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:todoStore.setTodos","kind":"calls","metadata":{"unresolvedName":"todoStore.setTodos"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:window.clearTimeout","kind":"calls","metadata":{"unresolvedName":"window.clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:clearPanelTimers","kind":"calls","metadata":{"unresolvedName":"clearPanelTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:inputContainer.setAttribute","kind":"calls","metadata":{"unresolvedName":"inputContainer.setAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:inputContainer.contains","kind":"calls","metadata":{"unresolvedName":"inputContainer.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:activeElement.blur","kind":"calls","metadata":{"unresolvedName":"activeElement.blur"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:setPanelState","kind":"calls","metadata":{"unresolvedName":"setPanelState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:inputContainerRef?.current?.removeAttribute","kind":"calls","metadata":{"unresolvedName":"inputContainerRef?.current?.removeAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:closePanel","kind":"calls","metadata":{"unresolvedName":"closePanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:openPanel","kind":"calls","metadata":{"unresolvedName":"openPanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:popoverRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"popoverRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:inputContainerRef?.current?.contains","kind":"calls","metadata":{"unresolvedName":"inputContainerRef?.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:inputContainer?.removeAttribute","kind":"calls","metadata":{"unresolvedName":"inputContainer?.removeAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:autoApproveStore.cyclePaneFullAutoMode","kind":"calls","metadata":{"unresolvedName":"autoApproveStore.cyclePaneFullAutoMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:todos.map","kind":"calls","metadata":{"unresolvedName":"todos.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:getSessionTodos(sessionId)\r\n .then","kind":"calls","metadata":{"unresolvedName":"getSessionTodos(sessionId)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionTodos","kind":"calls","metadata":{"unresolvedName":"getSessionTodos"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:todoStore.setTodos","kind":"calls","metadata":{"unresolvedName":"todoStore.setTodos"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:todoStore.setTodos","kind":"calls","metadata":{"unresolvedName":"todoStore.setTodos"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:window.clearTimeout","kind":"calls","metadata":{"unresolvedName":"window.clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:clearPanelTimers","kind":"calls","metadata":{"unresolvedName":"clearPanelTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:inputContainer.setAttribute","kind":"calls","metadata":{"unresolvedName":"inputContainer.setAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:inputContainer.contains","kind":"calls","metadata":{"unresolvedName":"inputContainer.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:activeElement.blur","kind":"calls","metadata":{"unresolvedName":"activeElement.blur"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:setPanelState","kind":"calls","metadata":{"unresolvedName":"setPanelState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:clearPanelTimers","kind":"calls","metadata":{"unresolvedName":"clearPanelTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:inputContainerRef?.current?.removeAttribute","kind":"calls","metadata":{"unresolvedName":"inputContainerRef?.current?.removeAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:setPanelState","kind":"calls","metadata":{"unresolvedName":"setPanelState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:closePanel","kind":"calls","metadata":{"unresolvedName":"closePanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:openPanel","kind":"calls","metadata":{"unresolvedName":"openPanel"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:popoverRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"popoverRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:inputContainerRef?.current?.contains","kind":"calls","metadata":{"unresolvedName":"inputContainerRef?.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:closePanel","kind":"calls","metadata":{"unresolvedName":"closePanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:handleClick","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:handleClick","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:handleClick","to":"external:popoverRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"popoverRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:handleClick","to":"external:inputContainerRef?.current?.contains","kind":"calls","metadata":{"unresolvedName":"inputContainerRef?.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:handleClick","to":"symbol-name:closePanel","kind":"calls","metadata":{"unresolvedName":"closePanel"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:setPanelState","kind":"calls","metadata":{"unresolvedName":"setPanelState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:setPanelState","kind":"calls","metadata":{"unresolvedName":"setPanelState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:setPanelState","kind":"calls","metadata":{"unresolvedName":"setPanelState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:window.clearTimeout","kind":"calls","metadata":{"unresolvedName":"window.clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:setPanelState","kind":"calls","metadata":{"unresolvedName":"setPanelState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:window.clearTimeout","kind":"calls","metadata":{"unresolvedName":"window.clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:clearPanelTimers","kind":"calls","metadata":{"unresolvedName":"clearPanelTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:inputContainer?.removeAttribute","kind":"calls","metadata":{"unresolvedName":"inputContainer?.removeAttribute"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:clearPanelTimers","kind":"calls","metadata":{"unresolvedName":"clearPanelTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:inputContainer?.removeAttribute","kind":"calls","metadata":{"unresolvedName":"inputContainer?.removeAttribute"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:TodoSwapPanel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:TodoSwapPanel","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:TodoSwapPanel","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:TodoSwapPanel","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:TodoSwapPanel","to":"symbol-name:useLayoutEffect","kind":"calls","metadata":{"unresolvedName":"useLayoutEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:TodoSwapPanel","to":"external:container.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"container.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:TodoSwapPanel","to":"external:footer.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"footer.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:TodoSwapPanel","to":"symbol-name:setStyle","kind":"calls","metadata":{"unresolvedName":"setStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:TodoSwapPanel","to":"symbol-name:update","kind":"calls","metadata":{"unresolvedName":"update"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:TodoSwapPanel","to":"external:observer.observe","kind":"calls","metadata":{"unresolvedName":"observer.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:TodoSwapPanel","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:TodoSwapPanel","to":"external:observer.disconnect","kind":"calls","metadata":{"unresolvedName":"observer.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:TodoSwapPanel","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:container.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"container.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:footer.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"footer.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:setStyle","kind":"calls","metadata":{"unresolvedName":"setStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"symbol-name:update","kind":"calls","metadata":{"unresolvedName":"update"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:observer.observe","kind":"calls","metadata":{"unresolvedName":"observer.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:observer.disconnect","kind":"calls","metadata":{"unresolvedName":"observer.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:update","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:update","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:update","to":"external:container.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"container.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:update","to":"external:footer.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"footer.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:update","to":"symbol-name:setStyle","kind":"calls","metadata":{"unresolvedName":"setStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:observer.disconnect","kind":"calls","metadata":{"unresolvedName":"observer.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:MiniProgress","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:MiniProgress","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:extToMime","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:extToMime","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:MenuItem","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:MenuItem","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:useIsMobileMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useIsMobileMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:isTauriMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"isTauriMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:isTauriMobileMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"isTauriMobileMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:openMock.mockReset","kind":"calls","metadata":{"unresolvedName":"openMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:readFileMock.mockReset","kind":"calls","metadata":{"unresolvedName":"readFileMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(inputClickSpy).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(inputClickSpy).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:container.querySelector","kind":"calls","metadata":{"unresolvedName":"container.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(onFilesSelected).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onFilesSelected).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:inputClickSpy.mockRestore","kind":"calls","metadata":{"unresolvedName":"inputClickSpy.mockRestore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:openMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"openMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:readFileMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"readFileMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(openMock).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(openMock).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(readFileMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(readFileMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(onFilesSelected).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(onFilesSelected).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(files).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(files).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(files[0].name).toBe","kind":"calls","metadata":{"unresolvedName":"expect(files[0].name).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(files[0].type).toBe","kind":"calls","metadata":{"unresolvedName":"expect(files[0].type).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:screen.getByTitle","kind":"calls","metadata":{"unresolvedName":"screen.getByTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(trigger).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(trigger).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(screen.getByRole('menuitemradio', { name: 'Build' })).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('menuitemradio', { name: 'Build' })).toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:screen.getAllByRole","kind":"calls","metadata":{"unresolvedName":"screen.getAllByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(buttons.indexOf(voiceButton)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(buttons.indexOf(voiceButton)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:buttons.indexOf","kind":"calls","metadata":{"unresolvedName":"buttons.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(onVoiceTranscription).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onVoiceTranscription).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:screen.findByRole","kind":"calls","metadata":{"unresolvedName":"screen.findByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:fireEvent.keyDown","kind":"calls","metadata":{"unresolvedName":"fireEvent.keyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(screen.getByRole('button', { name: 'Send message' })).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Send message' })).toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(screen.getByRole('textbox', { name: 'Chat input' })).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('textbox', { name: 'Chat input' })).toHaveFocus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:useIsMobileMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useIsMobileMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:isTauriMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"isTauriMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:isTauriMobileMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"isTauriMobileMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:openMock.mockReset","kind":"calls","metadata":{"unresolvedName":"openMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:readFileMock.mockReset","kind":"calls","metadata":{"unresolvedName":"readFileMock.mockReset"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:useIsMobileMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useIsMobileMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:isTauriMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"isTauriMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:isTauriMobileMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"isTauriMobileMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(inputClickSpy).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(inputClickSpy).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:container.querySelector","kind":"calls","metadata":{"unresolvedName":"container.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(onFilesSelected).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onFilesSelected).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:inputClickSpy.mockRestore","kind":"calls","metadata":{"unresolvedName":"inputClickSpy.mockRestore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:isTauriMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"isTauriMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:isTauriMobileMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"isTauriMobileMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:openMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"openMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:readFileMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"readFileMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(openMock).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(openMock).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(readFileMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(readFileMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(onFilesSelected).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(onFilesSelected).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(files).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(files).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(files[0].name).toBe","kind":"calls","metadata":{"unresolvedName":"expect(files[0].name).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(files[0].type).toBe","kind":"calls","metadata":{"unresolvedName":"expect(files[0].type).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(openMock).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(openMock).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(readFileMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(readFileMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(onFilesSelected).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(onFilesSelected).toHaveBeenCalledTimes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:screen.getByTitle","kind":"calls","metadata":{"unresolvedName":"screen.getByTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(trigger).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(trigger).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(screen.getByRole('menuitemradio', { name: 'Build' })).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('menuitemradio', { name: 'Build' })).toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(trigger).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(trigger).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(screen.getByRole('menuitemradio', { name: 'Build' })).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('menuitemradio', { name: 'Build' })).toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:screen.getAllByRole","kind":"calls","metadata":{"unresolvedName":"screen.getAllByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(buttons.indexOf(voiceButton)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(buttons.indexOf(voiceButton)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:buttons.indexOf","kind":"calls","metadata":{"unresolvedName":"buttons.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(onVoiceTranscription).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onVoiceTranscription).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:screen.getByTitle","kind":"calls","metadata":{"unresolvedName":"screen.getByTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:screen.findByRole","kind":"calls","metadata":{"unresolvedName":"screen.findByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:fireEvent.keyDown","kind":"calls","metadata":{"unresolvedName":"fireEvent.keyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(trigger).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(trigger).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(screen.getByRole('button', { name: 'Send message' })).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Send message' })).toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(trigger).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(trigger).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(screen.getByRole('button', { name: 'Send message' })).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: 'Send message' })).toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:screen.getByTitle","kind":"calls","metadata":{"unresolvedName":"screen.getByTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"external:expect(screen.getByRole('textbox', { name: 'Chat input' })).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('textbox', { name: 'Chat input' })).toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:ToolbarHarness","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:ToolbarHarness","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:ToolbarHarness","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.test.tsx:ToolbarHarness","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/GitComposerControl.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/stt.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewport","kind":"calls","metadata":{"unresolvedName":"useChatViewport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauriMobile","kind":"calls","metadata":{"unresolvedName":"isTauriMobile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:accept.push","kind":"calls","metadata":{"unresolvedName":"accept.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:extensions.push","kind":"calls","metadata":{"unresolvedName":"extensions.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:filterNames.push","kind":"calls","metadata":{"unresolvedName":"filterNames.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:accept.join","kind":"calls","metadata":{"unresolvedName":"accept.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:filterNames.join","kind":"calls","metadata":{"unresolvedName":"filterNames.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:inputContainerRef?.current?.querySelector","kind":"calls","metadata":{"unresolvedName":"inputContainerRef?.current?.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:input?.focus","kind":"calls","metadata":{"unresolvedName":"input?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:close","kind":"calls","metadata":{"unresolvedName":"close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:menu.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"menu.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:menu.querySelector","kind":"calls","metadata":{"unresolvedName":"menu.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:target?.focus","kind":"calls","metadata":{"unresolvedName":"target?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:document.body.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"document.body.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:element.closest","kind":"calls","metadata":{"unresolvedName":"element.closest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:window.getComputedStyle","kind":"calls","metadata":{"unresolvedName":"window.getComputedStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:focusables.findIndex","kind":"calls","metadata":{"unresolvedName":"focusables.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:focusables[nextIndex]?.focus","kind":"calls","metadata":{"unresolvedName":"focusables[nextIndex]?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:menu?.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"menu?.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:trigger?.focus","kind":"calls","metadata":{"unresolvedName":"trigger?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:items.findIndex","kind":"calls","metadata":{"unresolvedName":"items.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:items[index]?.focus","kind":"calls","metadata":{"unresolvedName":"items[index]?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:focusByIndex","kind":"calls","metadata":{"unresolvedName":"focusByIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:focusRelativeToTrigger","kind":"calls","metadata":{"unresolvedName":"focusRelativeToTrigger"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:fileInputRef.current?.click","kind":"calls","metadata":{"unresolvedName":"fileInputRef.current?.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:Promise.all","kind":"calls","metadata":{"unresolvedName":"Promise.all"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:open","kind":"calls","metadata":{"unresolvedName":"open"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:path.split(/[\\\\/]/).pop","kind":"calls","metadata":{"unresolvedName":"path.split(/[\\\\/]/).pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:path.split","kind":"calls","metadata":{"unresolvedName":"path.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:fileName.split('.').pop()?.toLowerCase","kind":"calls","metadata":{"unresolvedName":"fileName.split('.').pop()?.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:fileName.split('.').pop","kind":"calls","metadata":{"unresolvedName":"fileName.split('.').pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:fileName.split","kind":"calls","metadata":{"unresolvedName":"fileName.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:extToMime","kind":"calls","metadata":{"unresolvedName":"extToMime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:readFile","kind":"calls","metadata":{"unresolvedName":"readFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:files.push","kind":"calls","metadata":{"unresolvedName":"files.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:onFilesSelected","kind":"calls","metadata":{"unresolvedName":"onFilesSelected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:agentMenuRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"agentMenuRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:agentTriggerRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"agentTriggerRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:setAgentMenuOpen","kind":"calls","metadata":{"unresolvedName":"setAgentMenuOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:isFocusableElement","kind":"calls","metadata":{"unresolvedName":"isFocusableElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:agentTriggerRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"agentTriggerRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:variantMenuRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"variantMenuRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:variantTriggerRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"variantTriggerRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:setVariantMenuOpen","kind":"calls","metadata":{"unresolvedName":"setVariantMenuOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:variantTriggerRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"variantTriggerRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:focusMenuItem","kind":"calls","metadata":{"unresolvedName":"focusMenuItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:agents.filter","kind":"calls","metadata":{"unresolvedName":"agents.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:agents.find","kind":"calls","metadata":{"unresolvedName":"agents.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:handleMenuKeyDown","kind":"calls","metadata":{"unresolvedName":"handleMenuKeyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:selectableAgents.map","kind":"calls","metadata":{"unresolvedName":"selectableAgents.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:agent.name.charAt(0).toUpperCase","kind":"calls","metadata":{"unresolvedName":"agent.name.charAt(0).toUpperCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:agent.name.charAt","kind":"calls","metadata":{"unresolvedName":"agent.name.charAt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:agent.name.slice","kind":"calls","metadata":{"unresolvedName":"agent.name.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:onAgentChange","kind":"calls","metadata":{"unresolvedName":"onAgentChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:closeMenuToComposer","kind":"calls","metadata":{"unresolvedName":"closeMenuToComposer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:selectedVariant.charAt(0).toUpperCase","kind":"calls","metadata":{"unresolvedName":"selectedVariant.charAt(0).toUpperCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:selectedVariant.charAt","kind":"calls","metadata":{"unresolvedName":"selectedVariant.charAt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:selectedVariant.slice","kind":"calls","metadata":{"unresolvedName":"selectedVariant.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"symbol-name:onVariantChange","kind":"calls","metadata":{"unresolvedName":"onVariantChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:variants.map","kind":"calls","metadata":{"unresolvedName":"variants.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:variant.charAt(0).toUpperCase","kind":"calls","metadata":{"unresolvedName":"variant.charAt(0).toUpperCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:variant.charAt","kind":"calls","metadata":{"unresolvedName":"variant.charAt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:InputToolbar","to":"external:variant.slice","kind":"calls","metadata":{"unresolvedName":"variant.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:accept.push","kind":"calls","metadata":{"unresolvedName":"accept.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:extensions.push","kind":"calls","metadata":{"unresolvedName":"extensions.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:filterNames.push","kind":"calls","metadata":{"unresolvedName":"filterNames.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:accept.join","kind":"calls","metadata":{"unresolvedName":"accept.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:filterNames.join","kind":"calls","metadata":{"unresolvedName":"filterNames.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:inputContainerRef?.current?.querySelector","kind":"calls","metadata":{"unresolvedName":"inputContainerRef?.current?.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:input?.focus","kind":"calls","metadata":{"unresolvedName":"input?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:close","kind":"calls","metadata":{"unresolvedName":"close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:menu.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"menu.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:menu.querySelector","kind":"calls","metadata":{"unresolvedName":"menu.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:target?.focus","kind":"calls","metadata":{"unresolvedName":"target?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:document.body.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"document.body.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:element.closest","kind":"calls","metadata":{"unresolvedName":"element.closest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:window.getComputedStyle","kind":"calls","metadata":{"unresolvedName":"window.getComputedStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:focusables.findIndex","kind":"calls","metadata":{"unresolvedName":"focusables.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:focusables[nextIndex]?.focus","kind":"calls","metadata":{"unresolvedName":"focusables[nextIndex]?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:element.closest","kind":"calls","metadata":{"unresolvedName":"element.closest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:window.getComputedStyle","kind":"calls","metadata":{"unresolvedName":"window.getComputedStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:element.closest","kind":"calls","metadata":{"unresolvedName":"element.closest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:window.getComputedStyle","kind":"calls","metadata":{"unresolvedName":"window.getComputedStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:menu?.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"menu?.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:trigger?.focus","kind":"calls","metadata":{"unresolvedName":"trigger?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:items.findIndex","kind":"calls","metadata":{"unresolvedName":"items.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:items[index]?.focus","kind":"calls","metadata":{"unresolvedName":"items[index]?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/SessionChangesPanel.tsx:focusByIndex","kind":"calls","metadata":{"unresolvedName":"focusByIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:focusRelativeToTrigger","kind":"calls","metadata":{"unresolvedName":"focusRelativeToTrigger"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:focusRelativeToTrigger","kind":"calls","metadata":{"unresolvedName":"focusRelativeToTrigger"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:fileInputRef.current?.click","kind":"calls","metadata":{"unresolvedName":"fileInputRef.current?.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:Promise.all","kind":"calls","metadata":{"unresolvedName":"Promise.all"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:open","kind":"calls","metadata":{"unresolvedName":"open"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:path.split(/[\\\\/]/).pop","kind":"calls","metadata":{"unresolvedName":"path.split(/[\\\\/]/).pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:path.split","kind":"calls","metadata":{"unresolvedName":"path.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:fileName.split('.').pop()?.toLowerCase","kind":"calls","metadata":{"unresolvedName":"fileName.split('.').pop()?.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:fileName.split('.').pop","kind":"calls","metadata":{"unresolvedName":"fileName.split('.').pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:fileName.split","kind":"calls","metadata":{"unresolvedName":"fileName.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:extToMime","kind":"calls","metadata":{"unresolvedName":"extToMime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:readFile","kind":"calls","metadata":{"unresolvedName":"readFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:files.push","kind":"calls","metadata":{"unresolvedName":"files.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:onFilesSelected","kind":"calls","metadata":{"unresolvedName":"onFilesSelected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:agentMenuRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"agentMenuRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:agentTriggerRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"agentTriggerRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:setAgentMenuOpen","kind":"calls","metadata":{"unresolvedName":"setAgentMenuOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:isFocusableElement","kind":"calls","metadata":{"unresolvedName":"isFocusableElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:agentTriggerRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"agentTriggerRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:variantMenuRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"variantMenuRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:variantTriggerRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"variantTriggerRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:setVariantMenuOpen","kind":"calls","metadata":{"unresolvedName":"setVariantMenuOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:variantTriggerRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"variantTriggerRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:handleClickOutside","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:handleClickOutside","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:handleClickOutside","to":"external:agentMenuRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"agentMenuRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:handleClickOutside","to":"external:agentTriggerRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"agentTriggerRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:handleClickOutside","to":"symbol-name:setAgentMenuOpen","kind":"calls","metadata":{"unresolvedName":"setAgentMenuOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:handleClickOutside","to":"symbol-name:isFocusableElement","kind":"calls","metadata":{"unresolvedName":"isFocusableElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:handleClickOutside","to":"external:agentTriggerRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"agentTriggerRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:handleClickOutside","to":"external:variantMenuRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"variantMenuRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:handleClickOutside","to":"external:variantTriggerRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"variantTriggerRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:handleClickOutside","to":"symbol-name:setVariantMenuOpen","kind":"calls","metadata":{"unresolvedName":"setVariantMenuOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:handleClickOutside","to":"external:variantTriggerRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"variantTriggerRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:focusMenuItem","kind":"calls","metadata":{"unresolvedName":"focusMenuItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:focusMenuItem","kind":"calls","metadata":{"unresolvedName":"focusMenuItem"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:focusMenuItem","kind":"calls","metadata":{"unresolvedName":"focusMenuItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:focusMenuItem","kind":"calls","metadata":{"unresolvedName":"focusMenuItem"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:setAgentMenuOpen","kind":"calls","metadata":{"unresolvedName":"setAgentMenuOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:setAgentMenuOpen","kind":"calls","metadata":{"unresolvedName":"setAgentMenuOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:onAgentChange","kind":"calls","metadata":{"unresolvedName":"onAgentChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:closeMenuToComposer","kind":"calls","metadata":{"unresolvedName":"closeMenuToComposer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:setAgentMenuOpen","kind":"calls","metadata":{"unresolvedName":"setAgentMenuOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:setVariantMenuOpen","kind":"calls","metadata":{"unresolvedName":"setVariantMenuOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:setVariantMenuOpen","kind":"calls","metadata":{"unresolvedName":"setVariantMenuOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:onVariantChange","kind":"calls","metadata":{"unresolvedName":"onVariantChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:closeMenuToComposer","kind":"calls","metadata":{"unresolvedName":"closeMenuToComposer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:setVariantMenuOpen","kind":"calls","metadata":{"unresolvedName":"setVariantMenuOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:onVariantChange","kind":"calls","metadata":{"unresolvedName":"onVariantChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:closeMenuToComposer","kind":"calls","metadata":{"unresolvedName":"closeMenuToComposer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:setVariantMenuOpen","kind":"calls","metadata":{"unresolvedName":"setVariantMenuOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"symbol-name:onFilesSelected","kind":"calls","metadata":{"unresolvedName":"onFilesSelected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:detectSlashTrigger","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:detectSlashTrigger","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:detectSlashTrigger","to":"external:text.startsWith","kind":"calls","metadata":{"unresolvedName":"text.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:detectSlashTrigger","to":"external:text.slice","kind":"calls","metadata":{"unresolvedName":"text.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:detectSlashTrigger","to":"external:query.includes","kind":"calls","metadata":{"unresolvedName":"query.includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:isFileSupported","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:isFileSupported","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:isFileSupported","to":"external:mime.startsWith","kind":"calls","metadata":{"unresolvedName":"mime.startsWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:ensureFileMime","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:ensureFileMime","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:ensureFileMime","to":"external:file.name.split('.').pop()?.toLowerCase","kind":"calls","metadata":{"unresolvedName":"file.name.split('.').pop()?.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:ensureFileMime","to":"external:file.name.split('.').pop","kind":"calls","metadata":{"unresolvedName":"file.name.split('.').pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:ensureFileMime","to":"external:file.name.split","kind":"calls","metadata":{"unresolvedName":"file.name.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:ensureFileMime","to":"symbol-name:extToMime","kind":"calls","metadata":{"unresolvedName":"extToMime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:readFileAsDataUrl","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:readFileAsDataUrl","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:readFileAsDataUrl","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:readFileAsDataUrl","to":"external:reader.readAsDataURL","kind":"calls","metadata":{"unresolvedName":"reader.readAsDataURL"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:","to":"external:reader.readAsDataURL","kind":"calls","metadata":{"unresolvedName":"reader.readAsDataURL"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/UndoStatus.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/UndoStatus.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/UndoStatus.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/UndoStatus.tsx:UndoStatus","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/UndoStatus.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/UndoStatus.tsx:UndoStatus","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/UndoStatus.tsx:UndoStatus","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/UndoStatus.tsx:UndoStatus","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","to":"symbol-name:setOverflowing","kind":"calls","metadata":{"unresolvedName":"setOverflowing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","to":"symbol-name:setShowLeftFade","kind":"calls","metadata":{"unresolvedName":"setShowLeftFade"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","to":"symbol-name:setShowRightFade","kind":"calls","metadata":{"unresolvedName":"setShowRightFade"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","to":"symbol-name:syncState","kind":"calls","metadata":{"unresolvedName":"syncState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","to":"symbol-name:resetState","kind":"calls","metadata":{"unresolvedName":"resetState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","to":"external:el.scrollTo","kind":"calls","metadata":{"unresolvedName":"el.scrollTo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","to":"external:ro.observe","kind":"calls","metadata":{"unresolvedName":"ro.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"symbol-name:setOverflowing","kind":"calls","metadata":{"unresolvedName":"setOverflowing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"symbol-name:setShowLeftFade","kind":"calls","metadata":{"unresolvedName":"setShowLeftFade"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"symbol-name:setShowRightFade","kind":"calls","metadata":{"unresolvedName":"setShowRightFade"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"symbol-name:setOverflowing","kind":"calls","metadata":{"unresolvedName":"setOverflowing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"symbol-name:setShowLeftFade","kind":"calls","metadata":{"unresolvedName":"setShowLeftFade"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"symbol-name:setShowRightFade","kind":"calls","metadata":{"unresolvedName":"setShowRightFade"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"symbol-name:syncState","kind":"calls","metadata":{"unresolvedName":"syncState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"symbol-name:resetState","kind":"calls","metadata":{"unresolvedName":"resetState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"external:el.scrollTo","kind":"calls","metadata":{"unresolvedName":"el.scrollTo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"symbol-name:syncState","kind":"calls","metadata":{"unresolvedName":"syncState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"external:ro.observe","kind":"calls","metadata":{"unresolvedName":"ro.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"external:el.scrollTo","kind":"calls","metadata":{"unresolvedName":"el.scrollTo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"symbol-name:syncState","kind":"calls","metadata":{"unresolvedName":"syncState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessages","kind":"calls","metadata":{"unresolvedName":"useMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","to":"external:getMessageText(msg).trim","kind":"calls","metadata":{"unresolvedName":"getMessageText(msg).trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","to":"symbol-name:getMessageText","kind":"calls","metadata":{"unresolvedName":"getMessageText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","to":"external:seen.has","kind":"calls","metadata":{"unresolvedName":"seen.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","to":"external:seen.add","kind":"calls","metadata":{"unresolvedName":"seen.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","to":"external:atts.push","kind":"calls","metadata":{"unresolvedName":"atts.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","to":"external:crypto.randomUUID","kind":"calls","metadata":{"unresolvedName":"crypto.randomUUID"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","to":"external:entries.push","kind":"calls","metadata":{"unresolvedName":"entries.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","to":"external:attachments.every","kind":"calls","metadata":{"unresolvedName":"attachments.every"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","to":"external:text.trim","kind":"calls","metadata":{"unresolvedName":"text.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:isHistoryUnmodified","kind":"calls","metadata":{"unresolvedName":"isHistoryUnmodified"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:canNavigateHistoryAtCursor","kind":"calls","metadata":{"unresolvedName":"canNavigateHistoryAtCursor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","to":"external:getMessageText(msg).trim","kind":"calls","metadata":{"unresolvedName":"getMessageText(msg).trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","to":"symbol-name:getMessageText","kind":"calls","metadata":{"unresolvedName":"getMessageText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","to":"external:seen.has","kind":"calls","metadata":{"unresolvedName":"seen.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","to":"external:seen.add","kind":"calls","metadata":{"unresolvedName":"seen.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","to":"external:atts.push","kind":"calls","metadata":{"unresolvedName":"atts.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","to":"external:crypto.randomUUID","kind":"calls","metadata":{"unresolvedName":"crypto.randomUUID"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","to":"external:entries.push","kind":"calls","metadata":{"unresolvedName":"entries.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","to":"external:attachments.every","kind":"calls","metadata":{"unresolvedName":"attachments.every"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","to":"external:text.trim","kind":"calls","metadata":{"unresolvedName":"text.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:isHistoryUnmodified","kind":"calls","metadata":{"unresolvedName":"isHistoryUnmodified"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:canNavigateHistoryAtCursor","kind":"calls","metadata":{"unresolvedName":"canNavigateHistoryAtCursor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:canNavigateHistoryAtCursor","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:canNavigateHistoryAtCursor","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:isHistoryUnmodified","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:isHistoryUnmodified","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:isHistoryUnmodified","to":"external:attachments.every","kind":"calls","metadata":{"unresolvedName":"attachments.every"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","to":"external:inputContainerRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"inputContainerRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","to":"external:contentWrapRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"contentWrapRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","to":"external:footerRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"footerRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","to":"symbol-name:setIsFocused","kind":"calls","metadata":{"unresolvedName":"setIsFocused"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","to":"external:textareaRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","to":"symbol-name:isInsideInputArea","kind":"calls","metadata":{"unresolvedName":"isInsideInputArea"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","to":"symbol-name:setExpandedHeight","kind":"calls","metadata":{"unresolvedName":"setExpandedHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","to":"external:ro.observe","kind":"calls","metadata":{"unresolvedName":"ro.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","to":"symbol-name:registerInputBox","kind":"calls","metadata":{"unresolvedName":"registerInputBox"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"external:inputContainerRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"inputContainerRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"external:contentWrapRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"contentWrapRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"external:footerRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"footerRef.current?.contains"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"symbol-name:setIsFocused","kind":"calls","metadata":{"unresolvedName":"setIsFocused"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"external:textareaRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"external:textareaRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"symbol-name:isInsideInputArea","kind":"calls","metadata":{"unresolvedName":"isInsideInputArea"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"symbol-name:setIsFocused","kind":"calls","metadata":{"unresolvedName":"setIsFocused"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"symbol-name:isInsideInputArea","kind":"calls","metadata":{"unresolvedName":"isInsideInputArea"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"symbol-name:setIsFocused","kind":"calls","metadata":{"unresolvedName":"setIsFocused"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"symbol-name:isInsideInputArea","kind":"calls","metadata":{"unresolvedName":"isInsideInputArea"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"symbol-name:setIsFocused","kind":"calls","metadata":{"unresolvedName":"setIsFocused"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:handleOutsidePointerDown","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:handleOutsidePointerDown","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:handleOutsidePointerDown","to":"symbol-name:isInsideInputArea","kind":"calls","metadata":{"unresolvedName":"isInsideInputArea"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:handleOutsidePointerDown","to":"symbol-name:setIsFocused","kind":"calls","metadata":{"unresolvedName":"setIsFocused"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"symbol-name:setExpandedHeight","kind":"calls","metadata":{"unresolvedName":"setExpandedHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"external:ro.observe","kind":"calls","metadata":{"unresolvedName":"ro.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"symbol-name:setExpandedHeight","kind":"calls","metadata":{"unresolvedName":"setExpandedHeight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:","to":"symbol-name:registerInputBox","kind":"calls","metadata":{"unresolvedName":"registerInputBox"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:vi.mocked(useVoiceTranscription).mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(useVoiceTranscription).mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:expect(startRecording).toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(startRecording).toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:expect(resetError).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(resetError).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:expect(stopRecording).toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(stopRecording).toHaveBeenCalled"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:vi.mocked(useVoiceTranscription).mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(useVoiceTranscription).mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:expect(startRecording).toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(startRecording).toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:vi.mocked(useVoiceTranscription).mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(useVoiceTranscription).mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:expect(startRecording).toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(startRecording).toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:expect(resetError).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(resetError).not.toHaveBeenCalled"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:vi.mocked(useVoiceTranscription).mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(useVoiceTranscription).mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"external:expect(stopRecording).toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(stopRecording).toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/stt.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.tsx:VoiceInputButton","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.tsx:VoiceInputButton","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/VoiceInputButton.tsx:VoiceInputButton","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","kind":"calls","metadata":{"unresolvedName":"useVoiceTranscription"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:createHistoryMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:createHistoryMessage","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:useImperativeHandle","kind":"calls","metadata":{"unresolvedName":"useImperativeHandle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:slashCommands.map","kind":"calls","metadata":{"unresolvedName":"slashCommands.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:moveUp","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:moveUp","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:moveDown","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:moveDown","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:selectCurrent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:selectCurrent","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:selectCurrent","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(onCommand).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onCommand).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(onCommand).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(onCommand).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:vi.fn().mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.fn().mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(onSend).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onSend).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:resolveSend","kind":"calls","metadata":{"unresolvedName":"resolveSend"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.keyDown","kind":"calls","metadata":{"unresolvedName":"fireEvent.keyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea).not.toBeDisabled","kind":"calls","metadata":{"unresolvedName":"expect(textarea).not.toBeDisabled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:resolveCommand","kind":"calls","metadata":{"unresolvedName":"resolveCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:vi.fn().mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.fn().mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.compositionStart","kind":"calls","metadata":{"unresolvedName":"fireEvent.compositionStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.compositionEnd","kind":"calls","metadata":{"unresolvedName":"fireEvent.compositionEnd"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(onSend).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(onSend).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:createHistoryMessage","kind":"calls","metadata":{"unresolvedName":"createHistoryMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.selectionStart).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.selectionStart).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.selectionEnd).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.selectionEnd).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(onCommand).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onCommand).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(onCommand).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onCommand).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(onCommand).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(onCommand).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(onCommand).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(onCommand).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:vi.fn().mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.fn().mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(onSend).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onSend).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(onSend).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onSend).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:resolveSend","kind":"calls","metadata":{"unresolvedName":"resolveSend"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:resolveSend","kind":"calls","metadata":{"unresolvedName":"resolveSend"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.keyDown","kind":"calls","metadata":{"unresolvedName":"fireEvent.keyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(onCommand).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onCommand).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea).not.toBeDisabled","kind":"calls","metadata":{"unresolvedName":"expect(textarea).not.toBeDisabled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:resolveCommand","kind":"calls","metadata":{"unresolvedName":"resolveCommand"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:resolveCommand","kind":"calls","metadata":{"unresolvedName":"resolveCommand"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:resolveCommand","kind":"calls","metadata":{"unresolvedName":"resolveCommand"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:resolveCommand","kind":"calls","metadata":{"unresolvedName":"resolveCommand"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:vi.fn().mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.fn().mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.compositionStart","kind":"calls","metadata":{"unresolvedName":"fireEvent.compositionStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.compositionEnd","kind":"calls","metadata":{"unresolvedName":"fireEvent.compositionEnd"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.keyDown","kind":"calls","metadata":{"unresolvedName":"fireEvent.keyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(onSend).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(onSend).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(onSend).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onSend).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(onSend).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onSend).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.keyDown","kind":"calls","metadata":{"unresolvedName":"fireEvent.keyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(onSend).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(onSend).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:createHistoryMessage","kind":"calls","metadata":{"unresolvedName":"createHistoryMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.keyDown","kind":"calls","metadata":{"unresolvedName":"fireEvent.keyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.selectionStart).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.selectionStart).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.selectionEnd).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.selectionEnd).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.selectionStart).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.selectionStart).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.selectionEnd).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.selectionEnd).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.selectionStart).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.selectionStart).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.selectionEnd).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.selectionEnd).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:createHistoryMessage","kind":"calls","metadata":{"unresolvedName":"createHistoryMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:fireEvent.keyDown","kind":"calls","metadata":{"unresolvedName":"fireEvent.keyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.selectionStart).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.selectionStart).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.selectionEnd).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.selectionEnd).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.selectionStart).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.selectionStart).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.value).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.value).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.selectionStart).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.selectionStart).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.test.tsx:","to":"external:expect(textarea.selectionEnd).toBe","kind":"calls","metadata":{"unresolvedName":"expect(textarea.selectionEnd).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputToolbar.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputFooter.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/InputActions.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/stt.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewport","kind":"calls","metadata":{"unresolvedName":"useChatViewport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useAttachmentRail.ts:useAttachmentRail","kind":"calls","metadata":{"unresolvedName":"useAttachmentRail"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useInputHistory.ts:useInputHistory","kind":"calls","metadata":{"unresolvedName":"useInputHistory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:text.trim","kind":"calls","metadata":{"unresolvedName":"text.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/useMobileCollapse.ts:useMobileCollapse","kind":"calls","metadata":{"unresolvedName":"useMobileCollapse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:setText","kind":"calls","metadata":{"unresolvedName":"setText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:setAttachments","kind":"calls","metadata":{"unresolvedName":"setAttachments"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:textareaRef.current.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.setSelectionRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:resetHistoryIndex","kind":"calls","metadata":{"unresolvedName":"resetHistoryIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:resetDraft","kind":"calls","metadata":{"unresolvedName":"resetDraft"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:onCommand","kind":"calls","metadata":{"unresolvedName":"onCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:onClearRevert","kind":"calls","metadata":{"unresolvedName":"onClearRevert"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:restoreDraft","kind":"calls","metadata":{"unresolvedName":"restoreDraft"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:setIsSubmitting","kind":"calls","metadata":{"unresolvedName":"setIsSubmitting"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:submit","kind":"calls","metadata":{"unresolvedName":"submit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:onFailure","kind":"calls","metadata":{"unresolvedName":"onFailure"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:onSuccess","kind":"calls","metadata":{"unresolvedName":"onSuccess"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:attachments.find","kind":"calls","metadata":{"unresolvedName":"attachments.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:text.slice(textRange.end).trim","kind":"calls","metadata":{"unresolvedName":"text.slice(textRange.end).trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:text.slice","kind":"calls","metadata":{"unresolvedName":"text.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:submitCommandOptimistically","kind":"calls","metadata":{"unresolvedName":"submitCommandOptimistically"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:runSubmit","kind":"calls","metadata":{"unresolvedName":"runSubmit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:onSend","kind":"calls","metadata":{"unresolvedName":"onSend"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:setMentionQuery","kind":"calls","metadata":{"unresolvedName":"setMentionQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:slashMenuRef.current.moveUp","kind":"calls","metadata":{"unresolvedName":"slashMenuRef.current.moveUp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:slashMenuRef.current.moveDown","kind":"calls","metadata":{"unresolvedName":"slashMenuRef.current.moveDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:slashMenuRef.current.selectCurrent","kind":"calls","metadata":{"unresolvedName":"slashMenuRef.current.selectCurrent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:setSlashOpen","kind":"calls","metadata":{"unresolvedName":"setSlashOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:mentionMenuRef.current.moveUp","kind":"calls","metadata":{"unresolvedName":"mentionMenuRef.current.moveUp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:mentionMenuRef.current.moveDown","kind":"calls","metadata":{"unresolvedName":"mentionMenuRef.current.moveDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:mentionMenuRef.current.getSelectedItem","kind":"calls","metadata":{"unresolvedName":"mentionMenuRef.current.getSelectedItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:(selected.relativePath || selected.displayName).replace","kind":"calls","metadata":{"unresolvedName":"(selected.relativePath || selected.displayName).replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:updateMentionQuery","kind":"calls","metadata":{"unresolvedName":"updateMentionQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:mentionQuery.includes","kind":"calls","metadata":{"unresolvedName":"mentionQuery.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:mentionQuery.replace(/\\/$/, '').split","kind":"calls","metadata":{"unresolvedName":"mentionQuery.replace(/\\/$/, '').split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:mentionQuery.replace","kind":"calls","metadata":{"unresolvedName":"mentionQuery.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:mentionMenuRef.current.setRestoreFolder","kind":"calls","metadata":{"unresolvedName":"mentionMenuRef.current.setRestoreFolder"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:parts.pop","kind":"calls","metadata":{"unresolvedName":"parts.pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:parts.join","kind":"calls","metadata":{"unresolvedName":"parts.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:mentionMenuRef.current.selectCurrent","kind":"calls","metadata":{"unresolvedName":"mentionMenuRef.current.selectCurrent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:setMentionOpen","kind":"calls","metadata":{"unresolvedName":"setMentionOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:handleHistoryKeyDown","kind":"calls","metadata":{"unresolvedName":"handleHistoryKeyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:keybindingStore.getKey","kind":"calls","metadata":{"unresolvedName":"keybindingStore.getKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:matchesKeybinding","kind":"calls","metadata":{"unresolvedName":"matchesKeybinding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:handleSend","kind":"calls","metadata":{"unresolvedName":"handleSend"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:handleHistoryChange","kind":"calls","metadata":{"unresolvedName":"handleHistoryChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:newText.slice","kind":"calls","metadata":{"unresolvedName":"newText.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:detectMentionTrigger","kind":"calls","metadata":{"unresolvedName":"detectMentionTrigger"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:setMentionStartIndex","kind":"calls","metadata":{"unresolvedName":"setMentionStartIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:detectSlashTrigger","kind":"calls","metadata":{"unresolvedName":"detectSlashTrigger"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:setSlashQuery","kind":"calls","metadata":{"unresolvedName":"setSlashQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:setSlashStartIndex","kind":"calls","metadata":{"unresolvedName":"setSlashStartIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:(item.relativePath || item.displayName).replace","kind":"calls","metadata":{"unresolvedName":"(item.relativePath || item.displayName).replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:crypto.randomUUID","kind":"calls","metadata":{"unresolvedName":"crypto.randomUUID"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:textareaRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:ensureFileMime","kind":"calls","metadata":{"unresolvedName":"ensureFileMime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:isFileSupported","kind":"calls","metadata":{"unresolvedName":"isFileSupported"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:readFileAsDataUrl","kind":"calls","metadata":{"unresolvedName":"readFileAsDataUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:nextAttachments.push","kind":"calls","metadata":{"unresolvedName":"nextAttachments.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:transcribedText.trim","kind":"calls","metadata":{"unresolvedName":"transcribedText.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:current.trim","kind":"calls","metadata":{"unresolvedName":"current.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:current.endsWith","kind":"calls","metadata":{"unresolvedName":"current.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:textarea.focus","kind":"calls","metadata":{"unresolvedName":"textarea.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:textarea.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textarea.setSelectionRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:text.replace(value + ' ', '').replace","kind":"calls","metadata":{"unresolvedName":"text.replace(value + ' ', '').replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:text.replace","kind":"calls","metadata":{"unresolvedName":"text.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:items[i].getAsFile","kind":"calls","metadata":{"unresolvedName":"items[i].getAsFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:files.push","kind":"calls","metadata":{"unresolvedName":"files.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:handleFilesSelected","kind":"calls","metadata":{"unresolvedName":"handleFilesSelected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:e.dataTransfer.types.includes","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.types.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:setIsDragging","kind":"calls","metadata":{"unresolvedName":"setIsDragging"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:beforeCursor.endsWith","kind":"calls","metadata":{"unresolvedName":"beforeCursor.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toFileUrl","kind":"calls","metadata":{"unresolvedName":"toFileUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:e.dataTransfer.getData","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.getData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"symbol-name:insertDraggedFile","kind":"calls","metadata":{"unresolvedName":"insertDraggedFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:attachments.forEach","kind":"calls","metadata":{"unresolvedName":"attachments.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"external:excludeValues.add","kind":"calls","metadata":{"unresolvedName":"excludeValues.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:InputBoxComponent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setText","kind":"calls","metadata":{"unresolvedName":"setText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setAttachments","kind":"calls","metadata":{"unresolvedName":"setAttachments"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.setSelectionRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setText","kind":"calls","metadata":{"unresolvedName":"setText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setAttachments","kind":"calls","metadata":{"unresolvedName":"setAttachments"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.setSelectionRange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setText","kind":"calls","metadata":{"unresolvedName":"setText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setAttachments","kind":"calls","metadata":{"unresolvedName":"setAttachments"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setText","kind":"calls","metadata":{"unresolvedName":"setText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setAttachments","kind":"calls","metadata":{"unresolvedName":"setAttachments"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:resetHistoryIndex","kind":"calls","metadata":{"unresolvedName":"resetHistoryIndex"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setText","kind":"calls","metadata":{"unresolvedName":"setText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setAttachments","kind":"calls","metadata":{"unresolvedName":"setAttachments"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:resetHistoryIndex","kind":"calls","metadata":{"unresolvedName":"resetHistoryIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.setSelectionRange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.setSelectionRange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:resetDraft","kind":"calls","metadata":{"unresolvedName":"resetDraft"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.setSelectionRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:onCommand","kind":"calls","metadata":{"unresolvedName":"onCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:onClearRevert","kind":"calls","metadata":{"unresolvedName":"onClearRevert"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:restoreDraft","kind":"calls","metadata":{"unresolvedName":"restoreDraft"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.setSelectionRange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:onCommand","kind":"calls","metadata":{"unresolvedName":"onCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:onClearRevert","kind":"calls","metadata":{"unresolvedName":"onClearRevert"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:restoreDraft","kind":"calls","metadata":{"unresolvedName":"restoreDraft"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setIsSubmitting","kind":"calls","metadata":{"unresolvedName":"setIsSubmitting"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:submit","kind":"calls","metadata":{"unresolvedName":"submit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:onFailure","kind":"calls","metadata":{"unresolvedName":"onFailure"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:onSuccess","kind":"calls","metadata":{"unresolvedName":"onSuccess"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:attachments.find","kind":"calls","metadata":{"unresolvedName":"attachments.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:text.slice(textRange.end).trim","kind":"calls","metadata":{"unresolvedName":"text.slice(textRange.end).trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:text.slice","kind":"calls","metadata":{"unresolvedName":"text.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:submitCommandOptimistically","kind":"calls","metadata":{"unresolvedName":"submitCommandOptimistically"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:runSubmit","kind":"calls","metadata":{"unresolvedName":"runSubmit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:onSend","kind":"calls","metadata":{"unresolvedName":"onSend"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:resetDraft","kind":"calls","metadata":{"unresolvedName":"resetDraft"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:onClearRevert","kind":"calls","metadata":{"unresolvedName":"onClearRevert"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:resetDraft","kind":"calls","metadata":{"unresolvedName":"resetDraft"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:onClearRevert","kind":"calls","metadata":{"unresolvedName":"onClearRevert"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:text.slice","kind":"calls","metadata":{"unresolvedName":"text.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setText","kind":"calls","metadata":{"unresolvedName":"setText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setMentionQuery","kind":"calls","metadata":{"unresolvedName":"setMentionQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.setSelectionRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.setSelectionRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:slashMenuRef.current.moveUp","kind":"calls","metadata":{"unresolvedName":"slashMenuRef.current.moveUp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:slashMenuRef.current.moveDown","kind":"calls","metadata":{"unresolvedName":"slashMenuRef.current.moveDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:slashMenuRef.current.selectCurrent","kind":"calls","metadata":{"unresolvedName":"slashMenuRef.current.selectCurrent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setSlashOpen","kind":"calls","metadata":{"unresolvedName":"setSlashOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:mentionMenuRef.current.moveUp","kind":"calls","metadata":{"unresolvedName":"mentionMenuRef.current.moveUp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:mentionMenuRef.current.moveDown","kind":"calls","metadata":{"unresolvedName":"mentionMenuRef.current.moveDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:mentionMenuRef.current.getSelectedItem","kind":"calls","metadata":{"unresolvedName":"mentionMenuRef.current.getSelectedItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:(selected.relativePath || selected.displayName).replace","kind":"calls","metadata":{"unresolvedName":"(selected.relativePath || selected.displayName).replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:updateMentionQuery","kind":"calls","metadata":{"unresolvedName":"updateMentionQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:mentionQuery.includes","kind":"calls","metadata":{"unresolvedName":"mentionQuery.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:mentionQuery.replace(/\\/$/, '').split","kind":"calls","metadata":{"unresolvedName":"mentionQuery.replace(/\\/$/, '').split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:mentionQuery.replace","kind":"calls","metadata":{"unresolvedName":"mentionQuery.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:mentionMenuRef.current.setRestoreFolder","kind":"calls","metadata":{"unresolvedName":"mentionMenuRef.current.setRestoreFolder"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:parts.pop","kind":"calls","metadata":{"unresolvedName":"parts.pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:parts.join","kind":"calls","metadata":{"unresolvedName":"parts.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:mentionMenuRef.current.selectCurrent","kind":"calls","metadata":{"unresolvedName":"mentionMenuRef.current.selectCurrent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setMentionOpen","kind":"calls","metadata":{"unresolvedName":"setMentionOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:handleHistoryKeyDown","kind":"calls","metadata":{"unresolvedName":"handleHistoryKeyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setText","kind":"calls","metadata":{"unresolvedName":"setText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setAttachments","kind":"calls","metadata":{"unresolvedName":"setAttachments"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.setSelectionRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:keybindingStore.getKey","kind":"calls","metadata":{"unresolvedName":"keybindingStore.getKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:matchesKeybinding","kind":"calls","metadata":{"unresolvedName":"matchesKeybinding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:handleSend","kind":"calls","metadata":{"unresolvedName":"handleSend"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.setSelectionRange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setText","kind":"calls","metadata":{"unresolvedName":"setText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:handleHistoryChange","kind":"calls","metadata":{"unresolvedName":"handleHistoryChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setAttachments","kind":"calls","metadata":{"unresolvedName":"setAttachments"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:newText.slice","kind":"calls","metadata":{"unresolvedName":"newText.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:detectMentionTrigger","kind":"calls","metadata":{"unresolvedName":"detectMentionTrigger"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setMentionQuery","kind":"calls","metadata":{"unresolvedName":"setMentionQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setMentionStartIndex","kind":"calls","metadata":{"unresolvedName":"setMentionStartIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setMentionOpen","kind":"calls","metadata":{"unresolvedName":"setMentionOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setSlashOpen","kind":"calls","metadata":{"unresolvedName":"setSlashOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:detectSlashTrigger","kind":"calls","metadata":{"unresolvedName":"detectSlashTrigger"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setSlashQuery","kind":"calls","metadata":{"unresolvedName":"setSlashQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setSlashStartIndex","kind":"calls","metadata":{"unresolvedName":"setSlashStartIndex"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:newText.slice","kind":"calls","metadata":{"unresolvedName":"newText.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:newText.slice","kind":"calls","metadata":{"unresolvedName":"newText.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:(item.relativePath || item.displayName).replace","kind":"calls","metadata":{"unresolvedName":"(item.relativePath || item.displayName).replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:updateMentionQuery","kind":"calls","metadata":{"unresolvedName":"updateMentionQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:text.slice","kind":"calls","metadata":{"unresolvedName":"text.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:crypto.randomUUID","kind":"calls","metadata":{"unresolvedName":"crypto.randomUUID"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setText","kind":"calls","metadata":{"unresolvedName":"setText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setAttachments","kind":"calls","metadata":{"unresolvedName":"setAttachments"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setMentionOpen","kind":"calls","metadata":{"unresolvedName":"setMentionOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.setSelectionRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.setSelectionRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setMentionOpen","kind":"calls","metadata":{"unresolvedName":"setMentionOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setSlashOpen","kind":"calls","metadata":{"unresolvedName":"setSlashOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:submitCommandOptimistically","kind":"calls","metadata":{"unresolvedName":"submitCommandOptimistically"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:text.slice","kind":"calls","metadata":{"unresolvedName":"text.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:crypto.randomUUID","kind":"calls","metadata":{"unresolvedName":"crypto.randomUUID"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setText","kind":"calls","metadata":{"unresolvedName":"setText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setAttachments","kind":"calls","metadata":{"unresolvedName":"setAttachments"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.setSelectionRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.setSelectionRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setSlashOpen","kind":"calls","metadata":{"unresolvedName":"setSlashOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:ensureFileMime","kind":"calls","metadata":{"unresolvedName":"ensureFileMime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:isFileSupported","kind":"calls","metadata":{"unresolvedName":"isFileSupported"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:readFileAsDataUrl","kind":"calls","metadata":{"unresolvedName":"readFileAsDataUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:nextAttachments.push","kind":"calls","metadata":{"unresolvedName":"nextAttachments.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:crypto.randomUUID","kind":"calls","metadata":{"unresolvedName":"crypto.randomUUID"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setAttachments","kind":"calls","metadata":{"unresolvedName":"setAttachments"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:transcribedText.trim","kind":"calls","metadata":{"unresolvedName":"transcribedText.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setText","kind":"calls","metadata":{"unresolvedName":"setText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:current.trim","kind":"calls","metadata":{"unresolvedName":"current.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:current.endsWith","kind":"calls","metadata":{"unresolvedName":"current.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textarea.focus","kind":"calls","metadata":{"unresolvedName":"textarea.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textarea.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textarea.setSelectionRange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:current.trim","kind":"calls","metadata":{"unresolvedName":"current.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:current.endsWith","kind":"calls","metadata":{"unresolvedName":"current.endsWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textarea.focus","kind":"calls","metadata":{"unresolvedName":"textarea.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textarea.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textarea.setSelectionRange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:attachments.find","kind":"calls","metadata":{"unresolvedName":"attachments.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:text.replace(value + ' ', '').replace","kind":"calls","metadata":{"unresolvedName":"text.replace(value + ' ', '').replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:text.replace","kind":"calls","metadata":{"unresolvedName":"text.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setText","kind":"calls","metadata":{"unresolvedName":"setText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setAttachments","kind":"calls","metadata":{"unresolvedName":"setAttachments"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:items[i].getAsFile","kind":"calls","metadata":{"unresolvedName":"items[i].getAsFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:isFileSupported","kind":"calls","metadata":{"unresolvedName":"isFileSupported"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/input/inputUtils.ts:ensureFileMime","kind":"calls","metadata":{"unresolvedName":"ensureFileMime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:files.push","kind":"calls","metadata":{"unresolvedName":"files.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:handleFilesSelected","kind":"calls","metadata":{"unresolvedName":"handleFilesSelected"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:e.dataTransfer.types.includes","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.types.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setIsDragging","kind":"calls","metadata":{"unresolvedName":"setIsDragging"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setIsDragging","kind":"calls","metadata":{"unresolvedName":"setIsDragging"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:text.slice","kind":"calls","metadata":{"unresolvedName":"text.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:beforeCursor.endsWith","kind":"calls","metadata":{"unresolvedName":"beforeCursor.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:crypto.randomUUID","kind":"calls","metadata":{"unresolvedName":"crypto.randomUUID"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toFileUrl","kind":"calls","metadata":{"unresolvedName":"toFileUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setText","kind":"calls","metadata":{"unresolvedName":"setText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setAttachments","kind":"calls","metadata":{"unresolvedName":"setAttachments"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.setSelectionRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.setSelectionRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:setIsDragging","kind":"calls","metadata":{"unresolvedName":"setIsDragging"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:e.dataTransfer.getData","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.getData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:insertDraggedFile","kind":"calls","metadata":{"unresolvedName":"insertDraggedFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"symbol-name:handleFilesSelected","kind":"calls","metadata":{"unresolvedName":"handleFilesSelected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx:","to":"external:excludeValues.add","kind":"calls","metadata":{"unresolvedName":"excludeValues.add"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBox.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"external:expect(screen.getByTestId('attachment-count')).toHaveTextContent","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByTestId('attachment-count')).toHaveTextContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"external:expect(screen.getByTestId('attachment-count')).toHaveTextContent","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByTestId('attachment-count')).toHaveTextContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"external:expect(screen.getByTestId('attachment-count')).toHaveTextContent","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByTestId('attachment-count')).toHaveTextContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InputBoxAttachments.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:screen.getByTitle","kind":"calls","metadata":{"unresolvedName":"screen.getByTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(onSelect).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onSelect).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:screen.getAllByRole","kind":"calls","metadata":{"unresolvedName":"screen.getAllByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(selectedOption).not.toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(selectedOption).not.toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(selectedOption).not.toContainElement","kind":"calls","metadata":{"unresolvedName":"expect(selectedOption).not.toContainElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(pinButtons.length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(pinButtons.length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(screen.getByRole('status')).toHaveTextContent","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('status')).toHaveTextContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:fireEvent.keyDown","kind":"calls","metadata":{"unresolvedName":"fireEvent.keyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(lastOption).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(lastOption).toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(selectedOption).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(selectedOption).toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(firstPinButton).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(firstPinButton).toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(screen.getByRole('textbox', { name: 'Chat input' })).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('textbox', { name: 'Chat input' })).toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(pinButton).not.toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(pinButton).not.toHaveFocus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:screen.getByTitle","kind":"calls","metadata":{"unresolvedName":"screen.getByTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(onSelect).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onSelect).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:screen.getByTitle","kind":"calls","metadata":{"unresolvedName":"screen.getByTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:screen.getAllByRole","kind":"calls","metadata":{"unresolvedName":"screen.getAllByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(selectedOption).not.toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(selectedOption).not.toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(selectedOption).not.toContainElement","kind":"calls","metadata":{"unresolvedName":"expect(selectedOption).not.toContainElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(pinButtons.length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(pinButtons.length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(screen.getByRole('status')).toHaveTextContent","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('status')).toHaveTextContent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:screen.getByTitle","kind":"calls","metadata":{"unresolvedName":"screen.getByTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:fireEvent.keyDown","kind":"calls","metadata":{"unresolvedName":"fireEvent.keyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(lastOption).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(lastOption).toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(selectedOption).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(selectedOption).toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(firstPinButton).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(firstPinButton).toHaveFocus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:screen.getByTitle","kind":"calls","metadata":{"unresolvedName":"screen.getByTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(screen.getByRole('textbox', { name: 'Chat input' })).toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('textbox', { name: 'Chat input' })).toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(onSelect).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onSelect).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:ToolbarSelectorHarness","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:ToolbarSelectorHarness","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:ToolbarSelectorHarness","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:screen.getByTitle","kind":"calls","metadata":{"unresolvedName":"screen.getByTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"external:expect(pinButton).not.toHaveFocus","kind":"calls","metadata":{"unresolvedName":"expect(pinButton).not.toHaveFocus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:useFlatList","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:useFlatList","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:useFlatList","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:useFlatList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:groupModelsByProvider","kind":"calls","metadata":{"unresolvedName":"groupModelsByProvider"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:useFlatList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getRecentModels","kind":"calls","metadata":{"unresolvedName":"getRecentModels"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:useFlatList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModels","kind":"calls","metadata":{"unresolvedName":"getPinnedModels"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:useFlatList","to":"external:flat.push","kind":"calls","metadata":{"unresolvedName":"flat.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:useFlatList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:useFlatList","to":"external:pinned.forEach","kind":"calls","metadata":{"unresolvedName":"pinned.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:useFlatList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:useFlatList","to":"external:addedKeys.add","kind":"calls","metadata":{"unresolvedName":"addedKeys.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:useFlatList","to":"external:recent.filter","kind":"calls","metadata":{"unresolvedName":"recent.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:useFlatList","to":"external:addedKeys.has","kind":"calls","metadata":{"unresolvedName":"addedKeys.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:useFlatList","to":"external:recentFiltered.forEach","kind":"calls","metadata":{"unresolvedName":"recentFiltered.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:useFlatList","to":"external:groups.forEach","kind":"calls","metadata":{"unresolvedName":"groups.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:useFlatList","to":"external:g.models.filter","kind":"calls","metadata":{"unresolvedName":"g.models.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:useFlatList","to":"external:groupModels.forEach","kind":"calls","metadata":{"unresolvedName":"groupModels.forEach"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:groupModelsByProvider","kind":"calls","metadata":{"unresolvedName":"groupModelsByProvider"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getRecentModels","kind":"calls","metadata":{"unresolvedName":"getRecentModels"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModels","kind":"calls","metadata":{"unresolvedName":"getPinnedModels"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:flat.push","kind":"calls","metadata":{"unresolvedName":"flat.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:pinned.forEach","kind":"calls","metadata":{"unresolvedName":"pinned.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:addedKeys.add","kind":"calls","metadata":{"unresolvedName":"addedKeys.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:recent.filter","kind":"calls","metadata":{"unresolvedName":"recent.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:addedKeys.has","kind":"calls","metadata":{"unresolvedName":"addedKeys.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:recentFiltered.forEach","kind":"calls","metadata":{"unresolvedName":"recentFiltered.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:groups.forEach","kind":"calls","metadata":{"unresolvedName":"groups.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:g.models.filter","kind":"calls","metadata":{"unresolvedName":"g.models.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:groupModels.forEach","kind":"calls","metadata":{"unresolvedName":"groupModels.forEach"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:flat.push","kind":"calls","metadata":{"unresolvedName":"flat.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:addedKeys.add","kind":"calls","metadata":{"unresolvedName":"addedKeys.add"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:flat.push","kind":"calls","metadata":{"unresolvedName":"flat.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:addedKeys.add","kind":"calls","metadata":{"unresolvedName":"addedKeys.add"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:g.models.filter","kind":"calls","metadata":{"unresolvedName":"g.models.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:addedKeys.has","kind":"calls","metadata":{"unresolvedName":"addedKeys.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:flat.push","kind":"calls","metadata":{"unresolvedName":"flat.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:groupModels.forEach","kind":"calls","metadata":{"unresolvedName":"groupModels.forEach"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setSearchQuery","kind":"calls","metadata":{"unresolvedName":"setSearchQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setHighlightedIndex","kind":"calls","metadata":{"unresolvedName":"setHighlightedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:flatList.map","kind":"calls","metadata":{"unresolvedName":"flatList.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:itemIndices.indexOf","kind":"calls","metadata":{"unresolvedName":"itemIndices.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:isModelPinned","kind":"calls","metadata":{"unresolvedName":"isModelPinned"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:onItemClick","kind":"calls","metadata":{"unresolvedName":"onItemClick"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:handleItemKeyDown","kind":"calls","metadata":{"unresolvedName":"handleItemKeyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchStart","kind":"calls","metadata":{"unresolvedName":"onTouchStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:formatContext","kind":"calls","metadata":{"unresolvedName":"formatContext"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:onTogglePin","kind":"calls","metadata":{"unresolvedName":"onTogglePin"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:handlePinKeyDown","kind":"calls","metadata":{"unresolvedName":"handlePinKeyDown"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setSearchQuery","kind":"calls","metadata":{"unresolvedName":"setSearchQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setHighlightedIndex","kind":"calls","metadata":{"unresolvedName":"setHighlightedIndex"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:itemIndices.indexOf","kind":"calls","metadata":{"unresolvedName":"itemIndices.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:isModelPinned","kind":"calls","metadata":{"unresolvedName":"isModelPinned"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setHighlightedIndex","kind":"calls","metadata":{"unresolvedName":"setHighlightedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:onItemClick","kind":"calls","metadata":{"unresolvedName":"onItemClick"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:handleItemKeyDown","kind":"calls","metadata":{"unresolvedName":"handleItemKeyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/AttachmentDetailModal.tsx:onTouchStart","kind":"calls","metadata":{"unresolvedName":"onTouchStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:formatContext","kind":"calls","metadata":{"unresolvedName":"formatContext"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:onTogglePin","kind":"calls","metadata":{"unresolvedName":"onTogglePin"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:handlePinKeyDown","kind":"calls","metadata":{"unresolvedName":"handlePinKeyDown"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:itemIndices.indexOf","kind":"calls","metadata":{"unresolvedName":"itemIndices.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setHighlightedIndex","kind":"calls","metadata":{"unresolvedName":"setHighlightedIndex"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setHighlightedIndex","kind":"calls","metadata":{"unresolvedName":"setHighlightedIndex"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:handleItemKeyDown","kind":"calls","metadata":{"unresolvedName":"handleItemKeyDown"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setHighlightedIndex","kind":"calls","metadata":{"unresolvedName":"setHighlightedIndex"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:handlePinKeyDown","kind":"calls","metadata":{"unresolvedName":"handlePinKeyDown"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:formatContext","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:formatContext","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:formatContext","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:formatContext","to":"external:(k / 1000).toFixed","kind":"calls","metadata":{"unresolvedName":"(k / 1000).toFixed"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","kind":"calls","metadata":{"unresolvedName":"useInputCapabilities"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:searchQuery.trim","kind":"calls","metadata":{"unresolvedName":"searchQuery.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:searchQuery.toLowerCase","kind":"calls","metadata":{"unresolvedName":"searchQuery.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:(typeof value === 'string' ? value : '').toLowerCase","kind":"calls","metadata":{"unresolvedName":"(typeof value === 'string' ? value : '').toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:models.filter","kind":"calls","metadata":{"unresolvedName":"models.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:normalize(m.name).includes","kind":"calls","metadata":{"unresolvedName":"normalize(m.name).includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:normalize","kind":"calls","metadata":{"unresolvedName":"normalize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:normalize(m.id).includes","kind":"calls","metadata":{"unresolvedName":"normalize(m.id).includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:normalize(m.family).includes","kind":"calls","metadata":{"unresolvedName":"normalize(m.family).includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:normalize(m.providerName).includes","kind":"calls","metadata":{"unresolvedName":"normalize(m.providerName).includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:useFlatList","kind":"calls","metadata":{"unresolvedName":"useFlatList"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:flatList.map((item, index) => (item.type === 'item' ? index : -1)).filter","kind":"calls","metadata":{"unresolvedName":"flatList.map((item, index) => (item.type === 'item' ? index : -1)).filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:flatList.map","kind":"calls","metadata":{"unresolvedName":"flatList.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:models.find","kind":"calls","metadata":{"unresolvedName":"models.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.body.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"document.body.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:element.closest","kind":"calls","metadata":{"unresolvedName":"element.closest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:window.getComputedStyle","kind":"calls","metadata":{"unresolvedName":"window.getComputedStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:focusables.findIndex","kind":"calls","metadata":{"unresolvedName":"focusables.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:focusables[currentIndex + direction]?.focus","kind":"calls","metadata":{"unresolvedName":"focusables[currentIndex + direction]?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:flatList.findIndex","kind":"calls","metadata":{"unresolvedName":"flatList.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:itemIndices.indexOf","kind":"calls","metadata":{"unresolvedName":"itemIndices.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setHighlightedIndex","kind":"calls","metadata":{"unresolvedName":"setHighlightedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setIsOpen","kind":"calls","metadata":{"unresolvedName":"setIsOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setSearchQuery","kind":"calls","metadata":{"unresolvedName":"setSearchQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:triggerRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"triggerRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:container?.querySelector","kind":"calls","metadata":{"unresolvedName":"container?.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:input?.focus","kind":"calls","metadata":{"unresolvedName":"input?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:useImperativeHandle","kind":"calls","metadata":{"unresolvedName":"useImperativeHandle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:recordModelUsage","kind":"calls","metadata":{"unresolvedName":"recordModelUsage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:focusToolbarInput","kind":"calls","metadata":{"unresolvedName":"focusToolbarInput"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setRefreshTrigger","kind":"calls","metadata":{"unresolvedName":"setRefreshTrigger"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:e.currentTarget.blur","kind":"calls","metadata":{"unresolvedName":"e.currentTarget.blur"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:toggleModelPin","kind":"calls","metadata":{"unresolvedName":"toggleModelPin"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:navigator.vibrate","kind":"calls","metadata":{"unresolvedName":"navigator.vibrate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:handleSelect","kind":"calls","metadata":{"unresolvedName":"handleSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:target?.focus","kind":"calls","metadata":{"unresolvedName":"target?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:target?.scrollIntoView","kind":"calls","metadata":{"unresolvedName":"target?.scrollIntoView"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.querySelector(selector)?.focus","kind":"calls","metadata":{"unresolvedName":"document.querySelector(selector)?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.querySelector","kind":"calls","metadata":{"unresolvedName":"document.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:focusItemAtInteractiveIndex","kind":"calls","metadata":{"unresolvedName":"focusItemAtInteractiveIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:searchInputRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"searchInputRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:containerRef.current.contains","kind":"calls","metadata":{"unresolvedName":"containerRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:menuRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"menuRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:isFocusableElement","kind":"calls","metadata":{"unresolvedName":"isFocusableElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.getElementById(`${idPrefix}-${realIndex}`)?.scrollIntoView","kind":"calls","metadata":{"unresolvedName":"document.getElementById(`${idPrefix}-${realIndex}`)?.scrollIntoView"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:focusTarget?.focus","kind":"calls","metadata":{"unresolvedName":"focusTarget?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:focusRelativeToTrigger","kind":"calls","metadata":{"unresolvedName":"focusRelativeToTrigger"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:focusPinButtonForModel","kind":"calls","metadata":{"unresolvedName":"focusPinButtonForModel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:openMenu","kind":"calls","metadata":{"unresolvedName":"openMenu"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:searchQuery.trim","kind":"calls","metadata":{"unresolvedName":"searchQuery.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:searchQuery.toLowerCase","kind":"calls","metadata":{"unresolvedName":"searchQuery.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:(typeof value === 'string' ? value : '').toLowerCase","kind":"calls","metadata":{"unresolvedName":"(typeof value === 'string' ? value : '').toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:models.filter","kind":"calls","metadata":{"unresolvedName":"models.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:normalize(m.name).includes","kind":"calls","metadata":{"unresolvedName":"normalize(m.name).includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:normalize","kind":"calls","metadata":{"unresolvedName":"normalize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:normalize(m.id).includes","kind":"calls","metadata":{"unresolvedName":"normalize(m.id).includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:normalize(m.family).includes","kind":"calls","metadata":{"unresolvedName":"normalize(m.family).includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:normalize(m.providerName).includes","kind":"calls","metadata":{"unresolvedName":"normalize(m.providerName).includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:flatList.map((item, index) => (item.type === 'item' ? index : -1)).filter","kind":"calls","metadata":{"unresolvedName":"flatList.map((item, index) => (item.type === 'item' ? index : -1)).filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:flatList.map","kind":"calls","metadata":{"unresolvedName":"flatList.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:models.find","kind":"calls","metadata":{"unresolvedName":"models.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.body.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"document.body.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:element.closest","kind":"calls","metadata":{"unresolvedName":"element.closest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:window.getComputedStyle","kind":"calls","metadata":{"unresolvedName":"window.getComputedStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:focusables.findIndex","kind":"calls","metadata":{"unresolvedName":"focusables.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:focusables[currentIndex + direction]?.focus","kind":"calls","metadata":{"unresolvedName":"focusables[currentIndex + direction]?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:element.closest","kind":"calls","metadata":{"unresolvedName":"element.closest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:window.getComputedStyle","kind":"calls","metadata":{"unresolvedName":"window.getComputedStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:element.closest","kind":"calls","metadata":{"unresolvedName":"element.closest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:window.getComputedStyle","kind":"calls","metadata":{"unresolvedName":"window.getComputedStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:flatList.findIndex","kind":"calls","metadata":{"unresolvedName":"flatList.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:itemIndices.indexOf","kind":"calls","metadata":{"unresolvedName":"itemIndices.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setHighlightedIndex","kind":"calls","metadata":{"unresolvedName":"setHighlightedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setIsOpen","kind":"calls","metadata":{"unresolvedName":"setIsOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setSearchQuery","kind":"calls","metadata":{"unresolvedName":"setSearchQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setIsOpen","kind":"calls","metadata":{"unresolvedName":"setIsOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setSearchQuery","kind":"calls","metadata":{"unresolvedName":"setSearchQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:triggerRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"triggerRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:container?.querySelector","kind":"calls","metadata":{"unresolvedName":"container?.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:input?.focus","kind":"calls","metadata":{"unresolvedName":"input?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:recordModelUsage","kind":"calls","metadata":{"unresolvedName":"recordModelUsage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:focusToolbarInput","kind":"calls","metadata":{"unresolvedName":"focusToolbarInput"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setRefreshTrigger","kind":"calls","metadata":{"unresolvedName":"setRefreshTrigger"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:focusToolbarInput","kind":"calls","metadata":{"unresolvedName":"focusToolbarInput"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:e.currentTarget.blur","kind":"calls","metadata":{"unresolvedName":"e.currentTarget.blur"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:toggleModelPin","kind":"calls","metadata":{"unresolvedName":"toggleModelPin"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setRefreshTrigger","kind":"calls","metadata":{"unresolvedName":"setRefreshTrigger"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:toggleModelPin","kind":"calls","metadata":{"unresolvedName":"toggleModelPin"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setRefreshTrigger","kind":"calls","metadata":{"unresolvedName":"setRefreshTrigger"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:navigator.vibrate","kind":"calls","metadata":{"unresolvedName":"navigator.vibrate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:toggleModelPin","kind":"calls","metadata":{"unresolvedName":"toggleModelPin"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setRefreshTrigger","kind":"calls","metadata":{"unresolvedName":"setRefreshTrigger"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:navigator.vibrate","kind":"calls","metadata":{"unresolvedName":"navigator.vibrate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:handleSelect","kind":"calls","metadata":{"unresolvedName":"handleSelect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setHighlightedIndex","kind":"calls","metadata":{"unresolvedName":"setHighlightedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:target?.focus","kind":"calls","metadata":{"unresolvedName":"target?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:target?.scrollIntoView","kind":"calls","metadata":{"unresolvedName":"target?.scrollIntoView"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setHighlightedIndex","kind":"calls","metadata":{"unresolvedName":"setHighlightedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.querySelector(selector)?.focus","kind":"calls","metadata":{"unresolvedName":"document.querySelector(selector)?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.querySelector","kind":"calls","metadata":{"unresolvedName":"document.querySelector"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:focusItemAtInteractiveIndex","kind":"calls","metadata":{"unresolvedName":"focusItemAtInteractiveIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:searchInputRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"searchInputRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:focusItemAtInteractiveIndex","kind":"calls","metadata":{"unresolvedName":"focusItemAtInteractiveIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:searchInputRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"searchInputRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:containerRef.current.contains","kind":"calls","metadata":{"unresolvedName":"containerRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:menuRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"menuRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:isFocusableElement","kind":"calls","metadata":{"unresolvedName":"isFocusableElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:handleClickOutside","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:handleClickOutside","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:handleClickOutside","to":"external:containerRef.current.contains","kind":"calls","metadata":{"unresolvedName":"containerRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:handleClickOutside","to":"external:menuRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"menuRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:handleClickOutside","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:handleClickOutside","to":"symbol-name:isFocusableElement","kind":"calls","metadata":{"unresolvedName":"isFocusableElement"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:handleEsc","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:handleEsc","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:handleEsc","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:handleEsc","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:handleEsc","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.getElementById(`${idPrefix}-${realIndex}`)?.scrollIntoView","kind":"calls","metadata":{"unresolvedName":"document.getElementById(`${idPrefix}-${realIndex}`)?.scrollIntoView"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.getElementById(`${idPrefix}-${realIndex}`)?.scrollIntoView","kind":"calls","metadata":{"unresolvedName":"document.getElementById(`${idPrefix}-${realIndex}`)?.scrollIntoView"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:flatList.findIndex","kind":"calls","metadata":{"unresolvedName":"flatList.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:itemIndices.indexOf","kind":"calls","metadata":{"unresolvedName":"itemIndices.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:setHighlightedIndex","kind":"calls","metadata":{"unresolvedName":"setHighlightedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.querySelector","kind":"calls","metadata":{"unresolvedName":"document.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:focusTarget?.focus","kind":"calls","metadata":{"unresolvedName":"focusTarget?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:document.querySelector","kind":"calls","metadata":{"unresolvedName":"document.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:focusTarget?.focus","kind":"calls","metadata":{"unresolvedName":"focusTarget?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:focusRelativeToTrigger","kind":"calls","metadata":{"unresolvedName":"focusRelativeToTrigger"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:focusItemAtInteractiveIndex","kind":"calls","metadata":{"unresolvedName":"focusItemAtInteractiveIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:handleSelect","kind":"calls","metadata":{"unresolvedName":"handleSelect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:focusRelativeToTrigger","kind":"calls","metadata":{"unresolvedName":"focusRelativeToTrigger"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:focusRelativeToTrigger","kind":"calls","metadata":{"unresolvedName":"focusRelativeToTrigger"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:focusItemAtInteractiveIndex","kind":"calls","metadata":{"unresolvedName":"focusItemAtInteractiveIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:focusPinButtonForModel","kind":"calls","metadata":{"unresolvedName":"focusPinButtonForModel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:focusRelativeToTrigger","kind":"calls","metadata":{"unresolvedName":"focusRelativeToTrigger"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:handleSelect","kind":"calls","metadata":{"unresolvedName":"handleSelect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:focusRelativeToTrigger","kind":"calls","metadata":{"unresolvedName":"focusRelativeToTrigger"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:focusItemAtInteractiveIndex","kind":"calls","metadata":{"unresolvedName":"focusItemAtInteractiveIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:focusRelativeToTrigger","kind":"calls","metadata":{"unresolvedName":"focusRelativeToTrigger"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:focusRelativeToTrigger","kind":"calls","metadata":{"unresolvedName":"focusRelativeToTrigger"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:openMenu","kind":"calls","metadata":{"unresolvedName":"openMenu"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ModelSelector.tsx:","to":"symbol-name:openMenu","kind":"calls","metadata":{"unresolvedName":"openMenu"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:resolveDropZone","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:resolveDropZone","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:resolveDropZone","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:resolveDropZone","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:","to":"symbol-name:useImperativeHandle","kind":"calls","metadata":{"unresolvedName":"useImperativeHandle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:","to":"symbol-name:setActiveZone","kind":"calls","metadata":{"unresolvedName":"setActiveZone"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:setZone","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:setZone","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:setZone","to":"symbol-name:setActiveZone","kind":"calls","metadata":{"unresolvedName":"setActiveZone"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneDropOverlay.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewport","kind":"calls","metadata":{"unresolvedName":"useChatViewport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useSessionState","kind":"calls","metadata":{"unresolvedName":"useSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useDirectory","kind":"calls","metadata":{"unresolvedName":"useDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"calls","metadata":{"unresolvedName":"useLayoutStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:canUseSplitPane","kind":"calls","metadata":{"unresolvedName":"canUseSplitPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"symbol-name:setIsEditing","kind":"calls","metadata":{"unresolvedName":"setIsEditing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"external:inputRef.current.focus","kind":"calls","metadata":{"unresolvedName":"inputRef.current.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"external:inputRef.current.select","kind":"calls","metadata":{"unresolvedName":"inputRef.current.select"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"symbol-name:setEditValue","kind":"calls","metadata":{"unresolvedName":"setEditValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"external:editValue.trim","kind":"calls","metadata":{"unresolvedName":"editValue.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:updateSession","kind":"calls","metadata":{"unresolvedName":"updateSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"external:messageStore.updateSessionMetadata","kind":"calls","metadata":{"unresolvedName":"messageStore.updateSessionMetadata"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"external:paneLayoutStore.splitPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.splitPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"external:paneLayoutStore.closePane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.closePane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"external:e.dataTransfer.setData","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.setData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"external:e.dataTransfer.types.includes","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.types.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"symbol-name:setIsDragOver","kind":"calls","metadata":{"unresolvedName":"setIsDragOver"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"external:e.dataTransfer.getData","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.getData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"external:paneLayoutStore.swapPanes","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.swapPanes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleRename","kind":"calls","metadata":{"unresolvedName":"handleRename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"symbol-name:handleClose","kind":"calls","metadata":{"unresolvedName":"handleClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"symbol-name:onTogglePaneFullscreen","kind":"calls","metadata":{"unresolvedName":"onTogglePaneFullscreen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"symbol-name:handleSplitH","kind":"calls","metadata":{"unresolvedName":"handleSplitH"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"symbol-name:handleSplitV","kind":"calls","metadata":{"unresolvedName":"handleSplitV"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"symbol-name:onOpenSidebar","kind":"calls","metadata":{"unresolvedName":"onOpenSidebar"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"external:layoutStore.toggleBottomPanel","kind":"calls","metadata":{"unresolvedName":"layoutStore.toggleBottomPanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:PaneHeader","to":"external:layoutStore.toggleRightPanel","kind":"calls","metadata":{"unresolvedName":"layoutStore.toggleRightPanel"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"symbol-name:setIsEditing","kind":"calls","metadata":{"unresolvedName":"setIsEditing"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:inputRef.current.focus","kind":"calls","metadata":{"unresolvedName":"inputRef.current.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:inputRef.current.select","kind":"calls","metadata":{"unresolvedName":"inputRef.current.select"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"symbol-name:setEditValue","kind":"calls","metadata":{"unresolvedName":"setEditValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"symbol-name:setIsEditing","kind":"calls","metadata":{"unresolvedName":"setIsEditing"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:editValue.trim","kind":"calls","metadata":{"unresolvedName":"editValue.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"symbol-name:setIsEditing","kind":"calls","metadata":{"unresolvedName":"setIsEditing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:updateSession","kind":"calls","metadata":{"unresolvedName":"updateSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:messageStore.updateSessionMetadata","kind":"calls","metadata":{"unresolvedName":"messageStore.updateSessionMetadata"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:paneLayoutStore.splitPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.splitPane"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:paneLayoutStore.splitPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.splitPane"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:paneLayoutStore.closePane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.closePane"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:e.dataTransfer.setData","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.setData"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:e.dataTransfer.types.includes","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.types.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"symbol-name:setIsDragOver","kind":"calls","metadata":{"unresolvedName":"setIsDragOver"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"symbol-name:setIsDragOver","kind":"calls","metadata":{"unresolvedName":"setIsDragOver"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"symbol-name:setIsDragOver","kind":"calls","metadata":{"unresolvedName":"setIsDragOver"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:e.dataTransfer.getData","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.getData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:paneLayoutStore.swapPanes","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.swapPanes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleRename","kind":"calls","metadata":{"unresolvedName":"handleRename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"symbol-name:setIsEditing","kind":"calls","metadata":{"unresolvedName":"setIsEditing"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"symbol-name:handleClose","kind":"calls","metadata":{"unresolvedName":"handleClose"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"symbol-name:onTogglePaneFullscreen","kind":"calls","metadata":{"unresolvedName":"onTogglePaneFullscreen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"symbol-name:handleSplitH","kind":"calls","metadata":{"unresolvedName":"handleSplitH"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"symbol-name:handleSplitV","kind":"calls","metadata":{"unresolvedName":"handleSplitV"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"symbol-name:onOpenSidebar","kind":"calls","metadata":{"unresolvedName":"onOpenSidebar"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:layoutStore.toggleBottomPanel","kind":"calls","metadata":{"unresolvedName":"layoutStore.toggleBottomPanel"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PaneHeader.tsx:","to":"external:layoutStore.toggleRightPanel","kind":"calls","metadata":{"unresolvedName":"layoutStore.toggleRightPanel"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/DiffView.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:PermissionDialog","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:PermissionDialog","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:PermissionDialog","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:PermissionDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewport","kind":"calls","metadata":{"unresolvedName":"useChatViewport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:PermissionDialog","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:PermissionDialog","to":"external:childSessionStore.getSessionInfo","kind":"calls","metadata":{"unresolvedName":"childSessionStore.getSessionInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:PermissionDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:usePresence","kind":"calls","metadata":{"unresolvedName":"usePresence"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:PermissionDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:PermissionDialog","to":"symbol-name:onCollapsedChange","kind":"calls","metadata":{"unresolvedName":"onCollapsedChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:PermissionDialog","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:PermissionDialog","to":"external:request.patterns.map(p => p.replace(/\\\\n/g, '\\n')).join","kind":"calls","metadata":{"unresolvedName":"request.patterns.map(p => p.replace(/\\\\n/g, '\\n')).join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:PermissionDialog","to":"external:request.patterns.map","kind":"calls","metadata":{"unresolvedName":"request.patterns.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:PermissionDialog","to":"external:p.replace","kind":"calls","metadata":{"unresolvedName":"p.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:PermissionDialog","to":"external:request.always.join","kind":"calls","metadata":{"unresolvedName":"request.always.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:PermissionDialog","to":"symbol-name:onReply","kind":"calls","metadata":{"unresolvedName":"onReply"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:PermissionDialog","to":"external:autoApproveStore.addRules","kind":"calls","metadata":{"unresolvedName":"autoApproveStore.addRules"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:PermissionDialog","to":"symbol-name:onAutoApprove","kind":"calls","metadata":{"unresolvedName":"onAutoApprove"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:","to":"external:autoApproveStore.addRules","kind":"calls","metadata":{"unresolvedName":"autoApproveStore.addRules"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:","to":"symbol-name:onAutoApprove","kind":"calls","metadata":{"unresolvedName":"onAutoApprove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/PermissionDialog.tsx:","to":"symbol-name:onReply","kind":"calls","metadata":{"unresolvedName":"onReply"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:screen.findByDisplayValue","kind":"calls","metadata":{"unresolvedName":"screen.findByDisplayValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:expect(await screen.findByText('src')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(await screen.findByText('src')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:screen.findByText","kind":"calls","metadata":{"unresolvedName":"screen.findByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:expect(await screen.findByText('docs')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(await screen.findByText('docs')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:expect(screen.getByText('Add current')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('Add current')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:expect(vi.mocked(getPath).mock.calls.length).toBeGreaterThanOrEqual","kind":"calls","metadata":{"unresolvedName":"expect(vi.mocked(getPath).mock.calls.length).toBeGreaterThanOrEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:expect(vi.mocked(listDirectory).mock.calls.length).toBeGreaterThanOrEqual","kind":"calls","metadata":{"unresolvedName":"expect(vi.mocked(listDirectory).mock.calls.length).toBeGreaterThanOrEqual"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:screen.findByDisplayValue","kind":"calls","metadata":{"unresolvedName":"screen.findByDisplayValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:expect(await screen.findByText('src')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(await screen.findByText('src')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:screen.findByText","kind":"calls","metadata":{"unresolvedName":"screen.findByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:expect(await screen.findByText('docs')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(await screen.findByText('docs')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:expect(screen.getByText('Add current')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('Add current')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:expect(await screen.findByText('src')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(await screen.findByText('src')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:screen.findByText","kind":"calls","metadata":{"unresolvedName":"screen.findByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:expect(vi.mocked(getPath).mock.calls.length).toBeGreaterThanOrEqual","kind":"calls","metadata":{"unresolvedName":"expect(vi.mocked(getPath).mock.calls.length).toBeGreaterThanOrEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.test.tsx:","to":"external:expect(vi.mocked(listDirectory).mock.calls.length).toBeGreaterThanOrEqual","kind":"calls","metadata":{"unresolvedName":"expect(vi.mocked(listDirectory).mock.calls.length).toBeGreaterThanOrEqual"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:normalizePath","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:normalizePath","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:normalizePath","to":"external:p.replace","kind":"calls","metadata":{"unresolvedName":"p.replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:getDirectoryPath","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:getDirectoryPath","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:getDirectoryPath","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:getDirectoryPath","to":"external:normalized.endsWith","kind":"calls","metadata":{"unresolvedName":"normalized.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:getDirectoryPath","to":"external:normalized.lastIndexOf","kind":"calls","metadata":{"unresolvedName":"normalized.lastIndexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:getDirectoryPath","to":"external:normalized.substring","kind":"calls","metadata":{"unresolvedName":"normalized.substring"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:getFilterText","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:getFilterText","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:getFilterText","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:getFilterText","to":"external:normalized.endsWith","kind":"calls","metadata":{"unresolvedName":"normalized.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:getFilterText","to":"external:normalized.lastIndexOf","kind":"calls","metadata":{"unresolvedName":"normalized.lastIndexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:getFilterText","to":"external:normalized.substring","kind":"calls","metadata":{"unresolvedName":"normalized.substring"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:getDirectoryPath","kind":"calls","metadata":{"unresolvedName":"getDirectoryPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:getFilterText","kind":"calls","metadata":{"unresolvedName":"getFilterText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:filterText.toLowerCase","kind":"calls","metadata":{"unresolvedName":"filterText.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:items.filter","kind":"calls","metadata":{"unresolvedName":"items.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:item.name.toLowerCase().startsWith","kind":"calls","metadata":{"unresolvedName":"item.name.toLowerCase().startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:item.name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"item.name.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"symbol-name:setItems","kind":"calls","metadata":{"unresolvedName":"setItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getPath","kind":"calls","metadata":{"unresolvedName":"getPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:path.endsWith","kind":"calls","metadata":{"unresolvedName":"path.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"symbol-name:setInputValue","kind":"calls","metadata":{"unresolvedName":"setInputValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:inputRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"inputRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:initPath","kind":"calls","metadata":{"unresolvedName":"initPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:listDirectory(currentDir)\r\n .then","kind":"calls","metadata":{"unresolvedName":"listDirectory(currentDir)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","kind":"calls","metadata":{"unresolvedName":"listDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:nodes\r\n .filter","kind":"calls","metadata":{"unresolvedName":"nodes\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:n.name.startsWith","kind":"calls","metadata":{"unresolvedName":"n.name.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:a.name.localeCompare","kind":"calls","metadata":{"unresolvedName":"a.name.localeCompare"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:fileItems.findIndex","kind":"calls","metadata":{"unresolvedName":"fileItems.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"symbol-name:fileErrorHandler","kind":"calls","metadata":{"unresolvedName":"fileErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:el?.scrollIntoView","kind":"calls","metadata":{"unresolvedName":"el?.scrollIntoView"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:current.endsWith","kind":"calls","metadata":{"unresolvedName":"current.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:current.slice","kind":"calls","metadata":{"unresolvedName":"current.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:current.split(PATH_SEP).pop","kind":"calls","metadata":{"unresolvedName":"current.split(PATH_SEP).pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:current.split","kind":"calls","metadata":{"unresolvedName":"current.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:/^[a-zA-Z]:\\/$/.test","kind":"calls","metadata":{"unresolvedName":"/^[a-zA-Z]:\\/$/.test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:path.slice","kind":"calls","metadata":{"unresolvedName":"path.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:inputValue.endsWith","kind":"calls","metadata":{"unresolvedName":"inputValue.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"symbol-name:handleGoBack","kind":"calls","metadata":{"unresolvedName":"handleGoBack"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:inputValue.split(PATH_SEP).filter","kind":"calls","metadata":{"unresolvedName":"inputValue.split(PATH_SEP).filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:inputValue.split","kind":"calls","metadata":{"unresolvedName":"inputValue.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:filteredItems.map","kind":"calls","metadata":{"unresolvedName":"filteredItems.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"symbol-name:handleItemClick","kind":"calls","metadata":{"unresolvedName":"handleItemClick"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ProjectDialog","to":"symbol-name:handleSelectFolder","kind":"calls","metadata":{"unresolvedName":"handleSelectFolder"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:filterText.toLowerCase","kind":"calls","metadata":{"unresolvedName":"filterText.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:items.filter","kind":"calls","metadata":{"unresolvedName":"items.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:item.name.toLowerCase().startsWith","kind":"calls","metadata":{"unresolvedName":"item.name.toLowerCase().startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:item.name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"item.name.toLowerCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setItems","kind":"calls","metadata":{"unresolvedName":"setItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getPath","kind":"calls","metadata":{"unresolvedName":"getPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:path.endsWith","kind":"calls","metadata":{"unresolvedName":"path.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setInputValue","kind":"calls","metadata":{"unresolvedName":"setInputValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:inputRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"inputRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:initPath","kind":"calls","metadata":{"unresolvedName":"initPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setItems","kind":"calls","metadata":{"unresolvedName":"setItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getPath","kind":"calls","metadata":{"unresolvedName":"getPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:path.endsWith","kind":"calls","metadata":{"unresolvedName":"path.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setInputValue","kind":"calls","metadata":{"unresolvedName":"setInputValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:inputRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"inputRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:initPath","kind":"calls","metadata":{"unresolvedName":"initPath"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:initPath","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:initPath","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:initPath","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getPath","kind":"calls","metadata":{"unresolvedName":"getPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:initPath","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:initPath","to":"external:path.endsWith","kind":"calls","metadata":{"unresolvedName":"path.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:initPath","to":"symbol-name:setInputValue","kind":"calls","metadata":{"unresolvedName":"setInputValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:initPath","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:initPath","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:initPath","to":"external:inputRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"inputRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:listDirectory(currentDir)\r\n .then","kind":"calls","metadata":{"unresolvedName":"listDirectory(currentDir)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","kind":"calls","metadata":{"unresolvedName":"listDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:nodes\r\n .filter","kind":"calls","metadata":{"unresolvedName":"nodes\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:n.name.startsWith","kind":"calls","metadata":{"unresolvedName":"n.name.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:a.name.localeCompare","kind":"calls","metadata":{"unresolvedName":"a.name.localeCompare"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setItems","kind":"calls","metadata":{"unresolvedName":"setItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:fileItems.findIndex","kind":"calls","metadata":{"unresolvedName":"fileItems.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:fileErrorHandler","kind":"calls","metadata":{"unresolvedName":"fileErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:listDirectory(currentDir)\r\n .then","kind":"calls","metadata":{"unresolvedName":"listDirectory(currentDir)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","kind":"calls","metadata":{"unresolvedName":"listDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:nodes\r\n .filter","kind":"calls","metadata":{"unresolvedName":"nodes\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:n.name.startsWith","kind":"calls","metadata":{"unresolvedName":"n.name.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:a.name.localeCompare","kind":"calls","metadata":{"unresolvedName":"a.name.localeCompare"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setItems","kind":"calls","metadata":{"unresolvedName":"setItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:fileItems.findIndex","kind":"calls","metadata":{"unresolvedName":"fileItems.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:fileErrorHandler","kind":"calls","metadata":{"unresolvedName":"fileErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:nodes\r\n .filter","kind":"calls","metadata":{"unresolvedName":"nodes\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:n.name.startsWith","kind":"calls","metadata":{"unresolvedName":"n.name.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:a.name.localeCompare","kind":"calls","metadata":{"unresolvedName":"a.name.localeCompare"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setItems","kind":"calls","metadata":{"unresolvedName":"setItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:fileItems.findIndex","kind":"calls","metadata":{"unresolvedName":"fileItems.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:fileErrorHandler","kind":"calls","metadata":{"unresolvedName":"fileErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setItems","kind":"calls","metadata":{"unresolvedName":"setItems"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:el?.scrollIntoView","kind":"calls","metadata":{"unresolvedName":"el?.scrollIntoView"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:current.endsWith","kind":"calls","metadata":{"unresolvedName":"current.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:getDirectoryPath","kind":"calls","metadata":{"unresolvedName":"getDirectoryPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:current.slice","kind":"calls","metadata":{"unresolvedName":"current.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:current.split(PATH_SEP).pop","kind":"calls","metadata":{"unresolvedName":"current.split(PATH_SEP).pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:current.split","kind":"calls","metadata":{"unresolvedName":"current.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setInputValue","kind":"calls","metadata":{"unresolvedName":"setInputValue"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setInputValue","kind":"calls","metadata":{"unresolvedName":"setInputValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:inputRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"inputRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:path.endsWith","kind":"calls","metadata":{"unresolvedName":"path.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:/^[a-zA-Z]:\\/$/.test","kind":"calls","metadata":{"unresolvedName":"/^[a-zA-Z]:\\/$/.test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:path.slice","kind":"calls","metadata":{"unresolvedName":"path.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setInputValue","kind":"calls","metadata":{"unresolvedName":"setInputValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:inputValue.endsWith","kind":"calls","metadata":{"unresolvedName":"inputValue.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:handleGoBack","kind":"calls","metadata":{"unresolvedName":"handleGoBack"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:path.endsWith","kind":"calls","metadata":{"unresolvedName":"path.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:/^[a-zA-Z]:\\/$/.test","kind":"calls","metadata":{"unresolvedName":"/^[a-zA-Z]:\\/$/.test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:path.slice","kind":"calls","metadata":{"unresolvedName":"path.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setInputValue","kind":"calls","metadata":{"unresolvedName":"setInputValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:handleGoBack","kind":"calls","metadata":{"unresolvedName":"handleGoBack"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:inputRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"inputRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:","to":"symbol-name:handleSelectFolder","kind":"calls","metadata":{"unresolvedName":"handleSelectFolder"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ListItem","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx:ListItem","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewport","kind":"calls","metadata":{"unresolvedName":"useChatViewport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"external:request.questions.forEach","kind":"calls","metadata":{"unresolvedName":"request.questions.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"symbol-name:setAnswers","kind":"calls","metadata":{"unresolvedName":"setAnswers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"external:newMap.set","kind":"calls","metadata":{"unresolvedName":"newMap.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"symbol-name:setCustomEnabled","kind":"calls","metadata":{"unresolvedName":"setCustomEnabled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"external:prev.get","kind":"calls","metadata":{"unresolvedName":"prev.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"external:current.has","kind":"calls","metadata":{"unresolvedName":"current.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"external:current.delete","kind":"calls","metadata":{"unresolvedName":"current.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"external:current.add","kind":"calls","metadata":{"unresolvedName":"current.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"symbol-name:setCustomValues","kind":"calls","metadata":{"unresolvedName":"setCustomValues"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"external:request.questions.map","kind":"calls","metadata":{"unresolvedName":"request.questions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"external:answers.get","kind":"calls","metadata":{"unresolvedName":"answers.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"external:customEnabled.get","kind":"calls","metadata":{"unresolvedName":"customEnabled.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"external:customValues.get(idx)?.trim","kind":"calls","metadata":{"unresolvedName":"customValues.get(idx)?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"external:customValues.get","kind":"calls","metadata":{"unresolvedName":"customValues.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"symbol-name:onReply","kind":"calls","metadata":{"unresolvedName":"onReply"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"external:request.questions.every","kind":"calls","metadata":{"unresolvedName":"request.questions.every"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"symbol-name:onReject","kind":"calls","metadata":{"unresolvedName":"onReject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"external:keybindingStore.getKey","kind":"calls","metadata":{"unresolvedName":"keybindingStore.getKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:matchesKeybinding","kind":"calls","metadata":{"unresolvedName":"matchesKeybinding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"symbol-name:handleSubmit","kind":"calls","metadata":{"unresolvedName":"handleSubmit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:usePresence","kind":"calls","metadata":{"unresolvedName":"usePresence"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"symbol-name:onCollapsedChange","kind":"calls","metadata":{"unresolvedName":"onCollapsedChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"symbol-name:selectOption","kind":"calls","metadata":{"unresolvedName":"selectOption"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"symbol-name:selectCustom","kind":"calls","metadata":{"unresolvedName":"selectCustom"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"symbol-name:toggleOption","kind":"calls","metadata":{"unresolvedName":"toggleOption"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"symbol-name:toggleCustom","kind":"calls","metadata":{"unresolvedName":"toggleCustom"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionDialog","to":"symbol-name:updateCustomValue","kind":"calls","metadata":{"unresolvedName":"updateCustomValue"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:request.questions.forEach","kind":"calls","metadata":{"unresolvedName":"request.questions.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:request.questions.forEach","kind":"calls","metadata":{"unresolvedName":"request.questions.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:request.questions.forEach","kind":"calls","metadata":{"unresolvedName":"request.questions.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"symbol-name:setAnswers","kind":"calls","metadata":{"unresolvedName":"setAnswers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:newMap.set","kind":"calls","metadata":{"unresolvedName":"newMap.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"symbol-name:setCustomEnabled","kind":"calls","metadata":{"unresolvedName":"setCustomEnabled"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:newMap.set","kind":"calls","metadata":{"unresolvedName":"newMap.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:newMap.set","kind":"calls","metadata":{"unresolvedName":"newMap.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"symbol-name:setAnswers","kind":"calls","metadata":{"unresolvedName":"setAnswers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:newMap.set","kind":"calls","metadata":{"unresolvedName":"newMap.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"symbol-name:setCustomEnabled","kind":"calls","metadata":{"unresolvedName":"setCustomEnabled"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:newMap.set","kind":"calls","metadata":{"unresolvedName":"newMap.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:newMap.set","kind":"calls","metadata":{"unresolvedName":"newMap.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"symbol-name:setAnswers","kind":"calls","metadata":{"unresolvedName":"setAnswers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:prev.get","kind":"calls","metadata":{"unresolvedName":"prev.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:current.has","kind":"calls","metadata":{"unresolvedName":"current.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:current.delete","kind":"calls","metadata":{"unresolvedName":"current.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:current.add","kind":"calls","metadata":{"unresolvedName":"current.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:newMap.set","kind":"calls","metadata":{"unresolvedName":"newMap.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:prev.get","kind":"calls","metadata":{"unresolvedName":"prev.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:current.has","kind":"calls","metadata":{"unresolvedName":"current.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:current.delete","kind":"calls","metadata":{"unresolvedName":"current.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:current.add","kind":"calls","metadata":{"unresolvedName":"current.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:newMap.set","kind":"calls","metadata":{"unresolvedName":"newMap.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"symbol-name:setCustomEnabled","kind":"calls","metadata":{"unresolvedName":"setCustomEnabled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:newMap.set","kind":"calls","metadata":{"unresolvedName":"newMap.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:prev.get","kind":"calls","metadata":{"unresolvedName":"prev.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:newMap.set","kind":"calls","metadata":{"unresolvedName":"newMap.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:prev.get","kind":"calls","metadata":{"unresolvedName":"prev.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"symbol-name:setCustomValues","kind":"calls","metadata":{"unresolvedName":"setCustomValues"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:newMap.set","kind":"calls","metadata":{"unresolvedName":"newMap.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:newMap.set","kind":"calls","metadata":{"unresolvedName":"newMap.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:request.questions.map","kind":"calls","metadata":{"unresolvedName":"request.questions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:answers.get","kind":"calls","metadata":{"unresolvedName":"answers.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:customEnabled.get","kind":"calls","metadata":{"unresolvedName":"customEnabled.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:customValues.get(idx)?.trim","kind":"calls","metadata":{"unresolvedName":"customValues.get(idx)?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:customValues.get","kind":"calls","metadata":{"unresolvedName":"customValues.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"symbol-name:onReply","kind":"calls","metadata":{"unresolvedName":"onReply"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:answers.get","kind":"calls","metadata":{"unresolvedName":"answers.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:customEnabled.get","kind":"calls","metadata":{"unresolvedName":"customEnabled.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:customValues.get(idx)?.trim","kind":"calls","metadata":{"unresolvedName":"customValues.get(idx)?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:customValues.get","kind":"calls","metadata":{"unresolvedName":"customValues.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:answers.get","kind":"calls","metadata":{"unresolvedName":"answers.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:customEnabled.get","kind":"calls","metadata":{"unresolvedName":"customEnabled.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:customValues.get(idx)?.trim","kind":"calls","metadata":{"unresolvedName":"customValues.get(idx)?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:customValues.get","kind":"calls","metadata":{"unresolvedName":"customValues.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"symbol-name:onReject","kind":"calls","metadata":{"unresolvedName":"onReject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:keybindingStore.getKey","kind":"calls","metadata":{"unresolvedName":"keybindingStore.getKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:matchesKeybinding","kind":"calls","metadata":{"unresolvedName":"matchesKeybinding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"symbol-name:handleSubmit","kind":"calls","metadata":{"unresolvedName":"handleSubmit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionItem","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionItem","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionItem","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionItem","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionItem","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionItem","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionItem","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionItem","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionItem","to":"external:(question.options || []).map","kind":"calls","metadata":{"unresolvedName":"(question.options || []).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionItem","to":"external:selected.has","kind":"calls","metadata":{"unresolvedName":"selected.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionItem","to":"symbol-name:onToggleOption","kind":"calls","metadata":{"unresolvedName":"onToggleOption"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionItem","to":"symbol-name:onSelectOption","kind":"calls","metadata":{"unresolvedName":"onSelectOption"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionItem","to":"symbol-name:onToggleCustom","kind":"calls","metadata":{"unresolvedName":"onToggleCustom"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionItem","to":"symbol-name:onSelectCustom","kind":"calls","metadata":{"unresolvedName":"onSelectCustom"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionItem","to":"symbol-name:onCustomValueChange","kind":"calls","metadata":{"unresolvedName":"onCustomValueChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionItem","to":"symbol-name:adjustTextareaHeight","kind":"calls","metadata":{"unresolvedName":"adjustTextareaHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionItem","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:QuestionItem","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:textareaRef.current.focus","kind":"calls","metadata":{"unresolvedName":"textareaRef.current.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:selected.has","kind":"calls","metadata":{"unresolvedName":"selected.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"symbol-name:onToggleOption","kind":"calls","metadata":{"unresolvedName":"onToggleOption"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"symbol-name:onSelectOption","kind":"calls","metadata":{"unresolvedName":"onSelectOption"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"symbol-name:onCustomValueChange","kind":"calls","metadata":{"unresolvedName":"onCustomValueChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"symbol-name:adjustTextareaHeight","kind":"calls","metadata":{"unresolvedName":"adjustTextareaHeight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"symbol-name:onToggleCustom","kind":"calls","metadata":{"unresolvedName":"onToggleCustom"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:","to":"symbol-name:onSelectCustom","kind":"calls","metadata":{"unresolvedName":"onSelectCustom"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:Indicator","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/QuestionDialog.tsx:Indicator","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:formatRemaining","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:formatRemaining","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:formatRemaining","to":"external:Math.ceil","kind":"calls","metadata":{"unresolvedName":"Math.ceil"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:formatRemaining","to":"external:(ms / 1000).toFixed","kind":"calls","metadata":{"unresolvedName":"(ms / 1000).toFixed"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:useNow","kind":"calls","metadata":{"unresolvedName":"useNow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:","to":"external:Number.isFinite","kind":"calls","metadata":{"unresolvedName":"Number.isFinite"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:formatRemaining","kind":"calls","metadata":{"unresolvedName":"formatRemaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:","to":"symbol-name:Boolean","kind":"calls","metadata":{"unresolvedName":"Boolean"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:","to":"external:status.message?.trim","kind":"calls","metadata":{"unresolvedName":"status.message?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/RetryStatusInline.tsx:","to":"external:Number.isFinite","kind":"calls","metadata":{"unresolvedName":"Number.isFinite"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:ShareDialog","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:ShareDialog","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:ShareDialog","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:ShareDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStore","kind":"calls","metadata":{"unresolvedName":"useMessageStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:ShareDialog","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:ShareDialog","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:ShareDialog","to":"symbol-name:setCopied","kind":"calls","metadata":{"unresolvedName":"setCopied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:ShareDialog","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:ShareDialog","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:ShareDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:shareSession","kind":"calls","metadata":{"unresolvedName":"shareSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:ShareDialog","to":"external:messageStore.setShareUrl","kind":"calls","metadata":{"unresolvedName":"messageStore.setShareUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:ShareDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:ShareDialog","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:ShareDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unshareSession","kind":"calls","metadata":{"unresolvedName":"unshareSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:ShareDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:ShareDialog","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:ShareDialog","to":"symbol-name:clipboardErrorHandler","kind":"calls","metadata":{"unresolvedName":"clipboardErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:","to":"symbol-name:setCopied","kind":"calls","metadata":{"unresolvedName":"setCopied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleShare","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleShare","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleShare","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleShare","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleShare","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:shareSession","kind":"calls","metadata":{"unresolvedName":"shareSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleShare","to":"external:messageStore.setShareUrl","kind":"calls","metadata":{"unresolvedName":"messageStore.setShareUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleShare","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleShare","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleUnshare","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleUnshare","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleUnshare","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleUnshare","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleUnshare","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unshareSession","kind":"calls","metadata":{"unresolvedName":"unshareSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleUnshare","to":"external:messageStore.setShareUrl","kind":"calls","metadata":{"unresolvedName":"messageStore.setShareUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleUnshare","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleUnshare","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleCopy","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleCopy","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleCopy","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleCopy","to":"symbol-name:setCopied","kind":"calls","metadata":{"unresolvedName":"setCopied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleCopy","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx:handleCopy","to":"symbol-name:clipboardErrorHandler","kind":"calls","metadata":{"unresolvedName":"clipboardErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:ActiveSessionItem","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:ActiveSessionItem","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:ActiveSessionItem","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:ActiveSessionItem","to":"external:entry.sessionId.slice","kind":"calls","metadata":{"unresolvedName":"entry.sessionId.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:ActiveSessionItem","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:ActiveSessionItem","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:ActiveSessionItem","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:ActiveSessionItem","to":"external:e.dataTransfer.setData","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.setData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:ActiveSessionItem","to":"external:directory.replace(/\\\\/g, '/').split('/').filter(Boolean).pop","kind":"calls","metadata":{"unresolvedName":"directory.replace(/\\\\/g, '/').split('/').filter(Boolean).pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:ActiveSessionItem","to":"external:directory.replace(/\\\\/g, '/').split('/').filter","kind":"calls","metadata":{"unresolvedName":"directory.replace(/\\\\/g, '/').split('/').filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:ActiveSessionItem","to":"external:directory.replace(/\\\\/g, '/').split","kind":"calls","metadata":{"unresolvedName":"directory.replace(/\\\\/g, '/').split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:ActiveSessionItem","to":"external:directory.replace","kind":"calls","metadata":{"unresolvedName":"directory.replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:handleClick","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:handleClick","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:handleClick","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:handleDragStart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:handleDragStart","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:handleDragStart","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx:handleDragStart","to":"external:e.dataTransfer.setData","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.setData"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:makeEntry","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:makeEntry","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:makeEntry","kind":"calls","metadata":{"unresolvedName":"makeEntry"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts:buildActiveSessionTree","kind":"calls","metadata":{"unresolvedName":"buildActiveSessionTree"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"external:expect(tree.rootEntries).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(tree.rootEntries).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"external:expect(tree.childrenByParent.get('root')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(tree.childrenByParent.get('root')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"external:tree.childrenByParent.get","kind":"calls","metadata":{"unresolvedName":"tree.childrenByParent.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"external:expect(tree.childrenByParent.get('child')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(tree.childrenByParent.get('child')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"external:expect(tree.childrenByParent.size).toBe","kind":"calls","metadata":{"unresolvedName":"expect(tree.childrenByParent.size).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:makeEntry","kind":"calls","metadata":{"unresolvedName":"makeEntry"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts:buildActiveSessionTree","kind":"calls","metadata":{"unresolvedName":"buildActiveSessionTree"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"external:expect(tree.rootEntries).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(tree.rootEntries).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"external:expect(tree.childrenByParent.get('root')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(tree.childrenByParent.get('root')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"external:tree.childrenByParent.get","kind":"calls","metadata":{"unresolvedName":"tree.childrenByParent.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"external:expect(tree.childrenByParent.get('child')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(tree.childrenByParent.get('child')).toEqual"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:makeEntry","kind":"calls","metadata":{"unresolvedName":"makeEntry"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts:buildActiveSessionTree","kind":"calls","metadata":{"unresolvedName":"buildActiveSessionTree"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"external:expect(tree.rootEntries).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(tree.rootEntries).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","to":"external:expect(tree.childrenByParent.size).toBe","kind":"calls","metadata":{"unresolvedName":"expect(tree.childrenByParent.size).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.test.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts:buildActiveSessionTree","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts:buildActiveSessionTree","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts:buildActiveSessionTree","to":"external:busySessions.map","kind":"calls","metadata":{"unresolvedName":"busySessions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts:buildActiveSessionTree","to":"symbol-name:findParentId","kind":"calls","metadata":{"unresolvedName":"findParentId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts:buildActiveSessionTree","to":"external:busySessionIds.has","kind":"calls","metadata":{"unresolvedName":"busySessionIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts:buildActiveSessionTree","to":"external:rootEntries.push","kind":"calls","metadata":{"unresolvedName":"rootEntries.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts:buildActiveSessionTree","to":"external:childrenByParent.get","kind":"calls","metadata":{"unresolvedName":"childrenByParent.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts:buildActiveSessionTree","to":"external:siblings.push","kind":"calls","metadata":{"unresolvedName":"siblings.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts:buildActiveSessionTree","to":"external:childrenByParent.set","kind":"calls","metadata":{"unresolvedName":"childrenByParent.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"module:../../../assets/models.json?url","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:tokenTotal","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:tokenTotal","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:formatTimestamp","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:formatTimestamp","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:formatTimestamp","to":"external:Number.isNaN","kind":"calls","metadata":{"unresolvedName":"Number.isNaN"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:formatTimestamp","to":"external:d.getTime","kind":"calls","metadata":{"unresolvedName":"d.getTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:formatTimestamp","to":"external:d.toLocaleString","kind":"calls","metadata":{"unresolvedName":"d.toLocaleString"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:Stat","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:Stat","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:StatCard","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:StatCard","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:joinList","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:joinList","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:joinList","to":"external:values.join","kind":"calls","metadata":{"unresolvedName":"values.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:modelLabel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:modelLabel","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:modelLabel","to":"external:name.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"name.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:modelLabel","to":"external:name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"name.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:modelLabel","to":"external:id.toLowerCase","kind":"calls","metadata":{"unresolvedName":"id.toLowerCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:useOpenRouterMetadata","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:useOpenRouterMetadata","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:useOpenRouterMetadata","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:useOpenRouterMetadata","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:useOpenRouterMetadata","to":"external:fetch(modelsCatalogUrl)\n .then","kind":"calls","metadata":{"unresolvedName":"fetch(modelsCatalogUrl)\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:useOpenRouterMetadata","to":"symbol-name:fetch","kind":"calls","metadata":{"unresolvedName":"fetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:useOpenRouterMetadata","to":"external:response.json","kind":"calls","metadata":{"unresolvedName":"response.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:useOpenRouterMetadata","to":"external:Promise.reject","kind":"calls","metadata":{"unresolvedName":"Promise.reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:useOpenRouterMetadata","to":"symbol-name:setCatalog","kind":"calls","metadata":{"unresolvedName":"setCatalog"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:useOpenRouterMetadata","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:useOpenRouterMetadata","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:useOpenRouterMetadata","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:selectOpenRouterModel","kind":"calls","metadata":{"unresolvedName":"selectOpenRouterModel"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","to":"external:fetch(modelsCatalogUrl)\n .then","kind":"calls","metadata":{"unresolvedName":"fetch(modelsCatalogUrl)\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","to":"symbol-name:fetch","kind":"calls","metadata":{"unresolvedName":"fetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","to":"external:response.json","kind":"calls","metadata":{"unresolvedName":"response.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","to":"external:Promise.reject","kind":"calls","metadata":{"unresolvedName":"Promise.reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","to":"symbol-name:setCatalog","kind":"calls","metadata":{"unresolvedName":"setCatalog"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","to":"symbol-name:setCatalog","kind":"calls","metadata":{"unresolvedName":"setCatalog"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","to":"symbol-name:setCatalog","kind":"calls","metadata":{"unresolvedName":"setCatalog"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:selectOpenRouterModel","kind":"calls","metadata":{"unresolvedName":"selectOpenRouterModel"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStore","kind":"calls","metadata":{"unresolvedName":"useMessageStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"symbol-name:tokenTotal","kind":"calls","metadata":{"unresolvedName":"tokenTotal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:useOpenRouterMetadata","kind":"calls","metadata":{"unresolvedName":"useOpenRouterMetadata"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:getModelProviderLabel","kind":"calls","metadata":{"unresolvedName":"getModelProviderLabel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:modelLabel","kind":"calls","metadata":{"unresolvedName":"modelLabel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"external:supportedParameters.filter","kind":"calls","metadata":{"unresolvedName":"supportedParameters.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"external:['tools', 'reasoning', 'response_format', 'structured_outputs'].includes","kind":"calls","metadata":{"unresolvedName":"['tools', 'reasoning', 'response_format', 'structured_outputs'].includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"symbol-name:setExpandedId","kind":"calls","metadata":{"unresolvedName":"setExpandedId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatTokens","kind":"calls","metadata":{"unresolvedName":"formatTokens"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCost","kind":"calls","metadata":{"unresolvedName":"formatCost"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:joinList","kind":"calls","metadata":{"unresolvedName":"joinList"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:formatOpenRouterPricePerMillion","kind":"calls","metadata":{"unresolvedName":"formatOpenRouterPricePerMillion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"external:featuredParameters.join","kind":"calls","metadata":{"unresolvedName":"featuredParameters.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"external:supportedParameters.join","kind":"calls","metadata":{"unresolvedName":"supportedParameters.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:formatTimestamp","kind":"calls","metadata":{"unresolvedName":"formatTimestamp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"external:messages.map","kind":"calls","metadata":{"unresolvedName":"messages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"symbol-name:handleToggleMessage","kind":"calls","metadata":{"unresolvedName":"handleToggleMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:ContextDetailsDialog","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","to":"symbol-name:tokenTotal","kind":"calls","metadata":{"unresolvedName":"tokenTotal"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","to":"symbol-name:setExpandedId","kind":"calls","metadata":{"unresolvedName":"setExpandedId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:formatTimestamp","kind":"calls","metadata":{"unresolvedName":"formatTimestamp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","to":"symbol-name:tokenTotal","kind":"calls","metadata":{"unresolvedName":"tokenTotal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","to":"symbol-name:handleToggleMessage","kind":"calls","metadata":{"unresolvedName":"handleToggleMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatTokens","kind":"calls","metadata":{"unresolvedName":"formatTokens"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCost","kind":"calls","metadata":{"unresolvedName":"formatCost"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:matchesAnyDirectory","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:matchesAnyDirectory","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:matchesAnyDirectory","to":"external:candidates.some","kind":"calls","metadata":{"unresolvedName":"candidates.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:matchesAnyDirectory","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:buildFolderStatus","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:buildFolderStatus","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:buildFolderStatus","to":"external:busySessions.filter","kind":"calls","metadata":{"unresolvedName":"busySessions.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:buildFolderStatus","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:matchesAnyDirectory","kind":"calls","metadata":{"unresolvedName":"matchesAnyDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:buildFolderStatus","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:buildFolderStatus","to":"external:notifications.some","kind":"calls","metadata":{"unresolvedName":"notifications.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:getInitialExpandedProjectIds","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:getInitialExpandedProjectIds","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:getInitialExpandedProjectIds","to":"external:projects.find","kind":"calls","metadata":{"unresolvedName":"projects.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:getInitialExpandedProjectIds","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:areProjectIdListsEqual","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:areProjectIdListsEqual","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:areProjectIdListsEqual","to":"external:left.every","kind":"calls","metadata":{"unresolvedName":"left.every"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:getCurrentProjectId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:getCurrentProjectId","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:getCurrentProjectId","to":"external:projects.find","kind":"calls","metadata":{"unresolvedName":"projects.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:getCurrentProjectId","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:reconcileExpandedProjectIds","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:reconcileExpandedProjectIds","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:reconcileExpandedProjectIds","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:reconcileExpandedProjectIds","to":"external:projects.some","kind":"calls","metadata":{"unresolvedName":"projects.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:reconcileExpandedProjectIds","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:getInitialExpandedProjectIds","kind":"calls","metadata":{"unresolvedName":"getInitialExpandedProjectIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:reconcileExpandedProjectIds","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:areProjectIdListsEqual","kind":"calls","metadata":{"unresolvedName":"areProjectIdListsEqual"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:expandProjectId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:expandProjectId","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:expandProjectId","to":"external:prev.includes","kind":"calls","metadata":{"unresolvedName":"prev.includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:toggleProjectId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:toggleProjectId","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:toggleProjectId","to":"external:prev.includes","kind":"calls","metadata":{"unresolvedName":"prev.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:toggleProjectId","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:createDirectoryProject","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:createDirectoryProject","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:createDirectoryProject","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDirectoryName","kind":"calls","metadata":{"unresolvedName":"getDirectoryName"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useCollapseExpandedIdsOnDrag","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useCollapseExpandedIdsOnDrag","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useCollapseExpandedIdsOnDrag","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useCollapseExpandedIdsOnDrag","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useCollapseExpandedIdsOnDrag","to":"symbol-name:setExpandedIds","kind":"calls","metadata":{"unresolvedName":"setExpandedIds"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:setExpandedIds","kind":"calls","metadata":{"unresolvedName":"setExpandedIds"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:setExpandedIds","kind":"calls","metadata":{"unresolvedName":"setExpandedIds"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"external:refs.current.get","kind":"calls","metadata":{"unresolvedName":"refs.current.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"external:element.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"element.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"external:items.push","kind":"calls","metadata":{"unresolvedName":"items.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"external:items.map","kind":"calls","metadata":{"unresolvedName":"items.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"external:withoutDragged.splice","kind":"calls","metadata":{"unresolvedName":"withoutDragged.splice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"external:originalOrder.indexOf","kind":"calls","metadata":{"unresolvedName":"originalOrder.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"external:finalOrder.indexOf","kind":"calls","metadata":{"unresolvedName":"finalOrder.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onCommit","kind":"calls","metadata":{"unresolvedName":"onCommit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"symbol-name:setDragState","kind":"calls","metadata":{"unresolvedName":"setDragState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"symbol-name:onDragFinished","kind":"calls","metadata":{"unresolvedName":"onDragFinished"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"symbol-name:canDrag","kind":"calls","metadata":{"unresolvedName":"canDrag"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"external:event.stopPropagation","kind":"calls","metadata":{"unresolvedName":"event.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"symbol-name:onDragActivated","kind":"calls","metadata":{"unresolvedName":"onDragActivated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"symbol-name:calcNewOrder","kind":"calls","metadata":{"unresolvedName":"calcNewOrder"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"symbol-name:finishDrag","kind":"calls","metadata":{"unresolvedName":"finishDrag"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"external:refs.current.set","kind":"calls","metadata":{"unresolvedName":"refs.current.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","to":"external:refs.current.delete","kind":"calls","metadata":{"unresolvedName":"refs.current.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:refs.current.get","kind":"calls","metadata":{"unresolvedName":"refs.current.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:element.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"element.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:items.push","kind":"calls","metadata":{"unresolvedName":"items.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:items.map","kind":"calls","metadata":{"unresolvedName":"items.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:withoutDragged.splice","kind":"calls","metadata":{"unresolvedName":"withoutDragged.splice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:originalOrder.indexOf","kind":"calls","metadata":{"unresolvedName":"originalOrder.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:finalOrder.indexOf","kind":"calls","metadata":{"unresolvedName":"finalOrder.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onCommit","kind":"calls","metadata":{"unresolvedName":"onCommit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:setDragState","kind":"calls","metadata":{"unresolvedName":"setDragState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:onDragFinished","kind":"calls","metadata":{"unresolvedName":"onDragFinished"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:canDrag","kind":"calls","metadata":{"unresolvedName":"canDrag"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:event.stopPropagation","kind":"calls","metadata":{"unresolvedName":"event.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:onDragActivated","kind":"calls","metadata":{"unresolvedName":"onDragActivated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:setDragState","kind":"calls","metadata":{"unresolvedName":"setDragState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:calcNewOrder","kind":"calls","metadata":{"unresolvedName":"calcNewOrder"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:finishDrag","kind":"calls","metadata":{"unresolvedName":"finishDrag"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onMove","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onMove","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onMove","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onMove","to":"symbol-name:onDragActivated","kind":"calls","metadata":{"unresolvedName":"onDragActivated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onMove","to":"symbol-name:setDragState","kind":"calls","metadata":{"unresolvedName":"setDragState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onMove","to":"symbol-name:calcNewOrder","kind":"calls","metadata":{"unresolvedName":"calcNewOrder"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onUp","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onUp","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onUp","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onUp","to":"symbol-name:finishDrag","kind":"calls","metadata":{"unresolvedName":"finishDrag"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:canDrag","kind":"calls","metadata":{"unresolvedName":"canDrag"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:onDragActivated","kind":"calls","metadata":{"unresolvedName":"onDragActivated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:setDragState","kind":"calls","metadata":{"unresolvedName":"setDragState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:onDragActivated","kind":"calls","metadata":{"unresolvedName":"onDragActivated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:setDragState","kind":"calls","metadata":{"unresolvedName":"setDragState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:event.stopPropagation","kind":"calls","metadata":{"unresolvedName":"event.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:calcNewOrder","kind":"calls","metadata":{"unresolvedName":"calcNewOrder"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:setDragState","kind":"calls","metadata":{"unresolvedName":"setDragState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:finishDrag","kind":"calls","metadata":{"unresolvedName":"finishDrag"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:registerRef","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:registerRef","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:registerRef","to":"external:refs.current.set","kind":"calls","metadata":{"unresolvedName":"refs.current.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:registerRef","to":"external:refs.current.delete","kind":"calls","metadata":{"unresolvedName":"refs.current.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","kind":"calls","metadata":{"unresolvedName":"useInputCapabilities"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"calls","metadata":{"unresolvedName":"useLayoutStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useBusySessions","kind":"calls","metadata":{"unresolvedName":"useBusySessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useNotifications","kind":"calls","metadata":{"unresolvedName":"useNotifications"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"external:projects.map","kind":"calls","metadata":{"unresolvedName":"projects.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useCollapseExpandedIdsOnDrag","kind":"calls","metadata":{"unresolvedName":"useCollapseExpandedIdsOnDrag"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"symbol-name:onExpandedProjectIdsChange","kind":"calls","metadata":{"unresolvedName":"onExpandedProjectIdsChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:reconcileExpandedProjectIds","kind":"calls","metadata":{"unresolvedName":"reconcileExpandedProjectIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:expandProjectId","kind":"calls","metadata":{"unresolvedName":"expandProjectId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:getCurrentProjectId","kind":"calls","metadata":{"unresolvedName":"getCurrentProjectId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:toggleProjectId","kind":"calls","metadata":{"unresolvedName":"toggleProjectId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","kind":"calls","metadata":{"unresolvedName":"useReorderableList"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"external:projectById.get","kind":"calls","metadata":{"unresolvedName":"projectById.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"symbol-name:onReorderProject","kind":"calls","metadata":{"unresolvedName":"onReorderProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"symbol-name:onSelectProject","kind":"calls","metadata":{"unresolvedName":"onSelectProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:createDirectoryProject","kind":"calls","metadata":{"unresolvedName":"createDirectoryProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"external:expandedProjectIds.includes","kind":"calls","metadata":{"unresolvedName":"expandedProjectIds.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"external:workspaceDirectoriesByProjectId?.get","kind":"calls","metadata":{"unresolvedName":"workspaceDirectoriesByProjectId?.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:buildFolderStatus","kind":"calls","metadata":{"unresolvedName":"buildFolderStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"external:workspaceDirectoriesByProjectId?.forEach","kind":"calls","metadata":{"unresolvedName":"workspaceDirectoriesByProjectId?.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"external:directories.forEach","kind":"calls","metadata":{"unresolvedName":"directories.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"external:workspaceDirectories.add","kind":"calls","metadata":{"unresolvedName":"workspaceDirectories.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"external:displayOrder.map","kind":"calls","metadata":{"unresolvedName":"displayOrder.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"external:folderStatusByProjectId.get","kind":"calls","metadata":{"unresolvedName":"folderStatusByProjectId.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleSelectDirectory","kind":"calls","metadata":{"unresolvedName":"handleSelectDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"symbol-name:handleToggleProject","kind":"calls","metadata":{"unresolvedName":"handleToggleProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"symbol-name:handlePointerStart","kind":"calls","metadata":{"unresolvedName":"handlePointerStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchStart","kind":"calls","metadata":{"unresolvedName":"handleTouchStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:registerRef","kind":"calls","metadata":{"unresolvedName":"registerRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"external:selectedProjectIds?.has","kind":"calls","metadata":{"unresolvedName":"selectedProjectIds?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"symbol-name:onToggleProjectSelection","kind":"calls","metadata":{"unresolvedName":"onToggleProjectSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"symbol-name:setPendingDelete","kind":"calls","metadata":{"unresolvedName":"setPendingDelete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"symbol-name:onDeleteSession","kind":"calls","metadata":{"unresolvedName":"onDeleteSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentList","to":"external:pendingDelete.removeLocal","kind":"calls","metadata":{"unresolvedName":"pendingDelete.removeLocal"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:onExpandedProjectIdsChange","kind":"calls","metadata":{"unresolvedName":"onExpandedProjectIdsChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:reconcileExpandedProjectIds","kind":"calls","metadata":{"unresolvedName":"reconcileExpandedProjectIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:expandProjectId","kind":"calls","metadata":{"unresolvedName":"expandProjectId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:getCurrentProjectId","kind":"calls","metadata":{"unresolvedName":"getCurrentProjectId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:reconcileExpandedProjectIds","kind":"calls","metadata":{"unresolvedName":"reconcileExpandedProjectIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:expandProjectId","kind":"calls","metadata":{"unresolvedName":"expandProjectId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:getCurrentProjectId","kind":"calls","metadata":{"unresolvedName":"getCurrentProjectId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onCommit","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onCommit","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onCommit","to":"external:projectById.get","kind":"calls","metadata":{"unresolvedName":"projectById.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onCommit","to":"symbol-name:onReorderProject","kind":"calls","metadata":{"unresolvedName":"onReorderProject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:onSelectProject","kind":"calls","metadata":{"unresolvedName":"onSelectProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:createDirectoryProject","kind":"calls","metadata":{"unresolvedName":"createDirectoryProject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:expandedProjectIds.includes","kind":"calls","metadata":{"unresolvedName":"expandedProjectIds.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:workspaceDirectoriesByProjectId?.get","kind":"calls","metadata":{"unresolvedName":"workspaceDirectoriesByProjectId?.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:buildFolderStatus","kind":"calls","metadata":{"unresolvedName":"buildFolderStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:workspaceDirectoriesByProjectId?.forEach","kind":"calls","metadata":{"unresolvedName":"workspaceDirectoriesByProjectId?.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:directories.forEach","kind":"calls","metadata":{"unresolvedName":"directories.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:workspaceDirectories.add","kind":"calls","metadata":{"unresolvedName":"workspaceDirectories.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:buildFolderStatus","kind":"calls","metadata":{"unresolvedName":"buildFolderStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:directories.forEach","kind":"calls","metadata":{"unresolvedName":"directories.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:workspaceDirectories.add","kind":"calls","metadata":{"unresolvedName":"workspaceDirectories.add"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:projectById.get","kind":"calls","metadata":{"unresolvedName":"projectById.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:expandedProjectIds.includes","kind":"calls","metadata":{"unresolvedName":"expandedProjectIds.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:folderStatusByProjectId.get","kind":"calls","metadata":{"unresolvedName":"folderStatusByProjectId.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/EmptyState.tsx:handleSelectDirectory","kind":"calls","metadata":{"unresolvedName":"handleSelectDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:handleToggleProject","kind":"calls","metadata":{"unresolvedName":"handleToggleProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:workspaceDirectoriesByProjectId?.get","kind":"calls","metadata":{"unresolvedName":"workspaceDirectoriesByProjectId?.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:handlePointerStart","kind":"calls","metadata":{"unresolvedName":"handlePointerStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchStart","kind":"calls","metadata":{"unresolvedName":"handleTouchStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:registerRef","kind":"calls","metadata":{"unresolvedName":"registerRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:selectedProjectIds?.has","kind":"calls","metadata":{"unresolvedName":"selectedProjectIds?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:onToggleProjectSelection","kind":"calls","metadata":{"unresolvedName":"onToggleProjectSelection"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:onDeleteSession","kind":"calls","metadata":{"unresolvedName":"onDeleteSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:pendingDelete.removeLocal","kind":"calls","metadata":{"unresolvedName":"pendingDelete.removeLocal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:setPendingDelete","kind":"calls","metadata":{"unresolvedName":"setPendingDelete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:useInView","kind":"calls","metadata":{"unresolvedName":"useInView"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDirectoryName","kind":"calls","metadata":{"unresolvedName":"getDirectoryName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:useVcsInfo","kind":"calls","metadata":{"unresolvedName":"useVcsInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"symbol-name:setHasActivated","kind":"calls","metadata":{"unresolvedName":"setHasActivated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","kind":"calls","metadata":{"unresolvedName":"useSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"external:sessions.find","kind":"calls","metadata":{"unresolvedName":"sessions.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"symbol-name:onRenameSession","kind":"calls","metadata":{"unresolvedName":"onRenameSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"symbol-name:patchLocalSession","kind":"calls","metadata":{"unresolvedName":"patchLocalSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"symbol-name:onRequestDeleteSession","kind":"calls","metadata":{"unresolvedName":"onRequestDeleteSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"symbol-name:removeLocalSession","kind":"calls","metadata":{"unresolvedName":"removeLocalSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"symbol-name:onToggleProjectCheck","kind":"calls","metadata":{"unresolvedName":"onToggleProjectCheck"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"symbol-name:onSelectProject","kind":"calls","metadata":{"unresolvedName":"onSelectProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"symbol-name:onToggle","kind":"calls","metadata":{"unresolvedName":"onToggle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"external:sessions.map","kind":"calls","metadata":{"unresolvedName":"sessions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"symbol-name:onSelectSession","kind":"calls","metadata":{"unresolvedName":"onSelectSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleRename","kind":"calls","metadata":{"unresolvedName":"handleRename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleDelete","kind":"calls","metadata":{"unresolvedName":"handleDelete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"external:selectedSessionIds?.has","kind":"calls","metadata":{"unresolvedName":"selectedSessionIds?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"symbol-name:onToggleSessionSelection","kind":"calls","metadata":{"unresolvedName":"onToggleSessionSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"external:expandedChildSessionIds?.has","kind":"calls","metadata":{"unresolvedName":"expandedChildSessionIds?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"external:inlineChildSessions?.has","kind":"calls","metadata":{"unresolvedName":"inlineChildSessions?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"external:inlineChildSessions?.get","kind":"calls","metadata":{"unresolvedName":"inlineChildSessions?.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:FolderRecentSection","to":"symbol-name:loadMore","kind":"calls","metadata":{"unresolvedName":"loadMore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:setHasActivated","kind":"calls","metadata":{"unresolvedName":"setHasActivated"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:sessions.find","kind":"calls","metadata":{"unresolvedName":"sessions.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:onRenameSession","kind":"calls","metadata":{"unresolvedName":"onRenameSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:patchLocalSession","kind":"calls","metadata":{"unresolvedName":"patchLocalSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:sessions.find","kind":"calls","metadata":{"unresolvedName":"sessions.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:onRequestDeleteSession","kind":"calls","metadata":{"unresolvedName":"onRequestDeleteSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:removeLocalSession","kind":"calls","metadata":{"unresolvedName":"removeLocalSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:handleProjectCheckClick","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:handleProjectCheckClick","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:handleProjectCheckClick","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:handleProjectCheckClick","to":"symbol-name:onToggleProjectCheck","kind":"calls","metadata":{"unresolvedName":"onToggleProjectCheck"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:onSelectProject","kind":"calls","metadata":{"unresolvedName":"onSelectProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:onToggle","kind":"calls","metadata":{"unresolvedName":"onToggle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"external:(draggableWorkspaceDirectories ?? []).map","kind":"calls","metadata":{"unresolvedName":"(draggableWorkspaceDirectories ?? []).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"external:workspaceDirectories.map","kind":"calls","metadata":{"unresolvedName":"workspaceDirectories.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:createDirectoryProject","kind":"calls","metadata":{"unresolvedName":"createDirectoryProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"external:draggableSet.has","kind":"calls","metadata":{"unresolvedName":"draggableSet.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"external:workspaceProjects.map","kind":"calls","metadata":{"unresolvedName":"workspaceProjects.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:getInitialExpandedProjectIds","kind":"calls","metadata":{"unresolvedName":"getInitialExpandedProjectIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:expandProjectId","kind":"calls","metadata":{"unresolvedName":"expandProjectId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:reconcileExpandedProjectIds","kind":"calls","metadata":{"unresolvedName":"reconcileExpandedProjectIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:getCurrentProjectId","kind":"calls","metadata":{"unresolvedName":"getCurrentProjectId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useCollapseExpandedIdsOnDrag","kind":"calls","metadata":{"unresolvedName":"useCollapseExpandedIdsOnDrag"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"symbol-name:setWorkspaceExpandedIds","kind":"calls","metadata":{"unresolvedName":"setWorkspaceExpandedIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:toggleProjectId","kind":"calls","metadata":{"unresolvedName":"toggleProjectId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:useReorderableList","kind":"calls","metadata":{"unresolvedName":"useReorderableList"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"external:workspaceById.get","kind":"calls","metadata":{"unresolvedName":"workspaceById.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"symbol-name:onReorderWorkspace","kind":"calls","metadata":{"unresolvedName":"onReorderWorkspace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"external:displayOrder.map","kind":"calls","metadata":{"unresolvedName":"displayOrder.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"external:expandedWorkspaceIds.includes","kind":"calls","metadata":{"unresolvedName":"expandedWorkspaceIds.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"external:folderStatusByWorkspaceDirectory?.get","kind":"calls","metadata":{"unresolvedName":"folderStatusByWorkspaceDirectory?.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"symbol-name:onSelectDirectory","kind":"calls","metadata":{"unresolvedName":"onSelectDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"symbol-name:handleToggleWorkspace","kind":"calls","metadata":{"unresolvedName":"handleToggleWorkspace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"symbol-name:handlePointerStart","kind":"calls","metadata":{"unresolvedName":"handlePointerStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchStart","kind":"calls","metadata":{"unresolvedName":"handleTouchStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:WorkspaceFolderList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:registerRef","kind":"calls","metadata":{"unresolvedName":"registerRef"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:(draggableWorkspaceDirectories ?? []).map","kind":"calls","metadata":{"unresolvedName":"(draggableWorkspaceDirectories ?? []).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:workspaceDirectories.map","kind":"calls","metadata":{"unresolvedName":"workspaceDirectories.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:createDirectoryProject","kind":"calls","metadata":{"unresolvedName":"createDirectoryProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:draggableSet.has","kind":"calls","metadata":{"unresolvedName":"draggableSet.has"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:setWorkspaceExpandedIds","kind":"calls","metadata":{"unresolvedName":"setWorkspaceExpandedIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:toggleProjectId","kind":"calls","metadata":{"unresolvedName":"toggleProjectId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onCommit","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onCommit","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onCommit","to":"external:workspaceById.get","kind":"calls","metadata":{"unresolvedName":"workspaceById.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:onCommit","to":"symbol-name:onReorderWorkspace","kind":"calls","metadata":{"unresolvedName":"onReorderWorkspace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:workspaceById.get","kind":"calls","metadata":{"unresolvedName":"workspaceById.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:expandedWorkspaceIds.includes","kind":"calls","metadata":{"unresolvedName":"expandedWorkspaceIds.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"external:folderStatusByWorkspaceDirectory?.get","kind":"calls","metadata":{"unresolvedName":"folderStatusByWorkspaceDirectory?.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:onSelectDirectory","kind":"calls","metadata":{"unresolvedName":"onSelectDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:handleToggleWorkspace","kind":"calls","metadata":{"unresolvedName":"handleToggleWorkspace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"symbol-name:handlePointerStart","kind":"calls","metadata":{"unresolvedName":"handlePointerStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:handleTouchStart","kind":"calls","metadata":{"unresolvedName":"handleTouchStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx:registerRef","kind":"calls","metadata":{"unresolvedName":"registerRef"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:markReadMock.mockReset","kind":"calls","metadata":{"unresolvedName":"markReadMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:dismissMock.mockReset","kind":"calls","metadata":{"unresolvedName":"dismissMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:expect(markReadMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(markReadMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:expect(onSelect).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onSelect).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:expect(dismissMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(dismissMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:expect(onSelect).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(onSelect).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:expect(row).not.toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(row).not.toBeNull"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:markReadMock.mockReset","kind":"calls","metadata":{"unresolvedName":"markReadMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:dismissMock.mockReset","kind":"calls","metadata":{"unresolvedName":"dismissMock.mockReset"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:expect(markReadMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(markReadMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:expect(onSelect).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onSelect).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:expect(dismissMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(dismissMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:expect(onSelect).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(onSelect).toHaveBeenCalledTimes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:expect(row).not.toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(row).not.toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:expect(markReadMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(markReadMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:expect(onSelect).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onSelect).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.test.tsx:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","kind":"calls","metadata":{"unresolvedName":"useInputCapabilities"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"external:entry.sessionId.slice","kind":"calls","metadata":{"unresolvedName":"entry.sessionId.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"symbol-name:setShowActions","kind":"calls","metadata":{"unresolvedName":"setShowActions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"external:itemRef.current.contains","kind":"calls","metadata":{"unresolvedName":"itemRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"external:notificationStore.markRead","kind":"calls","metadata":{"unresolvedName":"notificationStore.markRead"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"external:notificationStore.dismiss","kind":"calls","metadata":{"unresolvedName":"notificationStore.dismiss"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"symbol-name:setHasFocusWithin","kind":"calls","metadata":{"unresolvedName":"setHasFocusWithin"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"external:itemRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"itemRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"symbol-name:handleClick","kind":"calls","metadata":{"unresolvedName":"handleClick"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts:formatNotificationTime","kind":"calls","metadata":{"unresolvedName":"formatNotificationTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"external:directory.replace(/\\\\/g, '/').split('/').filter(Boolean).pop","kind":"calls","metadata":{"unresolvedName":"directory.replace(/\\\\/g, '/').split('/').filter(Boolean).pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"external:directory.replace(/\\\\/g, '/').split('/').filter","kind":"calls","metadata":{"unresolvedName":"directory.replace(/\\\\/g, '/').split('/').filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"external:directory.replace(/\\\\/g, '/').split","kind":"calls","metadata":{"unresolvedName":"directory.replace(/\\\\/g, '/').split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:NotificationItem","to":"external:directory.replace","kind":"calls","metadata":{"unresolvedName":"directory.replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","to":"symbol-name:setShowActions","kind":"calls","metadata":{"unresolvedName":"setShowActions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","to":"symbol-name:setShowActions","kind":"calls","metadata":{"unresolvedName":"setShowActions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","to":"external:itemRef.current.contains","kind":"calls","metadata":{"unresolvedName":"itemRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","to":"symbol-name:setShowActions","kind":"calls","metadata":{"unresolvedName":"setShowActions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:handleClickOutside","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:handleClickOutside","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:handleClickOutside","to":"external:itemRef.current.contains","kind":"calls","metadata":{"unresolvedName":"itemRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:handleClickOutside","to":"symbol-name:setShowActions","kind":"calls","metadata":{"unresolvedName":"setShowActions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:handleClick","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:handleClick","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:handleClick","to":"symbol-name:setShowActions","kind":"calls","metadata":{"unresolvedName":"setShowActions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:handleClick","to":"external:notificationStore.markRead","kind":"calls","metadata":{"unresolvedName":"notificationStore.markRead"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:handleClick","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:handleDismiss","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:handleDismiss","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:handleDismiss","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:handleDismiss","to":"external:notificationStore.dismiss","kind":"calls","metadata":{"unresolvedName":"notificationStore.dismiss"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","to":"symbol-name:setHasFocusWithin","kind":"calls","metadata":{"unresolvedName":"setHasFocusWithin"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","to":"external:itemRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"itemRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","to":"symbol-name:setHasFocusWithin","kind":"calls","metadata":{"unresolvedName":"setHasFocusWithin"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx:","to":"symbol-name:handleClick","kind":"calls","metadata":{"unresolvedName":"handleClick"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts:getProjectGroupIdentity","kind":"calls","metadata":{"unresolvedName":"getProjectGroupIdentity"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts:","to":"external:expect(getProjectGroupIdentity('/workspace/project-worktree', gitMeta)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(getProjectGroupIdentity('/workspace/project-worktree', gitMeta)).toEqual"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts:getProjectGroupIdentity","kind":"calls","metadata":{"unresolvedName":"getProjectGroupIdentity"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts:","to":"external:expect(getProjectGroupIdentity('/workspace/project-worktree', gitMeta)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(getProjectGroupIdentity('/workspace/project-worktree', gitMeta)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts:getProjectGroupIdentity","kind":"calls","metadata":{"unresolvedName":"getProjectGroupIdentity"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts:isWorkspaceRootDirectory","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts:isWorkspaceRootDirectory","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts:isWorkspaceRootDirectory","to":"external:meta.workspaces.some","kind":"calls","metadata":{"unresolvedName":"meta.workspaces.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts:isWorkspaceRootDirectory","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts:getProjectGroupIdentity","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts:getProjectGroupIdentity","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts:getProjectGroupIdentity","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts:getProjectGroupIdentity","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts:isWorkspaceRootDirectory","kind":"calls","metadata":{"unresolvedName":"isWorkspaceRootDirectory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","kind":"calls","metadata":{"unresolvedName":"useInputCapabilities"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"external:getSessionChildren(parentSession.id, parentSession.directory)\r\n .then","kind":"calls","metadata":{"unresolvedName":"getSessionChildren(parentSession.id, parentSession.directory)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionChildren","kind":"calls","metadata":{"unresolvedName":"getSessionChildren"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"symbol-name:setFetched","kind":"calls","metadata":{"unresolvedName":"setFetched"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:updateSession","kind":"calls","metadata":{"unresolvedName":"updateSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"external:prev.map","kind":"calls","metadata":{"unresolvedName":"prev.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"symbol-name:setDeleteConfirm","kind":"calls","metadata":{"unresolvedName":"setDeleteConfirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"symbol-name:apiDeleteSession","kind":"calls","metadata":{"unresolvedName":"apiDeleteSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"symbol-name:onDeleteSelected","kind":"calls","metadata":{"unresolvedName":"onDeleteSelected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"external:list!.map","kind":"calls","metadata":{"unresolvedName":"list!.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Header.tsx:handleRename","kind":"calls","metadata":{"unresolvedName":"handleRename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"external:selectedSessionIds?.has","kind":"calls","metadata":{"unresolvedName":"selectedSessionIds?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"symbol-name:onToggleSessionSelection","kind":"calls","metadata":{"unresolvedName":"onToggleSessionSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:SessionChildrenSlot","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","to":"external:getSessionChildren(parentSession.id, parentSession.directory)\r\n .then","kind":"calls","metadata":{"unresolvedName":"getSessionChildren(parentSession.id, parentSession.directory)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionChildren","kind":"calls","metadata":{"unresolvedName":"getSessionChildren"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","to":"symbol-name:setFetched","kind":"calls","metadata":{"unresolvedName":"setFetched"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","to":"symbol-name:setFetched","kind":"calls","metadata":{"unresolvedName":"setFetched"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:updateSession","kind":"calls","metadata":{"unresolvedName":"updateSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","to":"symbol-name:setFetched","kind":"calls","metadata":{"unresolvedName":"setFetched"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","to":"external:prev.map","kind":"calls","metadata":{"unresolvedName":"prev.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","to":"symbol-name:setDeleteConfirm","kind":"calls","metadata":{"unresolvedName":"setDeleteConfirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","to":"symbol-name:apiDeleteSession","kind":"calls","metadata":{"unresolvedName":"apiDeleteSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","to":"symbol-name:setFetched","kind":"calls","metadata":{"unresolvedName":"setFetched"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","to":"symbol-name:onDeleteSelected","kind":"calls","metadata":{"unresolvedName":"onDeleteSelected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx:","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"external:react-dom","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ShareDialog.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ContextDetailsDialog.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CircularProgress.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:StatusIndicator","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:StatusIndicator","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:StatusIndicator","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:StatusIndicator","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","kind":"calls","metadata":{"unresolvedName":"useTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"external:Number.isFinite","kind":"calls","metadata":{"unresolvedName":"Number.isFinite"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"external:buttonRef.current.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"buttonRef.current.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"external:containerRef.current.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"containerRef.current.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"symbol-name:setMenuPos","kind":"calls","metadata":{"unresolvedName":"setMenuPos"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"symbol-name:setIsOpen","kind":"calls","metadata":{"unresolvedName":"setIsOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"symbol-name:openMenu","kind":"calls","metadata":{"unresolvedName":"openMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"external:buttonRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"buttonRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"external:menuRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"menuRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"symbol-name:createPortal","kind":"calls","metadata":{"unresolvedName":"createPortal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"symbol-name:setContextDialogOpen","kind":"calls","metadata":{"unresolvedName":"setContextDialogOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatTokens","kind":"calls","metadata":{"unresolvedName":"formatTokens"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCost","kind":"calls","metadata":{"unresolvedName":"formatCost"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"external:(['system', 'light', 'dark'] as const).map","kind":"calls","metadata":{"unresolvedName":"(['system', 'light', 'dark'] as const).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"symbol-name:onThemeChange","kind":"calls","metadata":{"unresolvedName":"onThemeChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:toggleWideMode","kind":"calls","metadata":{"unresolvedName":"toggleWideMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"symbol-name:setShareDialogOpen","kind":"calls","metadata":{"unresolvedName":"setShareDialogOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:SidebarFooter","to":"symbol-name:onOpenSettings","kind":"calls","metadata":{"unresolvedName":"onOpenSettings"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"external:buttonRef.current.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"buttonRef.current.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"external:containerRef.current.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"containerRef.current.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:setMenuPos","kind":"calls","metadata":{"unresolvedName":"setMenuPos"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:setIsOpen","kind":"calls","metadata":{"unresolvedName":"setIsOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:setIsOpen","kind":"calls","metadata":{"unresolvedName":"setIsOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:openMenu","kind":"calls","metadata":{"unresolvedName":"openMenu"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"external:buttonRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"buttonRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"external:menuRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"menuRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:handleClickOutside","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:handleClickOutside","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:handleClickOutside","to":"external:buttonRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"buttonRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:handleClickOutside","to":"external:menuRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"menuRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:handleClickOutside","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:handleEsc","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:handleEsc","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:handleEsc","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:setContextDialogOpen","kind":"calls","metadata":{"unresolvedName":"setContextDialogOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:toggleWideMode","kind":"calls","metadata":{"unresolvedName":"toggleWideMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:setShareDialogOpen","kind":"calls","metadata":{"unresolvedName":"setShareDialogOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx:","to":"symbol-name:onOpenSettings","kind":"calls","metadata":{"unresolvedName":"onOpenSettings"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts:getParentPath","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts:getParentPath","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts:getParentPath","to":"external:fullPath.includes","kind":"calls","metadata":{"unresolvedName":"fullPath.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts:getParentPath","to":"external:fullPath.split","kind":"calls","metadata":{"unresolvedName":"fullPath.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts:getParentPath","to":"external:parts.pop","kind":"calls","metadata":{"unresolvedName":"parts.pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts:getParentPath","to":"external:parts.join","kind":"calls","metadata":{"unresolvedName":"parts.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts:formatNotificationTime","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts:formatNotificationTime","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts:formatNotificationTime","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts:formatNotificationTime","to":"external:Math.floor","kind":"calls","metadata":{"unresolvedName":"Math.floor"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/FolderRecentList.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/ActiveSessionItem.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/NotificationItem.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidebarFooter.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useSessionContext.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:getSelectionRange","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:getSelectionRange","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:getSelectionRange","to":"external:visibleIds.indexOf","kind":"calls","metadata":{"unresolvedName":"visibleIds.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:getSelectionRange","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:getSelectionRange","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:getSelectionRange","to":"external:visibleIds.slice","kind":"calls","metadata":{"unresolvedName":"visibleIds.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:findProjectGroupForDirectory","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:findProjectGroupForDirectory","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:findProjectGroupForDirectory","to":"external:projects.find","kind":"calls","metadata":{"unresolvedName":"projects.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:findProjectGroupForDirectory","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:findProjectGroupForDirectory","to":"external:project.workspaceDirectories?.some","kind":"calls","metadata":{"unresolvedName":"project.workspaceDirectories?.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:findProjectGroupForDirectory","to":"external:project.memberDirectories?.some","kind":"calls","metadata":{"unresolvedName":"project.memberDirectories?.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:project.workspaceDirectories?.some","kind":"calls","metadata":{"unresolvedName":"project.workspaceDirectories?.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:project.memberDirectories?.some","kind":"calls","metadata":{"unresolvedName":"project.memberDirectories?.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useDirectory","kind":"calls","metadata":{"unresolvedName":"useDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:savedDirectories\n .map","kind":"calls","metadata":{"unresolvedName":"savedDirectories\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","kind":"calls","metadata":{"unresolvedName":"useGitWorkspaceCatalog"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:useVcsInfo","kind":"calls","metadata":{"unresolvedName":"useVcsInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"calls","metadata":{"unresolvedName":"useLayoutStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:root.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"root.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:element.getClientRects","kind":"calls","metadata":{"unresolvedName":"element.getClientRects"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:Boolean","kind":"calls","metadata":{"unresolvedName":"Boolean"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:getVisibleSelectionIds","kind":"calls","metadata":{"unresolvedName":"getVisibleSelectionIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:setSelectedSessionIds","kind":"calls","metadata":{"unresolvedName":"setSelectedSessionIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:getSelectionRange","kind":"calls","metadata":{"unresolvedName":"getSelectionRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:next.add","kind":"calls","metadata":{"unresolvedName":"next.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:next.has","kind":"calls","metadata":{"unresolvedName":"next.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:next.delete","kind":"calls","metadata":{"unresolvedName":"next.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:setSelectedProjectIds","kind":"calls","metadata":{"unresolvedName":"setSelectedProjectIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:setIsEditMode","kind":"calls","metadata":{"unresolvedName":"setIsEditMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingLabel","kind":"calls","metadata":{"unresolvedName":"useKeybindingLabel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:projectsDropdownRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"projectsDropdownRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:projectToggleRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"projectToggleRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStore","kind":"calls","metadata":{"unresolvedName":"useMessageStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:useSessionContextUsage","kind":"calls","metadata":{"unresolvedName":"useSessionContextUsage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:useSessionStats","kind":"calls","metadata":{"unresolvedName":"useSessionStats"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useBusySessions","kind":"calls","metadata":{"unresolvedName":"useBusySessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useBusyCount","kind":"calls","metadata":{"unresolvedName":"useBusyCount"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:childSessionStore.subscribe.bind","kind":"calls","metadata":{"unresolvedName":"childSessionStore.subscribe.bind"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useNotifications","kind":"calls","metadata":{"unresolvedName":"useNotifications"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useUnreadNotificationCount","kind":"calls","metadata":{"unresolvedName":"useUnreadNotificationCount"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToConnectionState","kind":"calls","metadata":{"unresolvedName":"subscribeToConnectionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useSessionContext.ts:useSessionContext","kind":"calls","metadata":{"unresolvedName":"useSessionContext"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:Object.entries","kind":"calls","metadata":{"unresolvedName":"Object.entries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:map.has","kind":"calls","metadata":{"unresolvedName":"map.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:busySessions.map","kind":"calls","metadata":{"unresolvedName":"busySessions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:notifications.map","kind":"calls","metadata":{"unresolvedName":"notifications.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:sessionLookup.has","kind":"calls","metadata":{"unresolvedName":"sessionLookup.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:allNeeded.push","kind":"calls","metadata":{"unresolvedName":"allNeeded.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:allNeeded.filter","kind":"calls","metadata":{"unresolvedName":"allNeeded.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:Promise.allSettled","kind":"calls","metadata":{"unresolvedName":"Promise.allSettled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:missing.map","kind":"calls","metadata":{"unresolvedName":"missing.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSession","kind":"calls","metadata":{"unresolvedName":"getSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:Object.keys","kind":"calls","metadata":{"unresolvedName":"Object.keys"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:setFetchedSessions","kind":"calls","metadata":{"unresolvedName":"setFetchedSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:fetchMissing","kind":"calls","metadata":{"unresolvedName":"fetchMissing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:sessions.map","kind":"calls","metadata":{"unresolvedName":"sessions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:sessionLookup.get","kind":"calls","metadata":{"unresolvedName":"sessionLookup.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:childSessionStore.getSessionInfo","kind":"calls","metadata":{"unresolvedName":"childSessionStore.getSessionInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:rootSessionIds.has","kind":"calls","metadata":{"unresolvedName":"rootSessionIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:findParentId","kind":"calls","metadata":{"unresolvedName":"findParentId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:expandedChildSessionIds?.has","kind":"calls","metadata":{"unresolvedName":"expandedChildSessionIds?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:map.get","kind":"calls","metadata":{"unresolvedName":"map.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:arr.some","kind":"calls","metadata":{"unresolvedName":"arr.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:arr.push","kind":"calls","metadata":{"unresolvedName":"arr.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:add","kind":"calls","metadata":{"unresolvedName":"add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/activeSessionTree.ts:buildActiveSessionTree","kind":"calls","metadata":{"unresolvedName":"buildActiveSessionTree"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:directories.map","kind":"calls","metadata":{"unresolvedName":"directories.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:gitWorkspaceCatalog.get","kind":"calls","metadata":{"unresolvedName":"gitWorkspaceCatalog.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts:getProjectGroupIdentity","kind":"calls","metadata":{"unresolvedName":"getProjectGroupIdentity"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:groups.get","kind":"calls","metadata":{"unresolvedName":"groups.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:groups.set","kind":"calls","metadata":{"unresolvedName":"groups.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:savedNameByPath.get","kind":"calls","metadata":{"unresolvedName":"savedNameByPath.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDirectoryName","kind":"calls","metadata":{"unresolvedName":"getDirectoryName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:Array.from(groups.values()).map","kind":"calls","metadata":{"unresolvedName":"Array.from(groups.values()).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:groups.values","kind":"calls","metadata":{"unresolvedName":"groups.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:(project.memberDirectories ?? [])\n .map","kind":"calls","metadata":{"unresolvedName":"(project.memberDirectories ?? [])\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:project.workspaceDirectories?.some","kind":"calls","metadata":{"unresolvedName":"project.workspaceDirectories?.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:project.workspaceDirectories.filter","kind":"calls","metadata":{"unresolvedName":"project.workspaceDirectories.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:savedWorkspaceDirectories.some","kind":"calls","metadata":{"unresolvedName":"savedWorkspaceDirectories.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:buildProjectGroups","kind":"calls","metadata":{"unresolvedName":"buildProjectGroups"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:[...savedDirectories].sort","kind":"calls","metadata":{"unresolvedName":"[...savedDirectories].sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:findProjectGroupForDirectory","kind":"calls","metadata":{"unresolvedName":"findProjectGroupForDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:list.some","kind":"calls","metadata":{"unresolvedName":"list.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:list.push","kind":"calls","metadata":{"unresolvedName":"list.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:gitWorkspaceCatalog.has","kind":"calls","metadata":{"unresolvedName":"gitWorkspaceCatalog.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:(currentProject.memberDirectories ?? []).map","kind":"calls","metadata":{"unresolvedName":"(currentProject.memberDirectories ?? []).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:currentProjectWorkspaceDirectories.map","kind":"calls","metadata":{"unresolvedName":"currentProjectWorkspaceDirectories.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:draggableWorkspaceSet.has","kind":"calls","metadata":{"unresolvedName":"draggableWorkspaceSet.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:setCurrentDirectory","kind":"calls","metadata":{"unresolvedName":"setCurrentDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:allDisplayedProjects.find","kind":"calls","metadata":{"unresolvedName":"allDisplayedProjects.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:setProjectsExpanded","kind":"calls","metadata":{"unresolvedName":"setProjectsExpanded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:getProjectDirectoriesToRemove(projectId).forEach","kind":"calls","metadata":{"unresolvedName":"getProjectDirectoriesToRemove(projectId).forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:getProjectDirectoriesToRemove","kind":"calls","metadata":{"unresolvedName":"getProjectDirectoriesToRemove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:removeDirectory","kind":"calls","metadata":{"unresolvedName":"removeDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:folderProjects.find","kind":"calls","metadata":{"unresolvedName":"folderProjects.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:reorderDirectories","kind":"calls","metadata":{"unresolvedName":"reorderDirectories"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:addDirectory","kind":"calls","metadata":{"unresolvedName":"addDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:onSelectSession","kind":"calls","metadata":{"unresolvedName":"onSelectSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:onCloseMobile","kind":"calls","metadata":{"unresolvedName":"onCloseMobile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:activeSessionTree.childrenByParent.get","kind":"calls","metadata":{"unresolvedName":"activeSessionTree.childrenByParent.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:childEntries.map","kind":"calls","metadata":{"unresolvedName":"childEntries.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:renderActiveSessionNode","kind":"calls","metadata":{"unresolvedName":"renderActiveSessionNode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:updateSession","kind":"calls","metadata":{"unresolvedName":"updateSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:refresh","kind":"calls","metadata":{"unresolvedName":"refresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:deleteSession","kind":"calls","metadata":{"unresolvedName":"deleteSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:onNewSession","kind":"calls","metadata":{"unresolvedName":"onNewSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:apiDeleteSession","kind":"calls","metadata":{"unresolvedName":"apiDeleteSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:setIsBatchDeleting","kind":"calls","metadata":{"unresolvedName":"setIsBatchDeleting"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:selectedSessionIds.has","kind":"calls","metadata":{"unresolvedName":"selectedSessionIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:ids.map","kind":"calls","metadata":{"unresolvedName":"ids.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:setBatchDeleteSessionConfirm","kind":"calls","metadata":{"unresolvedName":"setBatchDeleteSessionConfirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:setBatchRemoveProjectConfirm","kind":"calls","metadata":{"unresolvedName":"setBatchRemoveProjectConfirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:projects.map","kind":"calls","metadata":{"unresolvedName":"projects.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:handleSelectProject","kind":"calls","metadata":{"unresolvedName":"handleSelectProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts:getParentPath","kind":"calls","metadata":{"unresolvedName":"getParentPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:setProjectDeleteConfirm","kind":"calls","metadata":{"unresolvedName":"setProjectDeleteConfirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:setSearch","kind":"calls","metadata":{"unresolvedName":"setSearch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:setSidebarTab","kind":"calls","metadata":{"unresolvedName":"setSidebarTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:exitEditMode","kind":"calls","metadata":{"unresolvedName":"exitEditMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:activeSessionTree.rootEntries.map","kind":"calls","metadata":{"unresolvedName":"activeSessionTree.rootEntries.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:notifications.some","kind":"calls","metadata":{"unresolvedName":"notifications.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:notificationStore.markAllRead","kind":"calls","metadata":{"unresolvedName":"notificationStore.markAllRead"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"external:notificationStore.clearAll","kind":"calls","metadata":{"unresolvedName":"notificationStore.clearAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:SidePanel","to":"symbol-name:handleRemoveProject","kind":"calls","metadata":{"unresolvedName":"handleRemoveProject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:root.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"root.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:element.getClientRects","kind":"calls","metadata":{"unresolvedName":"element.getClientRects"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:Boolean","kind":"calls","metadata":{"unresolvedName":"Boolean"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:getVisibleSelectionIds","kind":"calls","metadata":{"unresolvedName":"getVisibleSelectionIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setSelectedSessionIds","kind":"calls","metadata":{"unresolvedName":"setSelectedSessionIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:getSelectionRange","kind":"calls","metadata":{"unresolvedName":"getSelectionRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:next.add","kind":"calls","metadata":{"unresolvedName":"next.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:next.has","kind":"calls","metadata":{"unresolvedName":"next.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:next.delete","kind":"calls","metadata":{"unresolvedName":"next.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:getSelectionRange","kind":"calls","metadata":{"unresolvedName":"getSelectionRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:next.add","kind":"calls","metadata":{"unresolvedName":"next.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:next.has","kind":"calls","metadata":{"unresolvedName":"next.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:next.delete","kind":"calls","metadata":{"unresolvedName":"next.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:getVisibleSelectionIds","kind":"calls","metadata":{"unresolvedName":"getVisibleSelectionIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setSelectedProjectIds","kind":"calls","metadata":{"unresolvedName":"setSelectedProjectIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:getSelectionRange","kind":"calls","metadata":{"unresolvedName":"getSelectionRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:next.add","kind":"calls","metadata":{"unresolvedName":"next.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:next.has","kind":"calls","metadata":{"unresolvedName":"next.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:next.delete","kind":"calls","metadata":{"unresolvedName":"next.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:getSelectionRange","kind":"calls","metadata":{"unresolvedName":"getSelectionRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:next.add","kind":"calls","metadata":{"unresolvedName":"next.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:next.has","kind":"calls","metadata":{"unresolvedName":"next.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:next.delete","kind":"calls","metadata":{"unresolvedName":"next.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setIsEditMode","kind":"calls","metadata":{"unresolvedName":"setIsEditMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setSelectedSessionIds","kind":"calls","metadata":{"unresolvedName":"setSelectedSessionIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setSelectedProjectIds","kind":"calls","metadata":{"unresolvedName":"setSelectedProjectIds"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setIsEditMode","kind":"calls","metadata":{"unresolvedName":"setIsEditMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:projectsDropdownRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"projectsDropdownRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:projectToggleRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"projectToggleRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToConnectionState","kind":"calls","metadata":{"unresolvedName":"subscribeToConnectionState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:Object.entries","kind":"calls","metadata":{"unresolvedName":"Object.entries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:map.has","kind":"calls","metadata":{"unresolvedName":"map.has"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:busySessions.map","kind":"calls","metadata":{"unresolvedName":"busySessions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:notifications.map","kind":"calls","metadata":{"unresolvedName":"notifications.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:sessionLookup.has","kind":"calls","metadata":{"unresolvedName":"sessionLookup.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:allNeeded.push","kind":"calls","metadata":{"unresolvedName":"allNeeded.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:allNeeded.filter","kind":"calls","metadata":{"unresolvedName":"allNeeded.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:Promise.allSettled","kind":"calls","metadata":{"unresolvedName":"Promise.allSettled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:missing.map","kind":"calls","metadata":{"unresolvedName":"missing.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSession","kind":"calls","metadata":{"unresolvedName":"getSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:Object.keys","kind":"calls","metadata":{"unresolvedName":"Object.keys"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setFetchedSessions","kind":"calls","metadata":{"unresolvedName":"setFetchedSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:fetchMissing","kind":"calls","metadata":{"unresolvedName":"fetchMissing"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:fetchMissing","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:fetchMissing","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:fetchMissing","to":"external:Promise.allSettled","kind":"calls","metadata":{"unresolvedName":"Promise.allSettled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:fetchMissing","to":"external:missing.map","kind":"calls","metadata":{"unresolvedName":"missing.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:fetchMissing","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSession","kind":"calls","metadata":{"unresolvedName":"getSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:fetchMissing","to":"external:Object.keys","kind":"calls","metadata":{"unresolvedName":"Object.keys"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:fetchMissing","to":"symbol-name:setFetchedSessions","kind":"calls","metadata":{"unresolvedName":"setFetchedSessions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSession","kind":"calls","metadata":{"unresolvedName":"getSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:sessionLookup.get","kind":"calls","metadata":{"unresolvedName":"sessionLookup.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:childSessionStore.getSessionInfo","kind":"calls","metadata":{"unresolvedName":"childSessionStore.getSessionInfo"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:rootSessionIds.has","kind":"calls","metadata":{"unresolvedName":"rootSessionIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:findParentId","kind":"calls","metadata":{"unresolvedName":"findParentId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:expandedChildSessionIds?.has","kind":"calls","metadata":{"unresolvedName":"expandedChildSessionIds?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:map.get","kind":"calls","metadata":{"unresolvedName":"map.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:arr.some","kind":"calls","metadata":{"unresolvedName":"arr.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:arr.push","kind":"calls","metadata":{"unresolvedName":"arr.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:findParentId","kind":"calls","metadata":{"unresolvedName":"findParentId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:rootSessionIds.has","kind":"calls","metadata":{"unresolvedName":"rootSessionIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:sessionLookup.get","kind":"calls","metadata":{"unresolvedName":"sessionLookup.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:add","kind":"calls","metadata":{"unresolvedName":"add"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:add","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:add","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:add","to":"external:expandedChildSessionIds?.has","kind":"calls","metadata":{"unresolvedName":"expandedChildSessionIds?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:add","to":"external:map.get","kind":"calls","metadata":{"unresolvedName":"map.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:add","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:add","to":"external:arr.some","kind":"calls","metadata":{"unresolvedName":"arr.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:add","to":"external:arr.push","kind":"calls","metadata":{"unresolvedName":"arr.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:directories.map","kind":"calls","metadata":{"unresolvedName":"directories.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:gitWorkspaceCatalog.get","kind":"calls","metadata":{"unresolvedName":"gitWorkspaceCatalog.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts:getProjectGroupIdentity","kind":"calls","metadata":{"unresolvedName":"getProjectGroupIdentity"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:groups.get","kind":"calls","metadata":{"unresolvedName":"groups.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:groups.set","kind":"calls","metadata":{"unresolvedName":"groups.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:savedNameByPath.get","kind":"calls","metadata":{"unresolvedName":"savedNameByPath.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDirectoryName","kind":"calls","metadata":{"unresolvedName":"getDirectoryName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:Array.from(groups.values()).map","kind":"calls","metadata":{"unresolvedName":"Array.from(groups.values()).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:groups.values","kind":"calls","metadata":{"unresolvedName":"groups.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:(project.memberDirectories ?? [])\n .map","kind":"calls","metadata":{"unresolvedName":"(project.memberDirectories ?? [])\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:project.workspaceDirectories?.some","kind":"calls","metadata":{"unresolvedName":"project.workspaceDirectories?.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:project.workspaceDirectories.filter","kind":"calls","metadata":{"unresolvedName":"project.workspaceDirectories.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:savedWorkspaceDirectories.some","kind":"calls","metadata":{"unresolvedName":"savedWorkspaceDirectories.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:(project.memberDirectories ?? [])\n .map","kind":"calls","metadata":{"unresolvedName":"(project.memberDirectories ?? [])\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:project.workspaceDirectories?.some","kind":"calls","metadata":{"unresolvedName":"project.workspaceDirectories?.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:project.workspaceDirectories.filter","kind":"calls","metadata":{"unresolvedName":"project.workspaceDirectories.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:savedWorkspaceDirectories.some","kind":"calls","metadata":{"unresolvedName":"savedWorkspaceDirectories.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:buildProjectGroups","kind":"calls","metadata":{"unresolvedName":"buildProjectGroups"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:[...savedDirectories].sort","kind":"calls","metadata":{"unresolvedName":"[...savedDirectories].sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:buildProjectGroups","kind":"calls","metadata":{"unresolvedName":"buildProjectGroups"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:findProjectGroupForDirectory","kind":"calls","metadata":{"unresolvedName":"findProjectGroupForDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:gitWorkspaceCatalog.get","kind":"calls","metadata":{"unresolvedName":"gitWorkspaceCatalog.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/projectGrouping.ts:getProjectGroupIdentity","kind":"calls","metadata":{"unresolvedName":"getProjectGroupIdentity"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDirectoryName","kind":"calls","metadata":{"unresolvedName":"getDirectoryName"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:list.some","kind":"calls","metadata":{"unresolvedName":"list.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:list.push","kind":"calls","metadata":{"unresolvedName":"list.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:(currentProject.memberDirectories ?? []).map","kind":"calls","metadata":{"unresolvedName":"(currentProject.memberDirectories ?? []).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:currentProjectWorkspaceDirectories.map","kind":"calls","metadata":{"unresolvedName":"currentProjectWorkspaceDirectories.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:draggableWorkspaceSet.has","kind":"calls","metadata":{"unresolvedName":"draggableWorkspaceSet.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDirectoryName","kind":"calls","metadata":{"unresolvedName":"getDirectoryName"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:draggableWorkspaceSet.has","kind":"calls","metadata":{"unresolvedName":"draggableWorkspaceSet.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDirectoryName","kind":"calls","metadata":{"unresolvedName":"getDirectoryName"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setCurrentDirectory","kind":"calls","metadata":{"unresolvedName":"setCurrentDirectory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:allDisplayedProjects.find","kind":"calls","metadata":{"unresolvedName":"allDisplayedProjects.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setCurrentDirectory","kind":"calls","metadata":{"unresolvedName":"setCurrentDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setProjectsExpanded","kind":"calls","metadata":{"unresolvedName":"setProjectsExpanded"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:getProjectDirectoriesToRemove(projectId).forEach","kind":"calls","metadata":{"unresolvedName":"getProjectDirectoriesToRemove(projectId).forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:getProjectDirectoriesToRemove","kind":"calls","metadata":{"unresolvedName":"getProjectDirectoriesToRemove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:removeDirectory","kind":"calls","metadata":{"unresolvedName":"removeDirectory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:folderProjects.find","kind":"calls","metadata":{"unresolvedName":"folderProjects.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:reorderDirectories","kind":"calls","metadata":{"unresolvedName":"reorderDirectories"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:addDirectory","kind":"calls","metadata":{"unresolvedName":"addDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:onSelectSession","kind":"calls","metadata":{"unresolvedName":"onSelectSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:onCloseMobile","kind":"calls","metadata":{"unresolvedName":"onCloseMobile"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:addDirectory","kind":"calls","metadata":{"unresolvedName":"addDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:onSelectSession","kind":"calls","metadata":{"unresolvedName":"onSelectSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:onCloseMobile","kind":"calls","metadata":{"unresolvedName":"onCloseMobile"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:sessionLookup.get","kind":"calls","metadata":{"unresolvedName":"sessionLookup.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:activeSessionTree.childrenByParent.get","kind":"calls","metadata":{"unresolvedName":"activeSessionTree.childrenByParent.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:childEntries.map","kind":"calls","metadata":{"unresolvedName":"childEntries.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:renderActiveSessionNode","kind":"calls","metadata":{"unresolvedName":"renderActiveSessionNode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:updateSession","kind":"calls","metadata":{"unresolvedName":"updateSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:refresh","kind":"calls","metadata":{"unresolvedName":"refresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:deleteSession","kind":"calls","metadata":{"unresolvedName":"deleteSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:onNewSession","kind":"calls","metadata":{"unresolvedName":"onNewSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:updateSession","kind":"calls","metadata":{"unresolvedName":"updateSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:refresh","kind":"calls","metadata":{"unresolvedName":"refresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:apiDeleteSession","kind":"calls","metadata":{"unresolvedName":"apiDeleteSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:refresh","kind":"calls","metadata":{"unresolvedName":"refresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:onNewSession","kind":"calls","metadata":{"unresolvedName":"onNewSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setIsBatchDeleting","kind":"calls","metadata":{"unresolvedName":"setIsBatchDeleting"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:selectedSessionIds.has","kind":"calls","metadata":{"unresolvedName":"selectedSessionIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:Promise.allSettled","kind":"calls","metadata":{"unresolvedName":"Promise.allSettled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:ids.map","kind":"calls","metadata":{"unresolvedName":"ids.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:sessionLookup.get","kind":"calls","metadata":{"unresolvedName":"sessionLookup.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:apiDeleteSession","kind":"calls","metadata":{"unresolvedName":"apiDeleteSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:refresh","kind":"calls","metadata":{"unresolvedName":"refresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setSelectedSessionIds","kind":"calls","metadata":{"unresolvedName":"setSelectedSessionIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setBatchDeleteSessionConfirm","kind":"calls","metadata":{"unresolvedName":"setBatchDeleteSessionConfirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:onNewSession","kind":"calls","metadata":{"unresolvedName":"onNewSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:sessionLookup.get","kind":"calls","metadata":{"unresolvedName":"sessionLookup.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:apiDeleteSession","kind":"calls","metadata":{"unresolvedName":"apiDeleteSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:getProjectDirectoriesToRemove(projectId).forEach","kind":"calls","metadata":{"unresolvedName":"getProjectDirectoriesToRemove(projectId).forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:getProjectDirectoriesToRemove","kind":"calls","metadata":{"unresolvedName":"getProjectDirectoriesToRemove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:removeDirectory","kind":"calls","metadata":{"unresolvedName":"removeDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setSelectedProjectIds","kind":"calls","metadata":{"unresolvedName":"setSelectedProjectIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setBatchRemoveProjectConfirm","kind":"calls","metadata":{"unresolvedName":"setBatchRemoveProjectConfirm"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setProjectsExpanded","kind":"calls","metadata":{"unresolvedName":"setProjectsExpanded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setProjectsExpanded","kind":"calls","metadata":{"unresolvedName":"setProjectsExpanded"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:handleSelectProject","kind":"calls","metadata":{"unresolvedName":"handleSelectProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/sidebarUtils.ts:getParentPath","kind":"calls","metadata":{"unresolvedName":"getParentPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setProjectDeleteConfirm","kind":"calls","metadata":{"unresolvedName":"setProjectDeleteConfirm"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:handleSelectProject","kind":"calls","metadata":{"unresolvedName":"handleSelectProject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setProjectDeleteConfirm","kind":"calls","metadata":{"unresolvedName":"setProjectDeleteConfirm"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setSidebarTab","kind":"calls","metadata":{"unresolvedName":"setSidebarTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:exitEditMode","kind":"calls","metadata":{"unresolvedName":"exitEditMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setSidebarTab","kind":"calls","metadata":{"unresolvedName":"setSidebarTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:exitEditMode","kind":"calls","metadata":{"unresolvedName":"exitEditMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"external:sessionLookup.get","kind":"calls","metadata":{"unresolvedName":"sessionLookup.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:handleRemoveProject","kind":"calls","metadata":{"unresolvedName":"handleRemoveProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx:","to":"symbol-name:setProjectDeleteConfirm","kind":"calls","metadata":{"unresolvedName":"setProjectDeleteConfirm"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SidePanel.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/ProjectDialog.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:clampSidebarWidth","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:clampSidebarWidth","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:clampSidebarWidth","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:clampSidebarWidth","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useDirectory","kind":"calls","metadata":{"unresolvedName":"useDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/chatViewport.tsx:useChatViewport","kind":"calls","metadata":{"unresolvedName":"useChatViewport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:addDirectory","kind":"calls","metadata":{"unresolvedName":"addDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:onOpen","kind":"calls","metadata":{"unresolvedName":"onOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:setProjectDialogKey","kind":"calls","metadata":{"unresolvedName":"setProjectDialogKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:setIsProjectDialogOpen","kind":"calls","metadata":{"unresolvedName":"setIsProjectDialogOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:onProjectDialogClose","kind":"calls","metadata":{"unresolvedName":"onProjectDialogClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:clampSidebarWidth","kind":"calls","metadata":{"unresolvedName":"clampSidebarWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:actions.setSidebarRequestedWidth","kind":"calls","metadata":{"unresolvedName":"actions.setSidebarRequestedWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:setIsResizing","kind":"calls","metadata":{"unresolvedName":"setIsResizing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:persistSidebarWidth","kind":"calls","metadata":{"unresolvedName":"persistSidebarWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:moveEvent.preventDefault","kind":"calls","metadata":{"unresolvedName":"moveEvent.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:window.clearTimeout","kind":"calls","metadata":{"unresolvedName":"window.clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:window.dispatchEvent","kind":"calls","metadata":{"unresolvedName":"window.dispatchEvent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:onSelectSession","kind":"calls","metadata":{"unresolvedName":"onSelectSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:setIsSwipingActive","kind":"calls","metadata":{"unresolvedName":"setIsSwipingActive"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:setSwipeX","kind":"calls","metadata":{"unresolvedName":"setSwipeX"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:Number","kind":"calls","metadata":{"unresolvedName":"Number"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:addDirectory","kind":"calls","metadata":{"unresolvedName":"addDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:onOpen","kind":"calls","metadata":{"unresolvedName":"onOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:setProjectDialogKey","kind":"calls","metadata":{"unresolvedName":"setProjectDialogKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:setIsProjectDialogOpen","kind":"calls","metadata":{"unresolvedName":"setIsProjectDialogOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:setIsProjectDialogOpen","kind":"calls","metadata":{"unresolvedName":"setIsProjectDialogOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:onProjectDialogClose","kind":"calls","metadata":{"unresolvedName":"onProjectDialogClose"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:clampSidebarWidth","kind":"calls","metadata":{"unresolvedName":"clampSidebarWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:actions.setSidebarRequestedWidth","kind":"calls","metadata":{"unresolvedName":"actions.setSidebarRequestedWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:setIsResizing","kind":"calls","metadata":{"unresolvedName":"setIsResizing"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:setIsResizing","kind":"calls","metadata":{"unresolvedName":"setIsResizing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:clampSidebarWidth","kind":"calls","metadata":{"unresolvedName":"clampSidebarWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:persistSidebarWidth","kind":"calls","metadata":{"unresolvedName":"persistSidebarWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleMouseMove","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleMouseMove","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleMouseMove","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleMouseMove","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleMouseMove","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:clampSidebarWidth","kind":"calls","metadata":{"unresolvedName":"clampSidebarWidth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:clampSidebarWidth","kind":"calls","metadata":{"unresolvedName":"clampSidebarWidth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleMouseUp","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleMouseUp","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleMouseUp","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleMouseUp","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleMouseUp","to":"symbol-name:persistSidebarWidth","kind":"calls","metadata":{"unresolvedName":"persistSidebarWidth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:setIsResizing","kind":"calls","metadata":{"unresolvedName":"setIsResizing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:moveEvent.preventDefault","kind":"calls","metadata":{"unresolvedName":"moveEvent.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:clampSidebarWidth","kind":"calls","metadata":{"unresolvedName":"clampSidebarWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:persistSidebarWidth","kind":"calls","metadata":{"unresolvedName":"persistSidebarWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleTouchMove","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleTouchMove","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleTouchMove","to":"external:moveEvent.preventDefault","kind":"calls","metadata":{"unresolvedName":"moveEvent.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleTouchMove","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleTouchMove","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleTouchMove","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:clampSidebarWidth","kind":"calls","metadata":{"unresolvedName":"clampSidebarWidth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:clampSidebarWidth","kind":"calls","metadata":{"unresolvedName":"clampSidebarWidth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleTouchEnd","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleTouchEnd","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleTouchEnd","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleTouchEnd","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:handleTouchEnd","to":"symbol-name:persistSidebarWidth","kind":"calls","metadata":{"unresolvedName":"persistSidebarWidth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:window.clearTimeout","kind":"calls","metadata":{"unresolvedName":"window.clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:window.dispatchEvent","kind":"calls","metadata":{"unresolvedName":"window.dispatchEvent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:onOpen","kind":"calls","metadata":{"unresolvedName":"onOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:window.dispatchEvent","kind":"calls","metadata":{"unresolvedName":"window.dispatchEvent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:window.clearTimeout","kind":"calls","metadata":{"unresolvedName":"window.clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:window.dispatchEvent","kind":"calls","metadata":{"unresolvedName":"window.dispatchEvent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:window.clearTimeout","kind":"calls","metadata":{"unresolvedName":"window.clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"external:window.dispatchEvent","kind":"calls","metadata":{"unresolvedName":"window.dispatchEvent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:onSelectSession","kind":"calls","metadata":{"unresolvedName":"onSelectSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:setIsSwipingActive","kind":"calls","metadata":{"unresolvedName":"setIsSwipingActive"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:setIsSwipingActive","kind":"calls","metadata":{"unresolvedName":"setIsSwipingActive"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:setSwipeX","kind":"calls","metadata":{"unresolvedName":"setSwipeX"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:setIsSwipingActive","kind":"calls","metadata":{"unresolvedName":"setIsSwipingActive"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/Sidebar.tsx:","to":"symbol-name:setSwipeX","kind":"calls","metadata":{"unresolvedName":"setSwipeX"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:containsLeaf","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:containsLeaf","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:containsLeaf","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:containsLeaf","kind":"calls","metadata":{"unresolvedName":"containsLeaf"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitContainer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitContainer","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitContainer","to":"symbol-name:renderLeaf","kind":"calls","metadata":{"unresolvedName":"renderLeaf"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:buildGridTemplate","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:buildGridTemplate","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:buildGridTemplate","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:buildGridTemplate","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:buildGridTemplate","to":"external:(r * 100).toFixed","kind":"calls","metadata":{"unresolvedName":"(r * 100).toFixed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:buildGridTemplate","to":"external:((1 - r) * 100).toFixed","kind":"calls","metadata":{"unresolvedName":"((1 - r) * 100).toFixed"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitNode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitNode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitNode","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitNode","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitNode","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitNode","to":"external:container.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"container.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitNode","to":"external:window.dispatchEvent","kind":"calls","metadata":{"unresolvedName":"window.dispatchEvent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitNode","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:buildGridTemplate","kind":"calls","metadata":{"unresolvedName":"buildGridTemplate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitNode","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitNode","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitNode","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitNode","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:applyRatio","kind":"calls","metadata":{"unresolvedName":"applyRatio"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitNode","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitNode","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitNode","to":"external:paneLayoutStore.setRatio","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.setRatio"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitNode","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:SplitNode","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:containsLeaf","kind":"calls","metadata":{"unresolvedName":"containsLeaf"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:","to":"external:container.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"container.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:","to":"external:window.dispatchEvent","kind":"calls","metadata":{"unresolvedName":"window.dispatchEvent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:buildGridTemplate","kind":"calls","metadata":{"unresolvedName":"buildGridTemplate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:applyRatio","kind":"calls","metadata":{"unresolvedName":"applyRatio"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:","to":"external:paneLayoutStore.setRatio","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.setRatio"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:applyRatio","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:applyRatio","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:applyRatio","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:buildGridTemplate","kind":"calls","metadata":{"unresolvedName":"buildGridTemplate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:onMove","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:onMove","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:onMove","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:onMove","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:onMove","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:onMove","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:applyRatio","kind":"calls","metadata":{"unresolvedName":"applyRatio"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:applyRatio","kind":"calls","metadata":{"unresolvedName":"applyRatio"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:onUp","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:onUp","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:onUp","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:onUp","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:onUp","to":"external:paneLayoutStore.setRatio","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.setRatio"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:onUp","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:onUp","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/SplitContainer.tsx:onUp","to":"external:window.dispatchEvent","kind":"calls","metadata":{"unresolvedName":"window.dispatchEvent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:createMentionElement","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:createMentionElement","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:createMentionElement","to":"external:document.createElement","kind":"calls","metadata":{"unresolvedName":"document.createElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:createMentionElement","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:formatMentionLabel","kind":"calls","metadata":{"unresolvedName":"formatMentionLabel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:createMentionElement","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:createMentionElement","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:createMentionElement","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:createMentionElement","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:createMentionElement","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:createMentionElement","to":"symbol-name:clipboardErrorHandler","kind":"calls","metadata":{"unresolvedName":"clipboardErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:createMentionElement","to":"external:span.addEventListener","kind":"calls","metadata":{"unresolvedName":"span.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:createMentionElement","to":"external:span.removeEventListener","kind":"calls","metadata":{"unresolvedName":"span.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:handleClick","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:handleClick","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:handleClick","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:handleClick","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:handleClick","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:handleClick","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:handleClick","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:handleClick","to":"symbol-name:clipboardErrorHandler","kind":"calls","metadata":{"unresolvedName":"clipboardErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:cleanup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:cleanup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:cleanup","to":"external:span.removeEventListener","kind":"calls","metadata":{"unresolvedName":"span.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:cleanup","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.mocked(listDirectory).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(listDirectory).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.mocked(searchFiles).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(searchFiles).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:expect(screen.getByText('planner')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('planner')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:expect(screen.getAllByText('src').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('src').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:screen.getAllByText","kind":"calls","metadata":{"unresolvedName":"screen.getAllByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:expect(screen.getAllByText('README.md').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('README.md').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:screen.getByTitle","kind":"calls","metadata":{"unresolvedName":"screen.getByTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:expect(onNavigate).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onNavigate).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.mocked(listDirectory).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(listDirectory).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.mocked(searchFiles).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(searchFiles).mockResolvedValue"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:expect(screen.getByText('planner')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('planner')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:expect(screen.getAllByText('src').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('src').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:screen.getAllByText","kind":"calls","metadata":{"unresolvedName":"screen.getAllByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:expect(screen.getAllByText('README.md').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('README.md').length).toBeGreaterThan"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:screen.getByTitle","kind":"calls","metadata":{"unresolvedName":"screen.getByTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:expect(onNavigate).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onNavigate).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:query.lastIndexOf","kind":"calls","metadata":{"unresolvedName":"query.lastIndexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:query.slice","kind":"calls","metadata":{"unresolvedName":"query.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:useLayoutEffect","kind":"calls","metadata":{"unresolvedName":"useLayoutEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setDynamicMaxHeight","kind":"calls","metadata":{"unresolvedName":"setDynamicMaxHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:parent.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"parent.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:window.visualViewport?.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.visualViewport?.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:window.visualViewport?.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.visualViewport?.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:selectedEl.scrollIntoView","kind":"calls","metadata":{"unresolvedName":"selectedEl.scrollIntoView"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toAbsolutePath","kind":"calls","metadata":{"unresolvedName":"toAbsolutePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:path.replace","kind":"calls","metadata":{"unresolvedName":"path.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:listDirectory(cleanPath, rootPath)\r\n .then","kind":"calls","metadata":{"unresolvedName":"listDirectory(cleanPath, rootPath)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","kind":"calls","metadata":{"unresolvedName":"listDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:filter.toLowerCase","kind":"calls","metadata":{"unresolvedName":"filter.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:nodes.forEach","kind":"calls","metadata":{"unresolvedName":"nodes.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:n.name.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"n.name.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:n.name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"n.name.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:folders.push","kind":"calls","metadata":{"unresolvedName":"folders.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:createItem","kind":"calls","metadata":{"unresolvedName":"createItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:files.push","kind":"calls","metadata":{"unresolvedName":"files.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:agents\r\n .filter","kind":"calls","metadata":{"unresolvedName":"agents\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:a.name.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"a.name.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:a.name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"a.name.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:[...agentItems, ...folders, ...files].filter","kind":"calls","metadata":{"unresolvedName":"[...agentItems, ...folders, ...files].filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:excludeValues?.has","kind":"calls","metadata":{"unresolvedName":"excludeValues?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setItems","kind":"calls","metadata":{"unresolvedName":"setItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:allItems.findIndex","kind":"calls","metadata":{"unresolvedName":"allItems.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:fileErrorHandler","kind":"calls","metadata":{"unresolvedName":"fileErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:loadDirectory","kind":"calls","metadata":{"unresolvedName":"loadDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:searchFiles(query, { limit: 20, directory: rootPath })\r\n .then","kind":"calls","metadata":{"unresolvedName":"searchFiles(query, { limit: 20, directory: rootPath })\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchFiles","kind":"calls","metadata":{"unresolvedName":"searchFiles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:paths.forEach","kind":"calls","metadata":{"unresolvedName":"paths.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:getFileName","kind":"calls","metadata":{"unresolvedName":"getFileName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:name.includes","kind":"calls","metadata":{"unresolvedName":"name.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:path.endsWith","kind":"calls","metadata":{"unresolvedName":"path.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:fileItems.push","kind":"calls","metadata":{"unresolvedName":"fileItems.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:query.toLowerCase","kind":"calls","metadata":{"unresolvedName":"query.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:agents\r\n .filter","kind":"calls","metadata":{"unresolvedName":"agents\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:[...agentItems, ...folders, ...fileItems].filter","kind":"calls","metadata":{"unresolvedName":"[...agentItems, ...folders, ...fileItems].filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:useImperativeHandle","kind":"calls","metadata":{"unresolvedName":"useImperativeHandle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:normalizePath(currentPath).split","kind":"calls","metadata":{"unresolvedName":"normalizePath(currentPath).split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:parts.pop","kind":"calls","metadata":{"unresolvedName":"parts.pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:parts.join","kind":"calls","metadata":{"unresolvedName":"parts.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:onNavigate","kind":"calls","metadata":{"unresolvedName":"onNavigate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:menuRef.current.contains","kind":"calls","metadata":{"unresolvedName":"menuRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:pathParts.slice","kind":"calls","metadata":{"unresolvedName":"pathParts.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:parentParts.join","kind":"calls","metadata":{"unresolvedName":"parentParts.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:items.map","kind":"calls","metadata":{"unresolvedName":"items.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:(item.relativePath || item.displayName).replace","kind":"calls","metadata":{"unresolvedName":"(item.relativePath || item.displayName).replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:query.lastIndexOf","kind":"calls","metadata":{"unresolvedName":"query.lastIndexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:query.slice","kind":"calls","metadata":{"unresolvedName":"query.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setDynamicMaxHeight","kind":"calls","metadata":{"unresolvedName":"setDynamicMaxHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:parent.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"parent.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:window.visualViewport?.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.visualViewport?.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:window.visualViewport?.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.visualViewport?.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:calculate","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:calculate","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:calculate","to":"symbol-name:setDynamicMaxHeight","kind":"calls","metadata":{"unresolvedName":"setDynamicMaxHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:calculate","to":"external:parent.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"parent.getBoundingClientRect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:window.visualViewport?.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.visualViewport?.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:selectedEl.scrollIntoView","kind":"calls","metadata":{"unresolvedName":"selectedEl.scrollIntoView"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toAbsolutePath","kind":"calls","metadata":{"unresolvedName":"toAbsolutePath"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:path.replace","kind":"calls","metadata":{"unresolvedName":"path.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:listDirectory(cleanPath, rootPath)\r\n .then","kind":"calls","metadata":{"unresolvedName":"listDirectory(cleanPath, rootPath)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","kind":"calls","metadata":{"unresolvedName":"listDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:filter.toLowerCase","kind":"calls","metadata":{"unresolvedName":"filter.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:nodes.forEach","kind":"calls","metadata":{"unresolvedName":"nodes.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:n.name.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"n.name.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:n.name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"n.name.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:folders.push","kind":"calls","metadata":{"unresolvedName":"folders.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:createItem","kind":"calls","metadata":{"unresolvedName":"createItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:files.push","kind":"calls","metadata":{"unresolvedName":"files.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:agents\r\n .filter","kind":"calls","metadata":{"unresolvedName":"agents\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:a.name.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"a.name.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:a.name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"a.name.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:[...agentItems, ...folders, ...files].filter","kind":"calls","metadata":{"unresolvedName":"[...agentItems, ...folders, ...files].filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:excludeValues?.has","kind":"calls","metadata":{"unresolvedName":"excludeValues?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setItems","kind":"calls","metadata":{"unresolvedName":"setItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:allItems.findIndex","kind":"calls","metadata":{"unresolvedName":"allItems.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:fileErrorHandler","kind":"calls","metadata":{"unresolvedName":"fileErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:filter.toLowerCase","kind":"calls","metadata":{"unresolvedName":"filter.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:nodes.forEach","kind":"calls","metadata":{"unresolvedName":"nodes.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:n.name.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"n.name.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:n.name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"n.name.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:folders.push","kind":"calls","metadata":{"unresolvedName":"folders.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:createItem","kind":"calls","metadata":{"unresolvedName":"createItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:files.push","kind":"calls","metadata":{"unresolvedName":"files.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:agents\r\n .filter","kind":"calls","metadata":{"unresolvedName":"agents\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:a.name.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"a.name.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:a.name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"a.name.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:[...agentItems, ...folders, ...files].filter","kind":"calls","metadata":{"unresolvedName":"[...agentItems, ...folders, ...files].filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:excludeValues?.has","kind":"calls","metadata":{"unresolvedName":"excludeValues?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setItems","kind":"calls","metadata":{"unresolvedName":"setItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:allItems.findIndex","kind":"calls","metadata":{"unresolvedName":"allItems.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:n.name.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"n.name.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:n.name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"n.name.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:folders.push","kind":"calls","metadata":{"unresolvedName":"folders.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:createItem","kind":"calls","metadata":{"unresolvedName":"createItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:files.push","kind":"calls","metadata":{"unresolvedName":"files.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:fileErrorHandler","kind":"calls","metadata":{"unresolvedName":"fileErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setItems","kind":"calls","metadata":{"unresolvedName":"setItems"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:query.lastIndexOf","kind":"calls","metadata":{"unresolvedName":"query.lastIndexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:query.slice","kind":"calls","metadata":{"unresolvedName":"query.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:loadDirectory","kind":"calls","metadata":{"unresolvedName":"loadDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:searchFiles(query, { limit: 20, directory: rootPath })\r\n .then","kind":"calls","metadata":{"unresolvedName":"searchFiles(query, { limit: 20, directory: rootPath })\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchFiles","kind":"calls","metadata":{"unresolvedName":"searchFiles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:paths.forEach","kind":"calls","metadata":{"unresolvedName":"paths.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:getFileName","kind":"calls","metadata":{"unresolvedName":"getFileName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:name.includes","kind":"calls","metadata":{"unresolvedName":"name.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:path.endsWith","kind":"calls","metadata":{"unresolvedName":"path.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:folders.push","kind":"calls","metadata":{"unresolvedName":"folders.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:createItem","kind":"calls","metadata":{"unresolvedName":"createItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:fileItems.push","kind":"calls","metadata":{"unresolvedName":"fileItems.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:query.toLowerCase","kind":"calls","metadata":{"unresolvedName":"query.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:agents\r\n .filter","kind":"calls","metadata":{"unresolvedName":"agents\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:a.name.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"a.name.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:a.name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"a.name.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:[...agentItems, ...folders, ...fileItems].filter","kind":"calls","metadata":{"unresolvedName":"[...agentItems, ...folders, ...fileItems].filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:excludeValues?.has","kind":"calls","metadata":{"unresolvedName":"excludeValues?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setItems","kind":"calls","metadata":{"unresolvedName":"setItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:fileErrorHandler","kind":"calls","metadata":{"unresolvedName":"fileErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:query.lastIndexOf","kind":"calls","metadata":{"unresolvedName":"query.lastIndexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:query.slice","kind":"calls","metadata":{"unresolvedName":"query.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:loadDirectory","kind":"calls","metadata":{"unresolvedName":"loadDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:searchFiles(query, { limit: 20, directory: rootPath })\r\n .then","kind":"calls","metadata":{"unresolvedName":"searchFiles(query, { limit: 20, directory: rootPath })\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:searchFiles","kind":"calls","metadata":{"unresolvedName":"searchFiles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:paths.forEach","kind":"calls","metadata":{"unresolvedName":"paths.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:getFileName","kind":"calls","metadata":{"unresolvedName":"getFileName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:name.includes","kind":"calls","metadata":{"unresolvedName":"name.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:path.endsWith","kind":"calls","metadata":{"unresolvedName":"path.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:folders.push","kind":"calls","metadata":{"unresolvedName":"folders.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:createItem","kind":"calls","metadata":{"unresolvedName":"createItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:fileItems.push","kind":"calls","metadata":{"unresolvedName":"fileItems.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:query.toLowerCase","kind":"calls","metadata":{"unresolvedName":"query.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:agents\r\n .filter","kind":"calls","metadata":{"unresolvedName":"agents\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:a.name.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"a.name.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:a.name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"a.name.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:[...agentItems, ...folders, ...fileItems].filter","kind":"calls","metadata":{"unresolvedName":"[...agentItems, ...folders, ...fileItems].filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:excludeValues?.has","kind":"calls","metadata":{"unresolvedName":"excludeValues?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setItems","kind":"calls","metadata":{"unresolvedName":"setItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:fileErrorHandler","kind":"calls","metadata":{"unresolvedName":"fileErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:paths.forEach","kind":"calls","metadata":{"unresolvedName":"paths.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:getFileName","kind":"calls","metadata":{"unresolvedName":"getFileName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:name.includes","kind":"calls","metadata":{"unresolvedName":"name.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:path.endsWith","kind":"calls","metadata":{"unresolvedName":"path.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:folders.push","kind":"calls","metadata":{"unresolvedName":"folders.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:createItem","kind":"calls","metadata":{"unresolvedName":"createItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:fileItems.push","kind":"calls","metadata":{"unresolvedName":"fileItems.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:query.toLowerCase","kind":"calls","metadata":{"unresolvedName":"query.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:agents\r\n .filter","kind":"calls","metadata":{"unresolvedName":"agents\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:a.name.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"a.name.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:a.name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"a.name.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:[...agentItems, ...folders, ...fileItems].filter","kind":"calls","metadata":{"unresolvedName":"[...agentItems, ...folders, ...fileItems].filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:excludeValues?.has","kind":"calls","metadata":{"unresolvedName":"excludeValues?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setItems","kind":"calls","metadata":{"unresolvedName":"setItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:getFileName","kind":"calls","metadata":{"unresolvedName":"getFileName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:name.includes","kind":"calls","metadata":{"unresolvedName":"name.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:path.endsWith","kind":"calls","metadata":{"unresolvedName":"path.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:folders.push","kind":"calls","metadata":{"unresolvedName":"folders.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:createItem","kind":"calls","metadata":{"unresolvedName":"createItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:fileItems.push","kind":"calls","metadata":{"unresolvedName":"fileItems.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:fileErrorHandler","kind":"calls","metadata":{"unresolvedName":"fileErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setItems","kind":"calls","metadata":{"unresolvedName":"setItems"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:moveUp","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:moveUp","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:moveUp","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:moveUp","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:moveDown","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:moveDown","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:moveDown","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:moveDown","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:selectCurrent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:selectCurrent","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:selectCurrent","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:enterFolder","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:enterFolder","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:enterFolder","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:goBack","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:goBack","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:goBack","to":"external:normalizePath(currentPath).split","kind":"calls","metadata":{"unresolvedName":"normalizePath(currentPath).split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:goBack","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:goBack","to":"external:parts.pop","kind":"calls","metadata":{"unresolvedName":"parts.pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:goBack","to":"external:parts.join","kind":"calls","metadata":{"unresolvedName":"parts.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:goBack","to":"symbol-name:onNavigate","kind":"calls","metadata":{"unresolvedName":"onNavigate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:setRestoreFolder","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:setRestoreFolder","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:menuRef.current.contains","kind":"calls","metadata":{"unresolvedName":"menuRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:handleClickOutside","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:handleClickOutside","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:handleClickOutside","to":"external:menuRef.current.contains","kind":"calls","metadata":{"unresolvedName":"menuRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:handleClickOutside","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:normalizePath(currentPath).split","kind":"calls","metadata":{"unresolvedName":"normalizePath(currentPath).split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:pathParts.slice","kind":"calls","metadata":{"unresolvedName":"pathParts.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:parentParts.join","kind":"calls","metadata":{"unresolvedName":"parentParts.join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:onNavigate","kind":"calls","metadata":{"unresolvedName":"onNavigate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"external:(item.relativePath || item.displayName).replace","kind":"calls","metadata":{"unresolvedName":"(item.relativePath || item.displayName).replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:onNavigate","kind":"calls","metadata":{"unresolvedName":"onNavigate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:TypeBadge","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:TypeBadge","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:TypeBadge","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionMenu.tsx:TypeBadge","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:MentionTag","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:MentionTag","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:MentionTag","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:MentionTag","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:MentionTag","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:MentionTag","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:MentionTag","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:getFileName","kind":"calls","metadata":{"unresolvedName":"getFileName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:MentionTag","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:formatMentionLabel","kind":"calls","metadata":{"unresolvedName":"formatMentionLabel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:MentionTag","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:MentionTag","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:MentionTag","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:MentionTag","to":"symbol-name:onClick","kind":"calls","metadata":{"unresolvedName":"onClick"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:MentionTag","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:MentionTag","to":"symbol-name:setCopied","kind":"calls","metadata":{"unresolvedName":"setCopied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:MentionTag","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:MentionTag","to":"symbol-name:clipboardErrorHandler","kind":"calls","metadata":{"unresolvedName":"clipboardErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:","to":"symbol-name:onClick","kind":"calls","metadata":{"unresolvedName":"onClick"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:","to":"symbol-name:setCopied","kind":"calls","metadata":{"unresolvedName":"setCopied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:","to":"symbol-name:clipboardErrorHandler","kind":"calls","metadata":{"unresolvedName":"clipboardErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:RichText","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:RichText","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:RichText","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:parseMentions","kind":"calls","metadata":{"unresolvedName":"parseMentions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:RichText","to":"external:segments.map","kind":"calls","metadata":{"unresolvedName":"segments.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/MentionTag.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","to":"symbol-name:setMenuState","kind":"calls","metadata":{"unresolvedName":"setMenuState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","to":"symbol-name:onMenuClose","kind":"calls","metadata":{"unresolvedName":"onMenuClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getPlainText","kind":"calls","metadata":{"unresolvedName":"getPlainText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getSerializedText","kind":"calls","metadata":{"unresolvedName":"getSerializedText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","to":"symbol-name:onTextChange","kind":"calls","metadata":{"unresolvedName":"onTextChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getCursorPosition","kind":"calls","metadata":{"unresolvedName":"getCursorPosition"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:detectMentionTrigger","kind":"calls","metadata":{"unresolvedName":"detectMentionTrigger"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","to":"symbol-name:openMenu","kind":"calls","metadata":{"unresolvedName":"openMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toAbsolutePath","kind":"calls","metadata":{"unresolvedName":"toAbsolutePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","to":"external:plainText.slice","kind":"calls","metadata":{"unresolvedName":"plainText.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:rebuildEditorContent","kind":"calls","metadata":{"unresolvedName":"rebuildEditorContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","to":"symbol-name:setMentions","kind":"calls","metadata":{"unresolvedName":"setMentions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","to":"external:editor.focus","kind":"calls","metadata":{"unresolvedName":"editor.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:useMention","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:moveCursorToEnd","kind":"calls","metadata":{"unresolvedName":"moveCursorToEnd"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"symbol-name:setMenuState","kind":"calls","metadata":{"unresolvedName":"setMenuState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"symbol-name:setMenuState","kind":"calls","metadata":{"unresolvedName":"setMenuState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"symbol-name:onMenuClose","kind":"calls","metadata":{"unresolvedName":"onMenuClose"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getPlainText","kind":"calls","metadata":{"unresolvedName":"getPlainText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getSerializedText","kind":"calls","metadata":{"unresolvedName":"getSerializedText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"symbol-name:onTextChange","kind":"calls","metadata":{"unresolvedName":"onTextChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getCursorPosition","kind":"calls","metadata":{"unresolvedName":"getCursorPosition"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:detectMentionTrigger","kind":"calls","metadata":{"unresolvedName":"detectMentionTrigger"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"symbol-name:openMenu","kind":"calls","metadata":{"unresolvedName":"openMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toAbsolutePath","kind":"calls","metadata":{"unresolvedName":"toAbsolutePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getPlainText","kind":"calls","metadata":{"unresolvedName":"getPlainText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"external:plainText.slice","kind":"calls","metadata":{"unresolvedName":"plainText.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:rebuildEditorContent","kind":"calls","metadata":{"unresolvedName":"rebuildEditorContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getSerializedText","kind":"calls","metadata":{"unresolvedName":"getSerializedText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"symbol-name:onTextChange","kind":"calls","metadata":{"unresolvedName":"onTextChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"symbol-name:setMentions","kind":"calls","metadata":{"unresolvedName":"setMentions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"symbol-name:closeMenu","kind":"calls","metadata":{"unresolvedName":"closeMenu"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"external:editor.focus","kind":"calls","metadata":{"unresolvedName":"editor.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:moveCursorToEnd","kind":"calls","metadata":{"unresolvedName":"moveCursorToEnd"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"external:editor.focus","kind":"calls","metadata":{"unresolvedName":"editor.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:moveCursorToEnd","kind":"calls","metadata":{"unresolvedName":"moveCursorToEnd"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"symbol-name:setMenuState","kind":"calls","metadata":{"unresolvedName":"setMenuState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"symbol-name:setMentions","kind":"calls","metadata":{"unresolvedName":"setMentions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getSerializedText","kind":"calls","metadata":{"unresolvedName":"getSerializedText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getPlainText","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getPlainText","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getPlainText","to":"external:el.classList.contains","kind":"calls","metadata":{"unresolvedName":"el.classList.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getPlainText","to":"external:el.childNodes.forEach","kind":"calls","metadata":{"unresolvedName":"el.childNodes.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getPlainText","to":"external:editor.childNodes.forEach","kind":"calls","metadata":{"unresolvedName":"editor.childNodes.forEach"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:walk","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:walk","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:walk","to":"external:el.classList.contains","kind":"calls","metadata":{"unresolvedName":"el.classList.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:walk","to":"external:el.childNodes.forEach","kind":"calls","metadata":{"unresolvedName":"el.childNodes.forEach"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getSerializedText","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getSerializedText","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getSerializedText","to":"external:el.classList.contains","kind":"calls","metadata":{"unresolvedName":"el.classList.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getSerializedText","to":"external:el.childNodes.forEach","kind":"calls","metadata":{"unresolvedName":"el.childNodes.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getSerializedText","to":"external:editor.childNodes.forEach","kind":"calls","metadata":{"unresolvedName":"editor.childNodes.forEach"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:walk","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:walk","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:walk","to":"external:el.classList.contains","kind":"calls","metadata":{"unresolvedName":"el.classList.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:walk","to":"external:el.childNodes.forEach","kind":"calls","metadata":{"unresolvedName":"el.childNodes.forEach"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getCursorPosition","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getCursorPosition","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getCursorPosition","to":"external:window.getSelection","kind":"calls","metadata":{"unresolvedName":"window.getSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getCursorPosition","to":"external:selection.getRangeAt","kind":"calls","metadata":{"unresolvedName":"selection.getRangeAt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getCursorPosition","to":"external:range.cloneRange","kind":"calls","metadata":{"unresolvedName":"range.cloneRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getCursorPosition","to":"external:preCaretRange.selectNodeContents","kind":"calls","metadata":{"unresolvedName":"preCaretRange.selectNodeContents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getCursorPosition","to":"external:preCaretRange.setEnd","kind":"calls","metadata":{"unresolvedName":"preCaretRange.setEnd"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getCursorPosition","to":"external:el.classList.contains","kind":"calls","metadata":{"unresolvedName":"el.classList.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getCursorPosition","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:getCursorPosition","to":"symbol-name:walk","kind":"calls","metadata":{"unresolvedName":"walk"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:walk","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:walk","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:walk","to":"external:el.classList.contains","kind":"calls","metadata":{"unresolvedName":"el.classList.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:walk","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:walk","to":"symbol-name:walk","kind":"calls","metadata":{"unresolvedName":"walk"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:rebuildEditorContent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:rebuildEditorContent","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:rebuildEditorContent","to":"external:editor.querySelectorAll('.mention-tag').forEach","kind":"calls","metadata":{"unresolvedName":"editor.querySelectorAll('.mention-tag').forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:rebuildEditorContent","to":"external:editor.querySelectorAll","kind":"calls","metadata":{"unresolvedName":"editor.querySelectorAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:rebuildEditorContent","to":"external:mentionSpans.push","kind":"calls","metadata":{"unresolvedName":"mentionSpans.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:rebuildEditorContent","to":"external:span.cloneNode","kind":"calls","metadata":{"unresolvedName":"span.cloneNode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:rebuildEditorContent","to":"external:editor.appendChild","kind":"calls","metadata":{"unresolvedName":"editor.appendChild"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:rebuildEditorContent","to":"external:document.createTextNode","kind":"calls","metadata":{"unresolvedName":"document.createTextNode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:rebuildEditorContent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/createMentionElement.ts:createMentionElement","kind":"calls","metadata":{"unresolvedName":"createMentionElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:rebuildEditorContent","to":"external:afterText.trimStart","kind":"calls","metadata":{"unresolvedName":"afterText.trimStart"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"external:mentionSpans.push","kind":"calls","metadata":{"unresolvedName":"mentionSpans.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:","to":"external:span.cloneNode","kind":"calls","metadata":{"unresolvedName":"span.cloneNode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:moveCursorToEnd","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:moveCursorToEnd","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:moveCursorToEnd","to":"external:document.createRange","kind":"calls","metadata":{"unresolvedName":"document.createRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:moveCursorToEnd","to":"external:window.getSelection","kind":"calls","metadata":{"unresolvedName":"window.getSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:moveCursorToEnd","to":"external:range.setStart","kind":"calls","metadata":{"unresolvedName":"range.setStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:moveCursorToEnd","to":"external:range.setStartAfter","kind":"calls","metadata":{"unresolvedName":"range.setStartAfter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:moveCursorToEnd","to":"external:range.collapse","kind":"calls","metadata":{"unresolvedName":"range.collapse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:moveCursorToEnd","to":"external:sel?.removeAllRanges","kind":"calls","metadata":{"unresolvedName":"sel?.removeAllRanges"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/useMention.ts:moveCursorToEnd","to":"external:sel?.addRange","kind":"calls","metadata":{"unresolvedName":"sel?.addRange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(normalizePath('foo\\\\bar//baz.ts')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(normalizePath('foo\\\\bar//baz.ts')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(getFileName('foo/bar/baz.ts')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(getFileName('foo/bar/baz.ts')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:getFileName","kind":"calls","metadata":{"unresolvedName":"getFileName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(toAbsolutePath('./src/app.ts', '/workspace/project')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(toAbsolutePath('./src/app.ts', '/workspace/project')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toAbsolutePath","kind":"calls","metadata":{"unresolvedName":"toAbsolutePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(toAbsolutePath('', '/workspace/project')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(toAbsolutePath('', '/workspace/project')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(toFileUrl('/workspace/project/src/app.ts')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(toFileUrl('/workspace/project/src/app.ts')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toFileUrl","kind":"calls","metadata":{"unresolvedName":"toFileUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(toFileUrl('C:/repo/app.ts')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(toFileUrl('C:/repo/app.ts')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:serializeMention","kind":"calls","metadata":{"unresolvedName":"serializeMention"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(serialized).toBe","kind":"calls","metadata":{"unresolvedName":"expect(serialized).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(formatMentionLabel('agent', 'planner')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatMentionLabel('agent', 'planner')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:formatMentionLabel","kind":"calls","metadata":{"unresolvedName":"formatMentionLabel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:parseMentions","kind":"calls","metadata":{"unresolvedName":"parseMentions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(parsed).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(parsed).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(parsed[1]).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(parsed[1]).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:extractMentions","kind":"calls","metadata":{"unresolvedName":"extractMentions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(stripMentions('Look [[file:src/app.ts]] here')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(stripMentions('Look [[file:src/app.ts]] here')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:stripMentions","kind":"calls","metadata":{"unresolvedName":"stripMentions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:'Look here'.trim","kind":"calls","metadata":{"unresolvedName":"'Look here'.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(detectMentionTrigger('hello @src/com', 14)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(detectMentionTrigger('hello @src/com', 14)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:detectMentionTrigger","kind":"calls","metadata":{"unresolvedName":"detectMentionTrigger"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(detectMentionTrigger('email@test.com', 14)).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(detectMentionTrigger('email@test.com', 14)).toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(detectMentionTrigger('hello @src com', 14)).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(detectMentionTrigger('hello @src com', 14)).toBeNull"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(normalizePath('foo\\\\bar//baz.ts')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(normalizePath('foo\\\\bar//baz.ts')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(getFileName('foo/bar/baz.ts')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(getFileName('foo/bar/baz.ts')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:getFileName","kind":"calls","metadata":{"unresolvedName":"getFileName"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(toAbsolutePath('./src/app.ts', '/workspace/project')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(toAbsolutePath('./src/app.ts', '/workspace/project')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toAbsolutePath","kind":"calls","metadata":{"unresolvedName":"toAbsolutePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(toAbsolutePath('', '/workspace/project')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(toAbsolutePath('', '/workspace/project')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(toFileUrl('/workspace/project/src/app.ts')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(toFileUrl('/workspace/project/src/app.ts')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toFileUrl","kind":"calls","metadata":{"unresolvedName":"toFileUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(toFileUrl('C:/repo/app.ts')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(toFileUrl('C:/repo/app.ts')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:serializeMention","kind":"calls","metadata":{"unresolvedName":"serializeMention"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(serialized).toBe","kind":"calls","metadata":{"unresolvedName":"expect(serialized).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(formatMentionLabel('agent', 'planner')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatMentionLabel('agent', 'planner')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:formatMentionLabel","kind":"calls","metadata":{"unresolvedName":"formatMentionLabel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:parseMentions","kind":"calls","metadata":{"unresolvedName":"parseMentions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(parsed).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(parsed).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(parsed[1]).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(parsed[1]).toMatchObject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:extractMentions","kind":"calls","metadata":{"unresolvedName":"extractMentions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(stripMentions('Look [[file:src/app.ts]] here')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(stripMentions('Look [[file:src/app.ts]] here')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:stripMentions","kind":"calls","metadata":{"unresolvedName":"stripMentions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:'Look here'.trim","kind":"calls","metadata":{"unresolvedName":"'Look here'.trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(detectMentionTrigger('hello @src/com', 14)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(detectMentionTrigger('hello @src/com', 14)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:detectMentionTrigger","kind":"calls","metadata":{"unresolvedName":"detectMentionTrigger"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(detectMentionTrigger('email@test.com', 14)).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(detectMentionTrigger('email@test.com', 14)).toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.test.ts:","to":"external:expect(detectMentionTrigger('hello @src com', 14)).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(detectMentionTrigger('hello @src com', 14)).toBeNull"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:normalizePath","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:normalizePath","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:normalizePath","to":"external:path.replace(/\\\\/g, '/').replace","kind":"calls","metadata":{"unresolvedName":"path.replace(/\\\\/g, '/').replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:normalizePath","to":"external:path.replace","kind":"calls","metadata":{"unresolvedName":"path.replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:getFileName","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:getFileName","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:getFileName","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:getFileName","to":"external:normalized.split","kind":"calls","metadata":{"unresolvedName":"normalized.split"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toAbsolutePath","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toAbsolutePath","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toAbsolutePath","to":"external:normalizePath(rootPath).replace","kind":"calls","metadata":{"unresolvedName":"normalizePath(rootPath).replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toAbsolutePath","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toAbsolutePath","to":"external:normalizePath(relativePath).replace","kind":"calls","metadata":{"unresolvedName":"normalizePath(relativePath).replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toAbsolutePath","to":"external:/^[a-zA-Z]:/.test","kind":"calls","metadata":{"unresolvedName":"/^[a-zA-Z]:/.test"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toFileUrl","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toFileUrl","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toFileUrl","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toFileUrl","to":"external:/^[a-zA-Z]:/.test","kind":"calls","metadata":{"unresolvedName":"/^[a-zA-Z]:/.test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:toFileUrl","to":"external:normalized.startsWith","kind":"calls","metadata":{"unresolvedName":"normalized.startsWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:formatMentionLabel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:formatMentionLabel","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:formatMentionLabel","to":"external:type.charAt(0).toUpperCase","kind":"calls","metadata":{"unresolvedName":"type.charAt(0).toUpperCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:formatMentionLabel","to":"external:type.charAt","kind":"calls","metadata":{"unresolvedName":"type.charAt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:formatMentionLabel","to":"external:type.slice","kind":"calls","metadata":{"unresolvedName":"type.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:formatMentionShort","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:formatMentionShort","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:formatMentionShort","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:formatMentionLabel","kind":"calls","metadata":{"unresolvedName":"formatMentionLabel"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:serializeMention","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:serializeMention","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:parseMentions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:parseMentions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:parseMentions","to":"symbol-name:getMentionPattern","kind":"calls","metadata":{"unresolvedName":"getMentionPattern"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:parseMentions","to":"external:pattern.exec","kind":"calls","metadata":{"unresolvedName":"pattern.exec"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:parseMentions","to":"external:segments.push","kind":"calls","metadata":{"unresolvedName":"segments.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:parseMentions","to":"external:text.slice","kind":"calls","metadata":{"unresolvedName":"text.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:extractMentions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:extractMentions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:extractMentions","to":"symbol-name:getMentionPattern","kind":"calls","metadata":{"unresolvedName":"getMentionPattern"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:extractMentions","to":"external:pattern.exec","kind":"calls","metadata":{"unresolvedName":"pattern.exec"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:extractMentions","to":"external:mentions.push","kind":"calls","metadata":{"unresolvedName":"mentions.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:extractMentions","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:getFileName","kind":"calls","metadata":{"unresolvedName":"getFileName"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:stripMentions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:stripMentions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:stripMentions","to":"external:text.replace(getMentionPattern(), '').trim","kind":"calls","metadata":{"unresolvedName":"text.replace(getMentionPattern(), '').trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:stripMentions","to":"external:text.replace","kind":"calls","metadata":{"unresolvedName":"text.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:stripMentions","to":"symbol-name:getMentionPattern","kind":"calls","metadata":{"unresolvedName":"getMentionPattern"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:detectMentionTrigger","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:detectMentionTrigger","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:detectMentionTrigger","to":"external:text.slice","kind":"calls","metadata":{"unresolvedName":"text.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:detectMentionTrigger","to":"external:textBeforeCursor.lastIndexOf","kind":"calls","metadata":{"unresolvedName":"textBeforeCursor.lastIndexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:detectMentionTrigger","to":"external:textBeforeCursor.slice","kind":"calls","metadata":{"unresolvedName":"textBeforeCursor.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/mention/utils.ts:detectMentionTrigger","to":"external:textAfterTrigger.includes","kind":"calls","metadata":{"unresolvedName":"textAfterTrigger.includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:createAssistantMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:createAssistantMessage","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:createUserMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:createUserMessage","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:screen.queryByText","kind":"calls","metadata":{"unresolvedName":"screen.queryByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"symbol-name:createAssistantMessage","kind":"calls","metadata":{"unresolvedName":"createAssistantMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:expect(onFork).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onFork).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:expect(screen.queryByRole('button', { name: /fork|分叉/i })).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByRole('button', { name: /fork|分叉/i })).toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:screen.queryByRole","kind":"calls","metadata":{"unresolvedName":"screen.queryByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:expect(screen.queryByRole('button', { name: /copy/i })).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByRole('button', { name: /copy/i })).toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"symbol-name:createUserMessage","kind":"calls","metadata":{"unresolvedName":"createUserMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:expect(screen.getByText('History compacted')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('History compacted')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:screen.queryByText","kind":"calls","metadata":{"unresolvedName":"screen.queryByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"symbol-name:createAssistantMessage","kind":"calls","metadata":{"unresolvedName":"createAssistantMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:expect(onFork).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onFork).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:expect(onFork).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onFork).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"symbol-name:createAssistantMessage","kind":"calls","metadata":{"unresolvedName":"createAssistantMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:expect(screen.queryByRole('button', { name: /fork|分叉/i })).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByRole('button', { name: /fork|分叉/i })).toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:screen.queryByRole","kind":"calls","metadata":{"unresolvedName":"screen.queryByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:expect(screen.queryByRole('button', { name: /copy/i })).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByRole('button', { name: /copy/i })).toBeNull"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"symbol-name:createUserMessage","kind":"calls","metadata":{"unresolvedName":"createUserMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:expect(screen.getByText('History compacted')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('History compacted')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"external:diff","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"external:motion/mini","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:useEntryGrowAnimation","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:useEntryGrowAnimation","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:useEntryGrowAnimation","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:useEntryGrowAnimation","to":"symbol-name:useLayoutEffect","kind":"calls","metadata":{"unresolvedName":"useLayoutEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:useEntryGrowAnimation","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:useEntryGrowAnimation","to":"symbol-name:animate","kind":"calls","metadata":{"unresolvedName":"animate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:animate","kind":"calls","metadata":{"unresolvedName":"animate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:expandedMessages.has","kind":"calls","metadata":{"unresolvedName":"expandedMessages.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:overflowStateCache.get","kind":"calls","metadata":{"unresolvedName":"overflowStateCache.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:useLayoutEffect","kind":"calls","metadata":{"unresolvedName":"useLayoutEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:Number.parseFloat","kind":"calls","metadata":{"unresolvedName":"Number.parseFloat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:window.getComputedStyle","kind":"calls","metadata":{"unresolvedName":"window.getComputedStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:Number.isFinite","kind":"calls","metadata":{"unresolvedName":"Number.isFinite"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:overflowStateCache.set","kind":"calls","metadata":{"unresolvedName":"overflowStateCache.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:setIsOverflow","kind":"calls","metadata":{"unresolvedName":"setIsOverflow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:measure","kind":"calls","metadata":{"unresolvedName":"measure"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:resizeObserver.observe","kind":"calls","metadata":{"unresolvedName":"resizeObserver.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:document.fonts?.ready?.then","kind":"calls","metadata":{"unresolvedName":"document.fonts?.ready?.then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:resizeObserver.disconnect","kind":"calls","metadata":{"unresolvedName":"resizeObserver.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:expandedMessages.add","kind":"calls","metadata":{"unresolvedName":"expandedMessages.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:expandedMessages.delete","kind":"calls","metadata":{"unresolvedName":"expandedMessages.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:Number.parseFloat","kind":"calls","metadata":{"unresolvedName":"Number.parseFloat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:window.getComputedStyle","kind":"calls","metadata":{"unresolvedName":"window.getComputedStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:Number.isFinite","kind":"calls","metadata":{"unresolvedName":"Number.isFinite"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:overflowStateCache.set","kind":"calls","metadata":{"unresolvedName":"overflowStateCache.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:setIsOverflow","kind":"calls","metadata":{"unresolvedName":"setIsOverflow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:measure","kind":"calls","metadata":{"unresolvedName":"measure"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:resizeObserver.observe","kind":"calls","metadata":{"unresolvedName":"resizeObserver.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:document.fonts?.ready?.then","kind":"calls","metadata":{"unresolvedName":"document.fonts?.ready?.then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:resizeObserver.disconnect","kind":"calls","metadata":{"unresolvedName":"resizeObserver.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:measure","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:measure","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:measure","to":"external:Number.parseFloat","kind":"calls","metadata":{"unresolvedName":"Number.parseFloat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:measure","to":"external:window.getComputedStyle","kind":"calls","metadata":{"unresolvedName":"window.getComputedStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:measure","to":"external:Number.isFinite","kind":"calls","metadata":{"unresolvedName":"Number.isFinite"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:measure","to":"external:overflowStateCache.set","kind":"calls","metadata":{"unresolvedName":"overflowStateCache.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:measure","to":"symbol-name:setIsOverflow","kind":"calls","metadata":{"unresolvedName":"setIsOverflow"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:resizeObserver.disconnect","kind":"calls","metadata":{"unresolvedName":"resizeObserver.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:expandedMessages.add","kind":"calls","metadata":{"unresolvedName":"expandedMessages.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:expandedMessages.delete","kind":"calls","metadata":{"unresolvedName":"expandedMessages.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:expandedMessages.add","kind":"calls","metadata":{"unresolvedName":"expandedMessages.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:expandedMessages.delete","kind":"calls","metadata":{"unresolvedName":"expandedMessages.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:setIsForking","kind":"calls","metadata":{"unresolvedName":"setIsForking"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:onFork","kind":"calls","metadata":{"unresolvedName":"onFork"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:handleFork","kind":"calls","metadata":{"unresolvedName":"handleFork"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:setIsForking","kind":"calls","metadata":{"unresolvedName":"setIsForking"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:onFork","kind":"calls","metadata":{"unresolvedName":"onFork"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","kind":"calls","metadata":{"unresolvedName":"useTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:useEntryGrowAnimation","kind":"calls","metadata":{"unresolvedName":"useEntryGrowAnimation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:parts.filter","kind":"calls","metadata":{"unresolvedName":"parts.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:textParts.map(p => p.text).join","kind":"calls","metadata":{"unresolvedName":"textParts.map(p => p.text).join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:textParts.map","kind":"calls","metadata":{"unresolvedName":"textParts.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:fileParts.map","kind":"calls","metadata":{"unresolvedName":"fileParts.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:agentParts.map","kind":"calls","metadata":{"unresolvedName":"agentParts.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:setShowSystemContext","kind":"calls","metadata":{"unresolvedName":"setShowSystemContext"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:syntheticParts.map","kind":"calls","metadata":{"unresolvedName":"syntheticParts.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:compactionParts.map","kind":"calls","metadata":{"unresolvedName":"compactionParts.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:onUndo","kind":"calls","metadata":{"unresolvedName":"onUndo"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","kind":"calls","metadata":{"unresolvedName":"useTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:useEntryGrowAnimation","kind":"calls","metadata":{"unresolvedName":"useEntryGrowAnimation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:onEnsureParts","kind":"calls","metadata":{"unresolvedName":"onEnsureParts"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:groupPartsForRender","kind":"calls","metadata":{"unresolvedName":"groupPartsForRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:ended.add","kind":"calls","metadata":{"unresolvedName":"ended.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:parts\n .filter","kind":"calls","metadata":{"unresolvedName":"parts\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:fullText.trim","kind":"calls","metadata":{"unresolvedName":"fullText.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:parts.some","kind":"calls","metadata":{"unresolvedName":"parts.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:renderItems.map","kind":"calls","metadata":{"unresolvedName":"renderItems.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:renderItems.findLastIndex","kind":"calls","metadata":{"unresolvedName":"renderItems.findLastIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:endedReasoningIds.has","kind":"calls","metadata":{"unresolvedName":"endedReasoningIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration","kind":"calls","metadata":{"unresolvedName":"formatDuration"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","kind":"calls","metadata":{"unresolvedName":"formatDetailedDateTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCompletedAt","kind":"calls","metadata":{"unresolvedName":"formatCompletedAt"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:onEnsureParts","kind":"calls","metadata":{"unresolvedName":"onEnsureParts"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:ended.add","kind":"calls","metadata":{"unresolvedName":"ended.add"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:renderItems.findLastIndex","kind":"calls","metadata":{"unresolvedName":"renderItems.findLastIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:endedReasoningIds.has","kind":"calls","metadata":{"unresolvedName":"endedReasoningIds.has"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:isReadableTool","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:isReadableTool","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:isReadableTool","to":"external:READABLE_TOOL_PATTERNS.test","kind":"calls","metadata":{"unresolvedName":"READABLE_TOOL_PATTERNS.test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:isReadableTool","to":"external:toolName.toLowerCase","kind":"calls","metadata":{"unresolvedName":"toolName.toLowerCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","kind":"calls","metadata":{"unresolvedName":"useTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:useInlineToolRequests","kind":"calls","metadata":{"unresolvedName":"useInlineToolRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:parts.some","kind":"calls","metadata":{"unresolvedName":"parts.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:getTaskChildSessionId","kind":"calls","metadata":{"unresolvedName":"getTaskChildSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:findPermissionRequestForTool","kind":"calls","metadata":{"unresolvedName":"findPermissionRequestForTool"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:findQuestionRequestForTool","kind":"calls","metadata":{"unresolvedName":"findQuestionRequestForTool"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:parts.filter","kind":"calls","metadata":{"unresolvedName":"parts.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","kind":"calls","metadata":{"unresolvedName":"buildDescriptiveToolStepsSummary"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:extractToolData","kind":"calls","metadata":{"unresolvedName":"extractToolData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:computePartDiffStats","kind":"calls","metadata":{"unresolvedName":"computePartDiffStats"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:isReadableTool","kind":"calls","metadata":{"unresolvedName":"isReadableTool"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:stepsSummary?.map","kind":"calls","metadata":{"unresolvedName":"stepsSummary?.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatTokens","kind":"calls","metadata":{"unresolvedName":"formatTokens"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"external:parts.map","kind":"calls","metadata":{"unresolvedName":"parts.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:getTaskChildSessionId","kind":"calls","metadata":{"unresolvedName":"getTaskChildSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:findPermissionRequestForTool","kind":"calls","metadata":{"unresolvedName":"findPermissionRequestForTool"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:findQuestionRequestForTool","kind":"calls","metadata":{"unresolvedName":"findQuestionRequestForTool"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:extractToolData","kind":"calls","metadata":{"unresolvedName":"extractToolData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:computePartDiffStats","kind":"calls","metadata":{"unresolvedName":"computePartDiffStats"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatTokens","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatTokens","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatTokens","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatTokens","to":"external:(total / 1000).toFixed","kind":"calls","metadata":{"unresolvedName":"(total / 1000).toFixed"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:getToolSummaryCategory","kind":"calls","metadata":{"unresolvedName":"getToolSummaryCategory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"external:doneMap.has","kind":"calls","metadata":{"unresolvedName":"doneMap.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"external:categoryOrder.push","kind":"calls","metadata":{"unresolvedName":"categoryOrder.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"external:doneMap.set","kind":"calls","metadata":{"unresolvedName":"doneMap.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"external:failedMap.set","kind":"calls","metadata":{"unresolvedName":"failedMap.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"external:activeMap.set","kind":"calls","metadata":{"unresolvedName":"activeMap.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"external:doneMap.get","kind":"calls","metadata":{"unresolvedName":"doneMap.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"external:failedMap.get","kind":"calls","metadata":{"unresolvedName":"failedMap.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:isToolPartActive","kind":"calls","metadata":{"unresolvedName":"isToolPartActive"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"external:activeMap.get","kind":"calls","metadata":{"unresolvedName":"activeMap.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"external:categoryOrder.filter","kind":"calls","metadata":{"unresolvedName":"categoryOrder.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"external:segments.push","kind":"calls","metadata":{"unresolvedName":"segments.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatToolSummarySegment","kind":"calls","metadata":{"unresolvedName":"formatToolSummarySegment"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:pushFinishedSegments","kind":"calls","metadata":{"unresolvedName":"pushFinishedSegments"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"external:finishedCategories.slice","kind":"calls","metadata":{"unresolvedName":"finishedCategories.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"external:finishedCategories\n .slice(MAX_CATEGORIES)\n .reduce","kind":"calls","metadata":{"unresolvedName":"finishedCategories\n .slice(MAX_CATEGORIES)\n .reduce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"external:finishedCategories\n .slice","kind":"calls","metadata":{"unresolvedName":"finishedCategories\n .slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"external:seg.text.charAt(0).toLowerCase","kind":"calls","metadata":{"unresolvedName":"seg.text.charAt(0).toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"external:seg.text.charAt","kind":"calls","metadata":{"unresolvedName":"seg.text.charAt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:buildDescriptiveToolStepsSummary","to":"external:seg.text.slice","kind":"calls","metadata":{"unresolvedName":"seg.text.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:pushFinishedSegments","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:pushFinishedSegments","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:pushFinishedSegments","to":"external:doneMap.get","kind":"calls","metadata":{"unresolvedName":"doneMap.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:pushFinishedSegments","to":"external:failedMap.get","kind":"calls","metadata":{"unresolvedName":"failedMap.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:pushFinishedSegments","to":"external:segments.push","kind":"calls","metadata":{"unresolvedName":"segments.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:pushFinishedSegments","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatToolSummarySegment","kind":"calls","metadata":{"unresolvedName":"formatToolSummarySegment"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:pushFinishedSegments","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatToolSummarySegment","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatToolSummarySegment","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatToolSummarySegment","to":"external:phase.charAt(0).toUpperCase","kind":"calls","metadata":{"unresolvedName":"phase.charAt(0).toUpperCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatToolSummarySegment","to":"external:phase.charAt","kind":"calls","metadata":{"unresolvedName":"phase.charAt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatToolSummarySegment","to":"external:phase.slice","kind":"calls","metadata":{"unresolvedName":"phase.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatToolSummarySegment","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:getToolSummaryCategory","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:getToolSummaryCategory","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:getToolSummaryCategory","to":"external:toolName.toLowerCase","kind":"calls","metadata":{"unresolvedName":"toolName.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:getToolSummaryCategory","to":"external:lower.includes","kind":"calls","metadata":{"unresolvedName":"lower.includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:isToolPartActive","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:isToolPartActive","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:getTaskChildSessionId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:getTaskChildSessionId","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:getTaskChildSessionId","to":"external:part.tool.toLowerCase","kind":"calls","metadata":{"unresolvedName":"part.tool.toLowerCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:computePartDiffStats","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:computePartDiffStats","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:computePartDiffStats","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:diffPairStats","kind":"calls","metadata":{"unresolvedName":"diffPairStats"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:diffPairStats","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:diffPairStats","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:diffPairStats","to":"symbol-name:diffLines","kind":"calls","metadata":{"unresolvedName":"diffLines"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:hasMoreToolsAhead","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:hasMoreToolsAhead","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:hasMoreToolsAhead","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleTextPart","kind":"calls","metadata":{"unresolvedName":"isVisibleTextPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:hasMoreToolsAhead","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleReasoningPart","kind":"calls","metadata":{"unresolvedName":"isVisibleReasoningPart"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:groupPartsForRender","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:groupPartsForRender","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:groupPartsForRender","to":"external:result.push","kind":"calls","metadata":{"unresolvedName":"result.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:groupPartsForRender","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleTextPart","kind":"calls","metadata":{"unresolvedName":"isVisibleTextPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:groupPartsForRender","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleReasoningPart","kind":"calls","metadata":{"unresolvedName":"isVisibleReasoningPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:groupPartsForRender","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isToolPart","kind":"calls","metadata":{"unresolvedName":"isToolPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:groupPartsForRender","to":"external:toolGroup.push","kind":"calls","metadata":{"unresolvedName":"toolGroup.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:groupPartsForRender","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:hasMoreToolsAhead","kind":"calls","metadata":{"unresolvedName":"hasMoreToolsAhead"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:groupPartsForRender","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:flushToolGroup","kind":"calls","metadata":{"unresolvedName":"flushToolGroup"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:flushToolGroup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:flushToolGroup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:flushToolGroup","to":"external:result.push","kind":"calls","metadata":{"unresolvedName":"result.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromFilePart","kind":"calls","metadata":{"unresolvedName":"fromFilePart"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromAgentPart","kind":"calls","metadata":{"unresolvedName":"fromAgentPart"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/AttachmentPartViews.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/utils.ts:fromTextPart","kind":"calls","metadata":{"unresolvedName":"fromTextPart"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/CodeBlock.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:getErrorInfo","kind":"calls","metadata":{"unresolvedName":"getErrorInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:getErrorInfo","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:getErrorInfo","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/MessageErrorView.tsx:getErrorInfo","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:expect(screen.getByRole('button', { expanded: true })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { expanded: true })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:expect(screen.getByText('Thinking...')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('Thinking...')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:expect(screen.getAllByText('thinking through steps...').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('thinking through steps...').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:screen.getAllByText","kind":"calls","metadata":{"unresolvedName":"screen.getAllByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:expect(screen.queryByTestId('markdown-content')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByTestId('markdown-content')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:screen.queryByTestId","kind":"calls","metadata":{"unresolvedName":"screen.queryByTestId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:expect(screen.getByTestId('markdown-content')).toHaveTextContent","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByTestId('markdown-content')).toHaveTextContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:expect(screen.queryByRole('button')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByRole('button')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:screen.queryByRole","kind":"calls","metadata":{"unresolvedName":"screen.queryByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:expect(screen.getAllByText('short').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('short').length).toBeGreaterThan"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:expect(screen.getByRole('button', { expanded: true })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { expanded: true })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:expect(screen.getByText('Thinking...')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('Thinking...')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:expect(screen.getAllByText('thinking through steps...').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('thinking through steps...').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:screen.getAllByText","kind":"calls","metadata":{"unresolvedName":"screen.getAllByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:expect(screen.queryByTestId('markdown-content')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByTestId('markdown-content')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:screen.queryByTestId","kind":"calls","metadata":{"unresolvedName":"screen.queryByTestId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:expect(screen.getByTestId('markdown-content')).toHaveTextContent","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByTestId('markdown-content')).toHaveTextContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:expect(screen.queryByRole('button')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByRole('button')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:screen.queryByRole","kind":"calls","metadata":{"unresolvedName":"screen.queryByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:expect(screen.getAllByText('short').length).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(screen.getAllByText('short').length).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.test.tsx:","to":"external:screen.getAllByText","kind":"calls","metadata":{"unresolvedName":"screen.getAllByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/MarkdownRenderer.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","kind":"calls","metadata":{"unresolvedName":"useTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"external:rawText.trim","kind":"calls","metadata":{"unresolvedName":"rawText.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"external:(displayText || '').replace(/\\s+/g, ' ').trim","kind":"calls","metadata":{"unresolvedName":"(displayText || '').replace(/\\s+/g, ' ').trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"external:(displayText || '').replace","kind":"calls","metadata":{"unresolvedName":"(displayText || '').replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"external:(durationMs / 1000).toFixed","kind":"calls","metadata":{"unresolvedName":"(durationMs / 1000).toFixed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"external:/[\\r\\n]/.test","kind":"calls","metadata":{"unresolvedName":"/[\\r\\n]/.test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:setSummaryOverflow","kind":"calls","metadata":{"unresolvedName":"setSummaryOverflow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:measureSummaryOverflow","kind":"calls","metadata":{"unresolvedName":"measureSummaryOverflow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"external:ro.observe","kind":"calls","metadata":{"unresolvedName":"ro.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"external:fontsReady.then(() => measureSummaryOverflow()).catch","kind":"calls","metadata":{"unresolvedName":"fontsReady.then(() => measureSummaryOverflow()).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"external:fontsReady.then","kind":"calls","metadata":{"unresolvedName":"fontsReady.then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"external:ro?.disconnect","kind":"calls","metadata":{"unresolvedName":"ro?.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"external:(durationMs / 1000).toFixed","kind":"calls","metadata":{"unresolvedName":"(durationMs / 1000).toFixed"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:setSummaryOverflow","kind":"calls","metadata":{"unresolvedName":"setSummaryOverflow"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:measureSummaryOverflow","kind":"calls","metadata":{"unresolvedName":"measureSummaryOverflow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"external:ro.observe","kind":"calls","metadata":{"unresolvedName":"ro.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"external:fontsReady.then(() => measureSummaryOverflow()).catch","kind":"calls","metadata":{"unresolvedName":"fontsReady.then(() => measureSummaryOverflow()).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"external:fontsReady.then","kind":"calls","metadata":{"unresolvedName":"fontsReady.then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"external:ro?.disconnect","kind":"calls","metadata":{"unresolvedName":"ro?.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ReasoningPartView.tsx:","to":"external:ro?.disconnect","kind":"calls","metadata":{"unresolvedName":"ro?.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","kind":"calls","metadata":{"unresolvedName":"useTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatNumber","kind":"calls","metadata":{"unresolvedName":"formatNumber"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCost","kind":"calls","metadata":{"unresolvedName":"formatCost"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration","kind":"calls","metadata":{"unresolvedName":"formatDuration"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","kind":"calls","metadata":{"unresolvedName":"formatDetailedDateTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/StepFinishPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCompletedAt","kind":"calls","metadata":{"unresolvedName":"formatCompletedAt"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx:useSessionNavigation","kind":"calls","metadata":{"unresolvedName":"useSessionNavigation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:useChildSessions","kind":"calls","metadata":{"unresolvedName":"useChildSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:findMatchingChildSession","kind":"calls","metadata":{"unresolvedName":"findMatchingChildSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:","to":"symbol-name:navigateToSession","kind":"calls","metadata":{"unresolvedName":"navigateToSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:handleEnter","kind":"calls","metadata":{"unresolvedName":"handleEnter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:handleEnter","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:handleEnter","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:handleEnter","to":"symbol-name:navigateToSession","kind":"calls","metadata":{"unresolvedName":"navigateToSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:handleEnter","kind":"calls","metadata":{"unresolvedName":"handleEnter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:findMatchingChildSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:findMatchingChildSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:findMatchingChildSession","to":"external:childSessions.filter","kind":"calls","metadata":{"unresolvedName":"childSessions.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:findMatchingChildSession","to":"external:matchingAgent.sort","kind":"calls","metadata":{"unresolvedName":"matchingAgent.sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SubtaskPartView.tsx:findMatchingChildSession","to":"external:childSessions.sort","kind":"calls","metadata":{"unresolvedName":"childSessions.sort"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:expect(toggle).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(toggle).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:expect(screen.getByText('network timeout')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('network timeout')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:expect(screen.getByText('src/app.tsx')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('src/app.tsx')).toBeInTheDocument"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:expect(toggle).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(toggle).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:expect(screen.getByText('network timeout')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('network timeout')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:expect(toggle).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(toggle).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:expect(screen.getByText('src/app.tsx')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('src/app.tsx')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","to":"external:new Date(time.created).toLocaleTimeString","kind":"calls","metadata":{"unresolvedName":"new Date(time.created).toLocaleTimeString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","to":"external:hash.slice","kind":"calls","metadata":{"unresolvedName":"hash.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/SystemPartViews.tsx:","to":"external:files.map","kind":"calls","metadata":{"unresolvedName":"files.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/TextPartView.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/TextPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/TextPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/TextPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/TextPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/TextPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/TextPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/TextPartView.tsx:","to":"external:displayText.trim","kind":"calls","metadata":{"unresolvedName":"displayText.trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:createRunningToolPart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:createRunningToolPart","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:vi.setSystemTime","kind":"calls","metadata":{"unresolvedName":"vi.setSystemTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:getActiveCalibratedNowMock.mockReset","kind":"calls","metadata":{"unresolvedName":"getActiveCalibratedNowMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:getActiveCalibratedNowMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"getActiveCalibratedNowMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:createRunningToolPart","kind":"calls","metadata":{"unresolvedName":"createRunningToolPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:expect(screen.getByText('Running')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('Running')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:expect(screen.getByText('2.5s')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('2.5s')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:expect(screen.getByText('3.0s')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('3.0s')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:expect(screen.getByText('3.5s')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('3.5s')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:expect(screen.getByText('0ms')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('0ms')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:expect(screen.getByText('123ms')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('123ms')).toBeInTheDocument"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:vi.setSystemTime","kind":"calls","metadata":{"unresolvedName":"vi.setSystemTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:getActiveCalibratedNowMock.mockReset","kind":"calls","metadata":{"unresolvedName":"getActiveCalibratedNowMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:getActiveCalibratedNowMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"getActiveCalibratedNowMock.mockReturnValue"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:createRunningToolPart","kind":"calls","metadata":{"unresolvedName":"createRunningToolPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:expect(screen.getByText('Running')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('Running')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:expect(screen.getByText('2.5s')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('2.5s')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:expect(screen.getByText('3.0s')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('3.0s')).toBeInTheDocument"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:getActiveCalibratedNowMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"getActiveCalibratedNowMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:createRunningToolPart","kind":"calls","metadata":{"unresolvedName":"createRunningToolPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:expect(screen.getByText('3.5s')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('3.5s')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:getActiveCalibratedNowMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"getActiveCalibratedNowMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:createRunningToolPart","kind":"calls","metadata":{"unresolvedName":"createRunningToolPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:expect(screen.getByText('0ms')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('0ms')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:getActiveCalibratedNowMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"getActiveCalibratedNowMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:createRunningToolPart","kind":"calls","metadata":{"unresolvedName":"createRunningToolPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:expect(screen.getByText('123ms')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('123ms')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"external:diff","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlinePermission.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineQuestion.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:getInputDescription","kind":"calls","metadata":{"unresolvedName":"getInputDescription"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:useNow","kind":"calls","metadata":{"unresolvedName":"useNow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"external:serverStore.getActiveCalibratedNow","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveCalibratedNow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","kind":"calls","metadata":{"unresolvedName":"useTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:useInlineToolRequests","kind":"calls","metadata":{"unresolvedName":"useInlineToolRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:getTaskChildSessionId","kind":"calls","metadata":{"unresolvedName":"getTaskChildSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:findPermissionRequestForTool","kind":"calls","metadata":{"unresolvedName":"findPermissionRequestForTool"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/InlineToolRequestContext.tsx:findQuestionRequestForTool","kind":"calls","metadata":{"unresolvedName":"findQuestionRequestForTool"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:setCachedPermissionRequest","kind":"calls","metadata":{"unresolvedName":"setCachedPermissionRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"external:toolName.toLowerCase","kind":"calls","metadata":{"unresolvedName":"toolName.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:isReadableTool","kind":"calls","metadata":{"unresolvedName":"isReadableTool"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:getToolIcon","kind":"calls","metadata":{"unresolvedName":"getToolIcon"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:extractToolData","kind":"calls","metadata":{"unresolvedName":"extractToolData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:computeDiffStatsFromData","kind":"calls","metadata":{"unresolvedName":"computeDiffStatsFromData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatToolName","kind":"calls","metadata":{"unresolvedName":"formatToolName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration","kind":"calls","metadata":{"unresolvedName":"formatDuration"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:setCachedPermissionRequest","kind":"calls","metadata":{"unresolvedName":"setCachedPermissionRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:setCachedPermissionRequest","kind":"calls","metadata":{"unresolvedName":"setCachedPermissionRequest"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:setCachedPermissionRequest","kind":"calls","metadata":{"unresolvedName":"setCachedPermissionRequest"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:isReadableTool","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:isReadableTool","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:isReadableTool","to":"external:READABLE_TOOL_PATTERNS.test","kind":"calls","metadata":{"unresolvedName":"READABLE_TOOL_PATTERNS.test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:isReadableTool","to":"external:toolName.toLowerCase","kind":"calls","metadata":{"unresolvedName":"toolName.toLowerCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:computeDiffStatsFromData","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:computeDiffStatsFromData","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:computeDiffStatsFromData","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:computeDiffPair","kind":"calls","metadata":{"unresolvedName":"computeDiffPair"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:computeDiffPair","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:computeDiffPair","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:computeDiffPair","to":"symbol-name:diffLines","kind":"calls","metadata":{"unresolvedName":"diffLines"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"external:tool.toLowerCase","kind":"calls","metadata":{"unresolvedName":"tool.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"external:lowerTool.includes","kind":"calls","metadata":{"unresolvedName":"lowerTool.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts:hasTodos","kind":"calls","metadata":{"unresolvedName":"hasTodos"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:getToolConfig","kind":"calls","metadata":{"unresolvedName":"getToolConfig"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:getTaskChildSessionId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:getTaskChildSessionId","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:getTaskChildSessionId","to":"external:part.tool.toLowerCase","kind":"calls","metadata":{"unresolvedName":"part.tool.toLowerCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:getInputDescription","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.tsx:getInputDescription","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx","to":"external:lucide-react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx","to":"external:lucide-react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx:wrapTool","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx:wrapTool","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","kind":"calls","metadata":{"unresolvedName":"defaultExtractData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts:","to":"external:expect(extracted.files).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(extracted.files).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts:","to":"external:expect(extracted.diagnostics).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(extracted.diagnostics).toEqual"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","kind":"calls","metadata":{"unresolvedName":"defaultExtractData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts:","to":"external:expect(extracted.files).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(extracted.files).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.test.ts:","to":"external:expect(extracted.diagnostics).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(extracted.diagnostics).toEqual"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:","to":"external:name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"name.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:","to":"external:keywords.some","kind":"calls","metadata":{"unresolvedName":"keywords.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:","to":"external:lower.includes","kind":"calls","metadata":{"unresolvedName":"lower.includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:","to":"external:name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"name.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:","to":"external:names.some","kind":"calls","metadata":{"unresolvedName":"names.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","to":"external:Object.keys","kind":"calls","metadata":{"unresolvedName":"Object.keys"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","to":"external:(metadata.files as MetadataFileEntry[]).map","kind":"calls","metadata":{"unresolvedName":"(metadata.files as MetadataFileEntry[]).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","to":"external:Object.entries","kind":"calls","metadata":{"unresolvedName":"Object.entries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","to":"external:diagnostics.push","kind":"calls","metadata":{"unresolvedName":"diagnostics.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","to":"external:file.split(/[/\\\\]/).pop","kind":"calls","metadata":{"unresolvedName":"file.split(/[/\\\\]/).pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","to":"external:file.split","kind":"calls","metadata":{"unresolvedName":"file.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","to":"external:diagnostics.filter","kind":"calls","metadata":{"unresolvedName":"diagnostics.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:detectLanguage","kind":"calls","metadata":{"unresolvedName":"detectLanguage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","to":"external:result.output.trim","kind":"calls","metadata":{"unresolvedName":"result.output.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","to":"external:trimmed.startsWith","kind":"calls","metadata":{"unresolvedName":"trimmed.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","to":"external:trimmed.endsWith","kind":"calls","metadata":{"unresolvedName":"trimmed.endsWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:bashExtractData","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:bashExtractData","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:bashExtractData","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","kind":"calls","metadata":{"unresolvedName":"defaultExtractData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:bashExtractData","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:bashExtractData","to":"external:cwd.trim","kind":"calls","metadata":{"unresolvedName":"cwd.trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:readExtractData","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:readExtractData","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:readExtractData","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","kind":"calls","metadata":{"unresolvedName":"defaultExtractData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:readExtractData","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:readExtractData","to":"external:str.match","kind":"calls","metadata":{"unresolvedName":"str.match"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:writeExtractData","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:writeExtractData","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:writeExtractData","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","kind":"calls","metadata":{"unresolvedName":"defaultExtractData"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:editExtractData","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:editExtractData","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:editExtractData","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","kind":"calls","metadata":{"unresolvedName":"defaultExtractData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:editExtractData","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:getToolConfig","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:getToolConfig","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:getToolConfig","to":"external:toolRegistry.find","kind":"calls","metadata":{"unresolvedName":"toolRegistry.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:getToolConfig","to":"external:config.match","kind":"calls","metadata":{"unresolvedName":"config.match"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:getToolIcon","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:getToolIcon","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:getToolIcon","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:getToolConfig","kind":"calls","metadata":{"unresolvedName":"getToolConfig"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:extractToolData","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:extractToolData","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:extractToolData","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:getToolConfig","kind":"calls","metadata":{"unresolvedName":"getToolConfig"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:extractToolData","to":"external:config.extractData","kind":"calls","metadata":{"unresolvedName":"config.extractData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:extractToolData","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/registry.tsx:defaultExtractData","kind":"calls","metadata":{"unresolvedName":"defaultExtractData"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/FullscreenViewer.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:BashRenderer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:BashRenderer","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:BashRenderer","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:BashRenderer","to":"external:data.input?.trim","kind":"calls","metadata":{"unresolvedName":"data.input?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:BashRenderer","to":"external:data.output?.trim","kind":"calls","metadata":{"unresolvedName":"data.output?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:BashRenderer","to":"external:data.cwd?.trim","kind":"calls","metadata":{"unresolvedName":"data.cwd?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:BashRenderer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:useResponsiveMaxHeight","kind":"calls","metadata":{"unresolvedName":"useResponsiveMaxHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:BashRenderer","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:BashRenderer","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:BashRenderer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:parseAnsi","kind":"calls","metadata":{"unresolvedName":"parseAnsi"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:BashRenderer","to":"symbol-name:setFullscreenOpen","kind":"calls","metadata":{"unresolvedName":"setFullscreenOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:BashRenderer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:BashRenderer","to":"symbol-name:surface","kind":"calls","metadata":{"unresolvedName":"surface"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:parseAnsi","kind":"calls","metadata":{"unresolvedName":"parseAnsi"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:TerminalSurface","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:TerminalSurface","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:WorkingDirectoryPrompt","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:WorkingDirectoryPrompt","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:WorkingDirectoryPrompt","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:WorkingDirectoryPrompt","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:WorkingDirectoryPrompt","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:truncatePromptPath","kind":"calls","metadata":{"unresolvedName":"truncatePromptPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:WorkingDirectoryPrompt","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:WorkingDirectoryPrompt","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:WorkingDirectoryPrompt","to":"symbol-name:setCopied","kind":"calls","metadata":{"unresolvedName":"setCopied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:WorkingDirectoryPrompt","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:WorkingDirectoryPrompt","to":"symbol-name:clipboardErrorHandler","kind":"calls","metadata":{"unresolvedName":"clipboardErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:","to":"symbol-name:setCopied","kind":"calls","metadata":{"unresolvedName":"setCopied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:","to":"symbol-name:clipboardErrorHandler","kind":"calls","metadata":{"unresolvedName":"clipboardErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:truncatePromptPath","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:truncatePromptPath","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:truncatePromptPath","to":"external:path.includes","kind":"calls","metadata":{"unresolvedName":"path.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:truncatePromptPath","to":"external:path.split(/[\\\\/]+/).filter","kind":"calls","metadata":{"unresolvedName":"path.split(/[\\\\/]+/).filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:truncatePromptPath","to":"external:path.split","kind":"calls","metadata":{"unresolvedName":"path.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:truncatePromptPath","to":"external:path.startsWith","kind":"calls","metadata":{"unresolvedName":"path.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:truncatePromptPath","to":"external:segments.slice(-2).join","kind":"calls","metadata":{"unresolvedName":"segments.slice(-2).join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:truncatePromptPath","to":"external:segments.slice","kind":"calls","metadata":{"unresolvedName":"segments.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:truncatePromptPath","to":"external:root.endsWith","kind":"calls","metadata":{"unresolvedName":"root.endsWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:ClickToCopyCommand","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:ClickToCopyCommand","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:ClickToCopyCommand","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:ClickToCopyCommand","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:ClickToCopyCommand","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:ClickToCopyCommand","to":"symbol-name:setCopied","kind":"calls","metadata":{"unresolvedName":"setCopied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:ClickToCopyCommand","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:ClickToCopyCommand","to":"symbol-name:clipboardErrorHandler","kind":"calls","metadata":{"unresolvedName":"clipboardErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:","to":"symbol-name:setCopied","kind":"calls","metadata":{"unresolvedName":"setCopied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:","to":"symbol-name:clipboardErrorHandler","kind":"calls","metadata":{"unresolvedName":"clipboardErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:HighlightedCommand","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:HighlightedCommand","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:HighlightedCommand","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","kind":"calls","metadata":{"unresolvedName":"useSyntaxHighlight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:HighlightedCommand","to":"external:tokens.map","kind":"calls","metadata":{"unresolvedName":"tokens.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:HighlightedCommand","to":"external:line.map","kind":"calls","metadata":{"unresolvedName":"line.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:TerminalCursor","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:TerminalCursor","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:AnsiOutput","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:AnsiOutput","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:AnsiOutput","to":"external:segments.map","kind":"calls","metadata":{"unresolvedName":"segments.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/BashRenderer.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:DefaultRenderer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:DefaultRenderer","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:DefaultRenderer","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:DefaultRenderer","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:DefaultRenderer","to":"external:data.input?.trim","kind":"calls","metadata":{"unresolvedName":"data.input?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:DefaultRenderer","to":"external:data.output?.trim","kind":"calls","metadata":{"unresolvedName":"data.output?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:DefaultRenderer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:OutputBlock","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:OutputBlock","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:OutputBlock","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:OutputBlock","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:OutputBlock","to":"external:data.files.map","kind":"calls","metadata":{"unresolvedName":"data.files.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:OutputBlock","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:formatLabel","kind":"calls","metadata":{"unresolvedName":"formatLabel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:OutputBlock","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:detectLanguage","kind":"calls","metadata":{"unresolvedName":"detectLanguage"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:FileResultIcon","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:FileResultIcon","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:FileResultIcon","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:getMaterialIconUrl","kind":"calls","metadata":{"unresolvedName":"getMaterialIconUrl"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:DiagnosticsBlock","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:DiagnosticsBlock","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:DiagnosticsBlock","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:DiagnosticsBlock","to":"external:diagnostics.filter","kind":"calls","metadata":{"unresolvedName":"diagnostics.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:DiagnosticsBlock","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:DiagnosticsBlock","to":"external:diagnostics.map","kind":"calls","metadata":{"unresolvedName":"diagnostics.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:formatLabel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:formatLabel","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:formatLabel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:formatLabel","to":"external:name\r\n .split(/[_-]/)\r\n .map","kind":"calls","metadata":{"unresolvedName":"name\r\n .split(/[_-]/)\r\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:formatLabel","to":"external:name\r\n .split","kind":"calls","metadata":{"unresolvedName":"name\r\n .split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:formatLabel","to":"external:word.charAt(0).toUpperCase","kind":"calls","metadata":{"unresolvedName":"word.charAt(0).toUpperCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:formatLabel","to":"external:word.charAt","kind":"calls","metadata":{"unresolvedName":"word.charAt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:formatLabel","to":"external:word.slice(1).toLowerCase","kind":"calls","metadata":{"unresolvedName":"word.slice(1).toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/DefaultRenderer.tsx:formatLabel","to":"external:word.slice","kind":"calls","metadata":{"unresolvedName":"word.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:QuestionRenderer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:QuestionRenderer","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:QuestionRenderer","to":"external:data.output?.trim","kind":"calls","metadata":{"unresolvedName":"data.output?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:QuestionRenderer","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:QuestionRenderer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:buildQAList","kind":"calls","metadata":{"unresolvedName":"buildQAList"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:QuestionRenderer","to":"external:qaList.map","kind":"calls","metadata":{"unresolvedName":"qaList.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:buildQAList","kind":"calls","metadata":{"unresolvedName":"buildQAList"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:AnsweredQuestion","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:AnsweredQuestion","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:AnsweredQuestion","to":"external:qa.options.map","kind":"calls","metadata":{"unresolvedName":"qa.options.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:AnsweredQuestion","to":"external:qa.answers.includes","kind":"calls","metadata":{"unresolvedName":"qa.answers.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:AnsweredQuestion","to":"external:qa.answers\r\n .filter","kind":"calls","metadata":{"unresolvedName":"qa.answers\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:AnsweredQuestion","to":"external:qa.options.some","kind":"calls","metadata":{"unresolvedName":"qa.options.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:","to":"external:qa.answers.includes","kind":"calls","metadata":{"unresolvedName":"qa.answers.includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:buildQAList","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:buildQAList","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:buildQAList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:extractQuestions","kind":"calls","metadata":{"unresolvedName":"extractQuestions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:buildQAList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:extractMetadataAnswers","kind":"calls","metadata":{"unresolvedName":"extractMetadataAnswers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:buildQAList","to":"external:questions.map","kind":"calls","metadata":{"unresolvedName":"questions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:buildQAList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:parseAnswersFromOutput","kind":"calls","metadata":{"unresolvedName":"parseAnswersFromOutput"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:buildQAList","to":"external:answerMap.get","kind":"calls","metadata":{"unresolvedName":"answerMap.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:buildQAList","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:buildQAList","to":"external:pairs.push","kind":"calls","metadata":{"unresolvedName":"pairs.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:buildQAList","to":"external:answers.map","kind":"calls","metadata":{"unresolvedName":"answers.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:extractQuestions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:extractQuestions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:extractQuestions","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:extractQuestions","to":"external:raw.map","kind":"calls","metadata":{"unresolvedName":"raw.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:extractQuestions","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:extractQuestions","to":"external:q.options.map","kind":"calls","metadata":{"unresolvedName":"q.options.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:extractMetadataAnswers","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:extractMetadataAnswers","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:extractMetadataAnswers","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:extractMetadataAnswers","to":"external:answers.every","kind":"calls","metadata":{"unresolvedName":"answers.every"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:extractMetadataAnswers","to":"external:a.every","kind":"calls","metadata":{"unresolvedName":"a.every"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:parseAnswersFromOutput","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:parseAnswersFromOutput","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:parseAnswersFromOutput","to":"external:regex.exec","kind":"calls","metadata":{"unresolvedName":"regex.exec"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:parseAnswersFromOutput","to":"external:rawAnswer\r\n .split(', ')\r\n .map(s => s.trim())\r\n .filter","kind":"calls","metadata":{"unresolvedName":"rawAnswer\r\n .split(', ')\r\n .map(s => s.trim())\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:parseAnswersFromOutput","to":"external:rawAnswer\r\n .split(', ')\r\n .map","kind":"calls","metadata":{"unresolvedName":"rawAnswer\r\n .split(', ')\r\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:parseAnswersFromOutput","to":"external:rawAnswer\r\n .split","kind":"calls","metadata":{"unresolvedName":"rawAnswer\r\n .split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:parseAnswersFromOutput","to":"external:s.trim","kind":"calls","metadata":{"unresolvedName":"s.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/QuestionRenderer.tsx:parseAnswersFromOutput","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx:useSessionNavigation","kind":"calls","metadata":{"unresolvedName":"useSessionNavigation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:childSessionStore.getSessionInfo","kind":"calls","metadata":{"unresolvedName":"childSessionStore.getSessionInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:abortSession","kind":"calls","metadata":{"unresolvedName":"abortSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:childSessionStore.getSessionInfo","kind":"calls","metadata":{"unresolvedName":"childSessionStore.getSessionInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:abortSession","kind":"calls","metadata":{"unresolvedName":"abortSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:setExpanded","kind":"calls","metadata":{"unresolvedName":"setExpanded"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/SessionNavigationContext.tsx:useSessionNavigation","kind":"calls","metadata":{"unresolvedName":"useSessionNavigation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:childSessionStore.getSessionInfo","kind":"calls","metadata":{"unresolvedName":"childSessionStore.getSessionInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:navigateToSession","kind":"calls","metadata":{"unresolvedName":"navigateToSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:childSessionStore.getSessionInfo","kind":"calls","metadata":{"unresolvedName":"childSessionStore.getSessionInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:navigateToSession","kind":"calls","metadata":{"unresolvedName":"navigateToSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:useResponsiveMaxHeight","kind":"calls","metadata":{"unresolvedName":"useResponsiveMaxHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useSessionState","kind":"calls","metadata":{"unresolvedName":"useSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:messageStore.setLoadState","kind":"calls","metadata":{"unresolvedName":"messageStore.setLoadState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:getSessionMessages(sessionId, 20)\r\n .then","kind":"calls","metadata":{"unresolvedName":"getSessionMessages(sessionId, 20)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessages","kind":"calls","metadata":{"unresolvedName":"getSessionMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:messageStore.setMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:sessionErrorHandler","kind":"calls","metadata":{"unresolvedName":"sessionErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:messages.filter","kind":"calls","metadata":{"unresolvedName":"messages.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:msg.parts.some","kind":"calls","metadata":{"unresolvedName":"msg.parts.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleTextPart","kind":"calls","metadata":{"unresolvedName":"isVisibleTextPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:visibleMessages.map","kind":"calls","metadata":{"unresolvedName":"visibleMessages.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:messageStore.setLoadState","kind":"calls","metadata":{"unresolvedName":"messageStore.setLoadState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:getSessionMessages(sessionId, 20)\r\n .then","kind":"calls","metadata":{"unresolvedName":"getSessionMessages(sessionId, 20)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessages","kind":"calls","metadata":{"unresolvedName":"getSessionMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:messageStore.setMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:sessionErrorHandler","kind":"calls","metadata":{"unresolvedName":"sessionErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:messageStore.setLoadState","kind":"calls","metadata":{"unresolvedName":"messageStore.setLoadState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:messageStore.setMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.setMessages"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"symbol-name:sessionErrorHandler","kind":"calls","metadata":{"unresolvedName":"sessionErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:messageStore.setLoadState","kind":"calls","metadata":{"unresolvedName":"messageStore.setLoadState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleTextPart","kind":"calls","metadata":{"unresolvedName":"isVisibleTextPart"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:parts.filter","kind":"calls","metadata":{"unresolvedName":"parts.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:p.text?.trim","kind":"calls","metadata":{"unresolvedName":"p.text?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:textParts\r\n .map(p => p.text)\r\n .join('\\n')\r\n .trim","kind":"calls","metadata":{"unresolvedName":"textParts\r\n .map(p => p.text)\r\n .join('\\n')\r\n .trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:textParts\r\n .map(p => p.text)\r\n .join","kind":"calls","metadata":{"unresolvedName":"textParts\r\n .map(p => p.text)\r\n .join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:textParts\r\n .map","kind":"calls","metadata":{"unresolvedName":"textParts\r\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:textContent.slice","kind":"calls","metadata":{"unresolvedName":"textContent.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:toolParts.map","kind":"calls","metadata":{"unresolvedName":"toolParts.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatToolName","kind":"calls","metadata":{"unresolvedName":"formatToolName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:","to":"external:title.slice","kind":"calls","metadata":{"unresolvedName":"title.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:MessageSkeleton","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TaskRenderer.tsx:MessageSkeleton","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:TodoRenderer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:TodoRenderer","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:TodoRenderer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts:extractTodos","kind":"calls","metadata":{"unresolvedName":"extractTodos"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:TodoList","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:TodoList","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:TodoList","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:TodoList","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:TodoList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:TodoList","to":"external:todos.filter","kind":"calls","metadata":{"unresolvedName":"todos.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:TodoList","to":"symbol-name:setCollapsed","kind":"calls","metadata":{"unresolvedName":"setCollapsed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:TodoList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:TodoList","to":"external:todos.map","kind":"calls","metadata":{"unresolvedName":"todos.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:TodoList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:getTodoIcon","kind":"calls","metadata":{"unresolvedName":"getTodoIcon"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:getTodoIcon","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/TodoRenderer.tsx:getTodoIcon","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts:extractTodos","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts:extractTodos","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts:hasTodos","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts:hasTodos","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts:hasTodos","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/renderers/todoUtils.ts:extractTodos","kind":"calls","metadata":{"unresolvedName":"extractTodos"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/types.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/tools/types.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:expect(onSelectProject).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(onSelectProject).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:screen.findByRole","kind":"calls","metadata":{"unresolvedName":"screen.findByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:within(dialog).getByRole","kind":"calls","metadata":{"unresolvedName":"within(dialog).getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"symbol-name:within","kind":"calls","metadata":{"unresolvedName":"within"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:expect(onRemoveProject).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onRemoveProject).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:expect(projectRow).not.toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(projectRow).not.toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:expect(onSelectProject).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onSelectProject).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:expect(onSelectProject).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(onSelectProject).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:screen.findByRole","kind":"calls","metadata":{"unresolvedName":"screen.findByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:within(dialog).getByRole","kind":"calls","metadata":{"unresolvedName":"within(dialog).getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"symbol-name:within","kind":"calls","metadata":{"unresolvedName":"within"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:expect(onRemoveProject).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onRemoveProject).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:expect(projectRow).not.toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(projectRow).not.toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.test.tsx:","to":"external:expect(onSelectProject).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onSelectProject).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"external:containerRef.current.contains","kind":"calls","metadata":{"unresolvedName":"containerRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"symbol-name:setIsOpen","kind":"calls","metadata":{"unresolvedName":"setIsOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"external:dropdownRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"dropdownRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"external:triggerRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"triggerRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"external:worktree.replace(/\\\\/g, '/').split('/').filter","kind":"calls","metadata":{"unresolvedName":"worktree.replace(/\\\\/g, '/').split('/').filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"external:worktree.replace(/\\\\/g, '/').split","kind":"calls","metadata":{"unresolvedName":"worktree.replace(/\\\\/g, '/').split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"external:worktree.replace","kind":"calls","metadata":{"unresolvedName":"worktree.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"external:projects.filter","kind":"calls","metadata":{"unresolvedName":"projects.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getPath","kind":"calls","metadata":{"unresolvedName":"getPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"symbol-name:getDisplayName","kind":"calls","metadata":{"unresolvedName":"getDisplayName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"external:otherProjects.map","kind":"calls","metadata":{"unresolvedName":"otherProjects.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"symbol-name:onSelectProject","kind":"calls","metadata":{"unresolvedName":"onSelectProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"symbol-name:setDeleteConfirm","kind":"calls","metadata":{"unresolvedName":"setDeleteConfirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"symbol-name:onAddProject","kind":"calls","metadata":{"unresolvedName":"onAddProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectSelector","to":"symbol-name:onRemoveProject","kind":"calls","metadata":{"unresolvedName":"onRemoveProject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"external:containerRef.current.contains","kind":"calls","metadata":{"unresolvedName":"containerRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"symbol-name:setIsOpen","kind":"calls","metadata":{"unresolvedName":"setIsOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:handleClickOutside","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:handleClickOutside","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:handleClickOutside","to":"external:containerRef.current.contains","kind":"calls","metadata":{"unresolvedName":"containerRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:handleClickOutside","to":"symbol-name:setIsOpen","kind":"calls","metadata":{"unresolvedName":"setIsOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"external:dropdownRef.current?.contains","kind":"calls","metadata":{"unresolvedName":"dropdownRef.current?.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"external:triggerRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"triggerRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"external:worktree.replace(/\\\\/g, '/').split('/').filter","kind":"calls","metadata":{"unresolvedName":"worktree.replace(/\\\\/g, '/').split('/').filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"external:worktree.replace(/\\\\/g, '/').split","kind":"calls","metadata":{"unresolvedName":"worktree.replace(/\\\\/g, '/').split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"external:worktree.replace","kind":"calls","metadata":{"unresolvedName":"worktree.replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"symbol-name:onSelectProject","kind":"calls","metadata":{"unresolvedName":"onSelectProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"symbol-name:setIsOpen","kind":"calls","metadata":{"unresolvedName":"setIsOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"symbol-name:setDeleteConfirm","kind":"calls","metadata":{"unresolvedName":"setDeleteConfirm"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"symbol-name:onAddProject","kind":"calls","metadata":{"unresolvedName":"onAddProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"symbol-name:setIsOpen","kind":"calls","metadata":{"unresolvedName":"setIsOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"symbol-name:onRemoveProject","kind":"calls","metadata":{"unresolvedName":"onRemoveProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"symbol-name:setDeleteConfirm","kind":"calls","metadata":{"unresolvedName":"setDeleteConfirm"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectItem","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectItem","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectItem","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectItem","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectItem","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectItem","to":"symbol-name:onRemove","kind":"calls","metadata":{"unresolvedName":"onRemove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:ProjectItem","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/ProjectSelector.tsx:","to":"symbol-name:onRemove","kind":"calls","metadata":{"unresolvedName":"onRemove"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:useSessionActiveEntryMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useSessionActiveEntryMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:useHasUnreadCompletedNotificationMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useHasUnreadCompletedNotificationMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:markSessionNotificationsReadMock.mockReset","kind":"calls","metadata":{"unresolvedName":"markSessionNotificationsReadMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:expect(onSelect).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(onSelect).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:expect(markSessionNotificationsReadMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(markSessionNotificationsReadMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:expect(sessionRow).not.toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(sessionRow).not.toBeNull"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:useSessionActiveEntryMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useSessionActiveEntryMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:useHasUnreadCompletedNotificationMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useHasUnreadCompletedNotificationMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:markSessionNotificationsReadMock.mockReset","kind":"calls","metadata":{"unresolvedName":"markSessionNotificationsReadMock.mockReset"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:expect(onSelect).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(onSelect).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:expect(markSessionNotificationsReadMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(markSessionNotificationsReadMock).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:expect(sessionRow).not.toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(sessionRow).not.toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:expect(onSelect).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(onSelect).toHaveBeenCalledTimes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:useSessionActiveEntryMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useSessionActiveEntryMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:useHasUnreadCompletedNotificationMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useHasUnreadCompletedNotificationMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:markSessionNotificationsReadMock.mockReset","kind":"calls","metadata":{"unresolvedName":"markSessionNotificationsReadMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:expect(screen.getByRole('button', { name: /project-a/i })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: /project-a/i })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:expect(screen.getByRole('button', { name: /project-b/i })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: /project-b/i })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:screen.queryByRole","kind":"calls","metadata":{"unresolvedName":"screen.queryByRole"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:useSessionActiveEntryMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useSessionActiveEntryMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:useHasUnreadCompletedNotificationMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useHasUnreadCompletedNotificationMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:markSessionNotificationsReadMock.mockReset","kind":"calls","metadata":{"unresolvedName":"markSessionNotificationsReadMock.mockReset"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:expect(screen.getByRole('button', { name: /project-a/i })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: /project-a/i })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:expect(screen.getByRole('button', { name: /project-b/i })).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByRole('button', { name: /project-b/i })).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.test.tsx:","to":"external:screen.queryByRole","kind":"calls","metadata":{"unresolvedName":"screen.queryByRole"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/dateUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat/sidebar/SessionChildrenSlot.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","kind":"calls","metadata":{"unresolvedName":"useInputCapabilities"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"symbol-name:onLoadMore","kind":"calls","metadata":{"unresolvedName":"onLoadMore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"external:el.addEventListener","kind":"calls","metadata":{"unresolvedName":"el.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"external:el.removeEventListener","kind":"calls","metadata":{"unresolvedName":"el.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","kind":"calls","metadata":{"unresolvedName":"groupSessionsByProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"symbol-name:setCollapsedProjectKeys","kind":"calls","metadata":{"unresolvedName":"setCollapsedProjectKeys"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"external:next.has","kind":"calls","metadata":{"unresolvedName":"next.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"external:next.delete","kind":"calls","metadata":{"unresolvedName":"next.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"external:next.add","kind":"calls","metadata":{"unresolvedName":"next.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"symbol-name:onSearchChange","kind":"calls","metadata":{"unresolvedName":"onSearchChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"external:projectGroups.map","kind":"calls","metadata":{"unresolvedName":"projectGroups.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"external:collapsedProjectKeys.has","kind":"calls","metadata":{"unresolvedName":"collapsedProjectKeys.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"symbol-name:toggleProjectGroup","kind":"calls","metadata":{"unresolvedName":"toggleProjectGroup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"external:group.sessions.map","kind":"calls","metadata":{"unresolvedName":"group.sessions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"symbol-name:setDeleteConfirm","kind":"calls","metadata":{"unresolvedName":"setDeleteConfirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"symbol-name:onRename","kind":"calls","metadata":{"unresolvedName":"onRename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"external:selectedSessionIds?.has","kind":"calls","metadata":{"unresolvedName":"selectedSessionIds?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"symbol-name:onToggleSessionSelection","kind":"calls","metadata":{"unresolvedName":"onToggleSessionSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"external:expandedChildSessionIds?.has","kind":"calls","metadata":{"unresolvedName":"expandedChildSessionIds?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"external:inlineChildSessions?.has","kind":"calls","metadata":{"unresolvedName":"inlineChildSessions?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"external:inlineChildSessions?.get","kind":"calls","metadata":{"unresolvedName":"inlineChildSessions?.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"external:sessions.map","kind":"calls","metadata":{"unresolvedName":"sessions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionList","to":"symbol-name:onDelete","kind":"calls","metadata":{"unresolvedName":"onDelete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:onLoadMore","kind":"calls","metadata":{"unresolvedName":"onLoadMore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:el.addEventListener","kind":"calls","metadata":{"unresolvedName":"el.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:el.removeEventListener","kind":"calls","metadata":{"unresolvedName":"el.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:setCollapsedProjectKeys","kind":"calls","metadata":{"unresolvedName":"setCollapsedProjectKeys"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:next.has","kind":"calls","metadata":{"unresolvedName":"next.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:next.delete","kind":"calls","metadata":{"unresolvedName":"next.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:next.add","kind":"calls","metadata":{"unresolvedName":"next.add"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:next.has","kind":"calls","metadata":{"unresolvedName":"next.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:next.delete","kind":"calls","metadata":{"unresolvedName":"next.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:next.add","kind":"calls","metadata":{"unresolvedName":"next.add"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:collapsedProjectKeys.has","kind":"calls","metadata":{"unresolvedName":"collapsedProjectKeys.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:toggleProjectGroup","kind":"calls","metadata":{"unresolvedName":"toggleProjectGroup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:group.sessions.map","kind":"calls","metadata":{"unresolvedName":"group.sessions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:setDeleteConfirm","kind":"calls","metadata":{"unresolvedName":"setDeleteConfirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:onRename","kind":"calls","metadata":{"unresolvedName":"onRename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:selectedSessionIds?.has","kind":"calls","metadata":{"unresolvedName":"selectedSessionIds?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:onToggleSessionSelection","kind":"calls","metadata":{"unresolvedName":"onToggleSessionSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:expandedChildSessionIds?.has","kind":"calls","metadata":{"unresolvedName":"expandedChildSessionIds?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:inlineChildSessions?.has","kind":"calls","metadata":{"unresolvedName":"inlineChildSessions?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:inlineChildSessions?.get","kind":"calls","metadata":{"unresolvedName":"inlineChildSessions?.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:inlineChildSessions?.get","kind":"calls","metadata":{"unresolvedName":"inlineChildSessions?.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:expandedChildSessionIds?.has","kind":"calls","metadata":{"unresolvedName":"expandedChildSessionIds?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:setDeleteConfirm","kind":"calls","metadata":{"unresolvedName":"setDeleteConfirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:onRename","kind":"calls","metadata":{"unresolvedName":"onRename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:selectedSessionIds?.has","kind":"calls","metadata":{"unresolvedName":"selectedSessionIds?.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:onToggleSessionSelection","kind":"calls","metadata":{"unresolvedName":"onToggleSessionSelection"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:onDelete","kind":"calls","metadata":{"unresolvedName":"onDelete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:setDeleteConfirm","kind":"calls","metadata":{"unresolvedName":"setDeleteConfirm"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useSessionActiveEntry","kind":"calls","metadata":{"unresolvedName":"useSessionActiveEntry"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useHasUnreadCompletedNotification","kind":"calls","metadata":{"unresolvedName":"useHasUnreadCompletedNotification"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"symbol-name:Boolean","kind":"calls","metadata":{"unresolvedName":"Boolean"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"symbol-name:setShowActions","kind":"calls","metadata":{"unresolvedName":"setShowActions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"symbol-name:onDelete","kind":"calls","metadata":{"unresolvedName":"onDelete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"symbol-name:setEditTitle","kind":"calls","metadata":{"unresolvedName":"setEditTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"symbol-name:setIsEditing","kind":"calls","metadata":{"unresolvedName":"setIsEditing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"external:editTitle.trim","kind":"calls","metadata":{"unresolvedName":"editTitle.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"symbol-name:onRename","kind":"calls","metadata":{"unresolvedName":"onRename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleSaveEdit","kind":"calls","metadata":{"unresolvedName":"handleSaveEdit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleCancelEdit","kind":"calls","metadata":{"unresolvedName":"handleCancelEdit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"external:itemRef.current.contains","kind":"calls","metadata":{"unresolvedName":"itemRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"external:inputRef.current.focus","kind":"calls","metadata":{"unresolvedName":"inputRef.current.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"external:inputRef.current.select","kind":"calls","metadata":{"unresolvedName":"inputRef.current.select"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"external:notificationStore.markSessionNotificationsRead","kind":"calls","metadata":{"unresolvedName":"notificationStore.markSessionNotificationsRead"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"symbol-name:onToggleCheck","kind":"calls","metadata":{"unresolvedName":"onToggleCheck"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"external:e.dataTransfer.setData","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.setData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/dateUtils.ts:formatRelativeTime","kind":"calls","metadata":{"unresolvedName":"formatRelativeTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"symbol-name:handleClick","kind":"calls","metadata":{"unresolvedName":"handleClick"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"external:session.directory.replace(/\\\\/g, '/').split('/').filter(Boolean).pop","kind":"calls","metadata":{"unresolvedName":"session.directory.replace(/\\\\/g, '/').split('/').filter(Boolean).pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"external:session.directory.replace(/\\\\/g, '/').split('/').filter","kind":"calls","metadata":{"unresolvedName":"session.directory.replace(/\\\\/g, '/').split('/').filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"external:session.directory.replace(/\\\\/g, '/').split","kind":"calls","metadata":{"unresolvedName":"session.directory.replace(/\\\\/g, '/').split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:SessionListItem","to":"external:session.directory.replace","kind":"calls","metadata":{"unresolvedName":"session.directory.replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleDelete","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleDelete","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleDelete","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleDelete","to":"symbol-name:setShowActions","kind":"calls","metadata":{"unresolvedName":"setShowActions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleDelete","to":"symbol-name:onDelete","kind":"calls","metadata":{"unresolvedName":"onDelete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleStartEdit","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleStartEdit","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleStartEdit","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleStartEdit","to":"symbol-name:setShowActions","kind":"calls","metadata":{"unresolvedName":"setShowActions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleStartEdit","to":"symbol-name:setEditTitle","kind":"calls","metadata":{"unresolvedName":"setEditTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleStartEdit","to":"symbol-name:setIsEditing","kind":"calls","metadata":{"unresolvedName":"setIsEditing"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleSaveEdit","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleSaveEdit","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleSaveEdit","to":"external:editTitle.trim","kind":"calls","metadata":{"unresolvedName":"editTitle.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleSaveEdit","to":"symbol-name:onRename","kind":"calls","metadata":{"unresolvedName":"onRename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleSaveEdit","to":"symbol-name:setIsEditing","kind":"calls","metadata":{"unresolvedName":"setIsEditing"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleCancelEdit","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleCancelEdit","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleCancelEdit","to":"symbol-name:setEditTitle","kind":"calls","metadata":{"unresolvedName":"setEditTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleCancelEdit","to":"symbol-name:setIsEditing","kind":"calls","metadata":{"unresolvedName":"setIsEditing"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleKeyDown","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleKeyDown","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleKeyDown","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleSaveEdit","kind":"calls","metadata":{"unresolvedName":"handleSaveEdit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleKeyDown","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleCancelEdit","kind":"calls","metadata":{"unresolvedName":"handleCancelEdit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:setShowActions","kind":"calls","metadata":{"unresolvedName":"setShowActions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:setShowActions","kind":"calls","metadata":{"unresolvedName":"setShowActions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:itemRef.current.contains","kind":"calls","metadata":{"unresolvedName":"itemRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:setShowActions","kind":"calls","metadata":{"unresolvedName":"setShowActions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleClickOutside","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleClickOutside","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleClickOutside","to":"external:itemRef.current.contains","kind":"calls","metadata":{"unresolvedName":"itemRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleClickOutside","to":"symbol-name:setShowActions","kind":"calls","metadata":{"unresolvedName":"setShowActions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:inputRef.current.focus","kind":"calls","metadata":{"unresolvedName":"inputRef.current.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:inputRef.current.select","kind":"calls","metadata":{"unresolvedName":"inputRef.current.select"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleClick","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleClick","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleClick","to":"symbol-name:setShowActions","kind":"calls","metadata":{"unresolvedName":"setShowActions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleClick","to":"external:notificationStore.markSessionNotificationsRead","kind":"calls","metadata":{"unresolvedName":"notificationStore.markSessionNotificationsRead"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleClick","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleCheckClick","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleCheckClick","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleCheckClick","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleCheckClick","to":"symbol-name:onToggleCheck","kind":"calls","metadata":{"unresolvedName":"onToggleCheck"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleCheckMouseDown","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleCheckMouseDown","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleCheckMouseDown","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleCheckMouseDown","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleDragStart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleDragStart","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleDragStart","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:handleDragStart","to":"external:e.dataTransfer.setData","kind":"calls","metadata":{"unresolvedName":"e.dataTransfer.setData"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:handleClick","kind":"calls","metadata":{"unresolvedName":"handleClick"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:","to":"symbol-name:handleClick","kind":"calls","metadata":{"unresolvedName":"handleClick"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:LoadingSpinner","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/SessionList.tsx:LoadingSpinner","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:session","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:session","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:getProjectNameFromDirectory","kind":"calls","metadata":{"unresolvedName":"getProjectNameFromDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:expect(getProjectNameFromDirectory('/home/user/work/my-app')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(getProjectNameFromDirectory('/home/user/work/my-app')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:expect(getProjectNameFromDirectory('')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(getProjectNameFromDirectory('')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","kind":"calls","metadata":{"unresolvedName":"groupSessionsByProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:session","kind":"calls","metadata":{"unresolvedName":"session"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:expect(groups.map(group => group.name)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(groups.map(group => group.name)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:groups.map","kind":"calls","metadata":{"unresolvedName":"groups.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:expect(groups[0].sessions.map(item => item.id)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(groups[0].sessions.map(item => item.id)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:groups[0].sessions.map","kind":"calls","metadata":{"unresolvedName":"groups[0].sessions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:expect(groups[1].sessions.map(item => item.id)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(groups[1].sessions.map(item => item.id)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:groups[1].sessions.map","kind":"calls","metadata":{"unresolvedName":"groups[1].sessions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:expect(groups).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(groups).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:expect(groups[0].name).toBe","kind":"calls","metadata":{"unresolvedName":"expect(groups[0].name).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:getProjectNameFromDirectory","kind":"calls","metadata":{"unresolvedName":"getProjectNameFromDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:expect(getProjectNameFromDirectory('/home/user/work/my-app')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(getProjectNameFromDirectory('/home/user/work/my-app')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:expect(getProjectNameFromDirectory('')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(getProjectNameFromDirectory('')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","kind":"calls","metadata":{"unresolvedName":"groupSessionsByProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:session","kind":"calls","metadata":{"unresolvedName":"session"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:expect(groups.map(group => group.name)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(groups.map(group => group.name)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:groups.map","kind":"calls","metadata":{"unresolvedName":"groups.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:expect(groups[0].sessions.map(item => item.id)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(groups[0].sessions.map(item => item.id)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:groups[0].sessions.map","kind":"calls","metadata":{"unresolvedName":"groups[0].sessions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:expect(groups[1].sessions.map(item => item.id)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(groups[1].sessions.map(item => item.id)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:groups[1].sessions.map","kind":"calls","metadata":{"unresolvedName":"groups[1].sessions.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","kind":"calls","metadata":{"unresolvedName":"groupSessionsByProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:session","kind":"calls","metadata":{"unresolvedName":"session"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:expect(groups).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(groups).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:expect(groups[0].name).toBe","kind":"calls","metadata":{"unresolvedName":"expect(groups[0].name).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:expect(groups[0].sessions.map(item => item.id)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(groups[0].sessions.map(item => item.id)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.test.ts:","to":"external:groups[0].sessions.map","kind":"calls","metadata":{"unresolvedName":"groups[0].sessions.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:normalizeProjectDirectory","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:normalizeProjectDirectory","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:normalizeProjectDirectory","to":"external:(directory || 'unknown').replace(/\\\\/g, '/').replace","kind":"calls","metadata":{"unresolvedName":"(directory || 'unknown').replace(/\\\\/g, '/').replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:normalizeProjectDirectory","to":"external:(directory || 'unknown').replace","kind":"calls","metadata":{"unresolvedName":"(directory || 'unknown').replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:getProjectNameFromDirectory","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:getProjectNameFromDirectory","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:getProjectNameFromDirectory","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:normalizeProjectDirectory","kind":"calls","metadata":{"unresolvedName":"normalizeProjectDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:getProjectNameFromDirectory","to":"external:normalized.split('/').filter","kind":"calls","metadata":{"unresolvedName":"normalized.split('/').filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:getProjectNameFromDirectory","to":"external:normalized.split","kind":"calls","metadata":{"unresolvedName":"normalized.split"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:getUpdatedTime","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:getUpdatedTime","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:sessionMatchesSearch","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:sessionMatchesSearch","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:sessionMatchesSearch","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:getProjectNameFromDirectory","kind":"calls","metadata":{"unresolvedName":"getProjectNameFromDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:sessionMatchesSearch","to":"external:haystack.includes","kind":"calls","metadata":{"unresolvedName":"haystack.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:sessionMatchesSearch","to":"external:search.toLowerCase","kind":"calls","metadata":{"unresolvedName":"search.toLowerCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:normalizeProjectDirectory","kind":"calls","metadata":{"unresolvedName":"normalizeProjectDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:sessionMatchesSearch","kind":"calls","metadata":{"unresolvedName":"sessionMatchesSearch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","to":"external:search.trim","kind":"calls","metadata":{"unresolvedName":"search.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:getUpdatedTime","kind":"calls","metadata":{"unresolvedName":"getUpdatedTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","to":"external:groups.get","kind":"calls","metadata":{"unresolvedName":"groups.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","to":"external:existing.sessions.push","kind":"calls","metadata":{"unresolvedName":"existing.sessions.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","to":"external:groups.set","kind":"calls","metadata":{"unresolvedName":"groups.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:getProjectNameFromDirectory","kind":"calls","metadata":{"unresolvedName":"getProjectNameFromDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","to":"external:Array.from(groups.values())\n .map","kind":"calls","metadata":{"unresolvedName":"Array.from(groups.values())\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","to":"external:groups.values","kind":"calls","metadata":{"unresolvedName":"groups.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","to":"external:[...group.sessions].sort","kind":"calls","metadata":{"unresolvedName":"[...group.sessions].sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/sessions/sessionProjectGroups.ts:groupSessionsByProject","to":"external:a.name.localeCompare","kind":"calls","metadata":{"unresolvedName":"a.name.localeCompare"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:openExternalUrl","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:openExternalUrl","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:openExternalUrl","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:openExternalUrl","to":"external:import('@tauri-apps/plugin-opener')\r\n .then","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/plugin-opener')\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:openExternalUrl","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:openExternalUrl","to":"external:mod.openUrl","kind":"calls","metadata":{"unresolvedName":"mod.openUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:openExternalUrl","to":"external:window.open","kind":"calls","metadata":{"unresolvedName":"window.open"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:useUpdateStore","kind":"calls","metadata":{"unresolvedName":"useUpdateStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:hasUpdateAvailable","kind":"calls","metadata":{"unresolvedName":"hasUpdateAvailable"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"external:new Date(latestRelease.publishedAt).toLocaleString","kind":"calls","metadata":{"unresolvedName":"new Date(latestRelease.publishedAt).toLocaleString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"external:updateStore.checkForUpdates","kind":"calls","metadata":{"unresolvedName":"updateStore.checkForUpdates"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"external:updateStore.hideToastForCurrentVersion","kind":"calls","metadata":{"unresolvedName":"updateStore.hideToastForCurrentVersion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:openExternalUrl","kind":"calls","metadata":{"unresolvedName":"openExternalUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"symbol-name:setBackupError","kind":"calls","metadata":{"unresolvedName":"setBackupError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"symbol-name:setBackupBusy","kind":"calls","metadata":{"unresolvedName":"setBackupBusy"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","kind":"calls","metadata":{"unresolvedName":"exportSettingsBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:saveData","kind":"calls","metadata":{"unresolvedName":"saveData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"external:fileInputRef.current?.click","kind":"calls","metadata":{"unresolvedName":"fileInputRef.current?.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:previewBackupMeta","kind":"calls","metadata":{"unresolvedName":"previewBackupMeta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"external:window.confirm","kind":"calls","metadata":{"unresolvedName":"window.confirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"external:new Date(createdAt).toLocaleString","kind":"calls","metadata":{"unresolvedName":"new Date(createdAt).toLocaleString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importSettingsBackup","kind":"calls","metadata":{"unresolvedName":"importSettingsBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:AboutSettings","to":"external:window.location.reload","kind":"calls","metadata":{"unresolvedName":"window.location.reload"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","to":"external:updateStore.checkForUpdates","kind":"calls","metadata":{"unresolvedName":"updateStore.checkForUpdates"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","to":"external:updateStore.hideToastForCurrentVersion","kind":"calls","metadata":{"unresolvedName":"updateStore.hideToastForCurrentVersion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:openExternalUrl","kind":"calls","metadata":{"unresolvedName":"openExternalUrl"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","to":"symbol-name:setBackupError","kind":"calls","metadata":{"unresolvedName":"setBackupError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","to":"symbol-name:setBackupBusy","kind":"calls","metadata":{"unresolvedName":"setBackupBusy"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","kind":"calls","metadata":{"unresolvedName":"exportSettingsBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:saveData","kind":"calls","metadata":{"unresolvedName":"saveData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","to":"symbol-name:setBackupError","kind":"calls","metadata":{"unresolvedName":"setBackupError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","to":"external:fileInputRef.current?.click","kind":"calls","metadata":{"unresolvedName":"fileInputRef.current?.click"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","to":"symbol-name:setBackupError","kind":"calls","metadata":{"unresolvedName":"setBackupError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","to":"symbol-name:setBackupBusy","kind":"calls","metadata":{"unresolvedName":"setBackupBusy"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:previewBackupMeta","kind":"calls","metadata":{"unresolvedName":"previewBackupMeta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","to":"external:window.confirm","kind":"calls","metadata":{"unresolvedName":"window.confirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","to":"external:new Date(createdAt).toLocaleString","kind":"calls","metadata":{"unresolvedName":"new Date(createdAt).toLocaleString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importSettingsBackup","kind":"calls","metadata":{"unresolvedName":"importSettingsBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx:","to":"external:window.location.reload","kind":"calls","metadata":{"unresolvedName":"window.location.reload"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","to":"symbol-name:setAutoApprove","kind":"calls","metadata":{"unresolvedName":"setAutoApprove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","to":"external:autoApproveStore.setEnabled","kind":"calls","metadata":{"unresolvedName":"autoApproveStore.setEnabled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","to":"external:autoApproveStore.clearAllRules","kind":"calls","metadata":{"unresolvedName":"autoApproveStore.clearAllRules"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setQueueFollowupMessages","kind":"calls","metadata":{"unresolvedName":"setQueueFollowupMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","to":"external:themeStore.setQueueFollowupMessages","kind":"calls","metadata":{"unresolvedName":"themeStore.setQueueFollowupMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setDescriptiveToolSteps","kind":"calls","metadata":{"unresolvedName":"setDescriptiveToolSteps"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","to":"external:themeStore.setDescriptiveToolSteps","kind":"calls","metadata":{"unresolvedName":"themeStore.setDescriptiveToolSteps"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setInlineToolRequests","kind":"calls","metadata":{"unresolvedName":"setInlineToolRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","to":"external:themeStore.setInlineToolRequests","kind":"calls","metadata":{"unresolvedName":"themeStore.setInlineToolRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCompactInlinePermission","kind":"calls","metadata":{"unresolvedName":"setCompactInlinePermission"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","to":"external:themeStore.setCompactInlinePermission","kind":"calls","metadata":{"unresolvedName":"themeStore.setCompactInlinePermission"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setToolCardStyle","kind":"calls","metadata":{"unresolvedName":"setToolCardStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","to":"external:themeStore.setToolCardStyle","kind":"calls","metadata":{"unresolvedName":"themeStore.setToolCardStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setImmersiveMode","kind":"calls","metadata":{"unresolvedName":"setImmersiveMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","to":"external:themeStore.setImmersiveMode","kind":"calls","metadata":{"unresolvedName":"themeStore.setImmersiveMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:AgentSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleToolCardStyleChange","kind":"calls","metadata":{"unresolvedName":"handleToolCardStyleChange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleAutoApprove","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleAutoApprove","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleAutoApprove","to":"symbol-name:setAutoApprove","kind":"calls","metadata":{"unresolvedName":"setAutoApprove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleAutoApprove","to":"external:autoApproveStore.setEnabled","kind":"calls","metadata":{"unresolvedName":"autoApproveStore.setEnabled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleAutoApprove","to":"external:autoApproveStore.clearAllRules","kind":"calls","metadata":{"unresolvedName":"autoApproveStore.clearAllRules"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleQueueFollowupMessagesToggle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleQueueFollowupMessagesToggle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleQueueFollowupMessagesToggle","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setQueueFollowupMessages","kind":"calls","metadata":{"unresolvedName":"setQueueFollowupMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleQueueFollowupMessagesToggle","to":"external:themeStore.setQueueFollowupMessages","kind":"calls","metadata":{"unresolvedName":"themeStore.setQueueFollowupMessages"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleDescriptiveToolStepsToggle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleDescriptiveToolStepsToggle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleDescriptiveToolStepsToggle","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setDescriptiveToolSteps","kind":"calls","metadata":{"unresolvedName":"setDescriptiveToolSteps"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleDescriptiveToolStepsToggle","to":"external:themeStore.setDescriptiveToolSteps","kind":"calls","metadata":{"unresolvedName":"themeStore.setDescriptiveToolSteps"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleInlineToolRequestsToggle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleInlineToolRequestsToggle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleInlineToolRequestsToggle","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setInlineToolRequests","kind":"calls","metadata":{"unresolvedName":"setInlineToolRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleInlineToolRequestsToggle","to":"external:themeStore.setInlineToolRequests","kind":"calls","metadata":{"unresolvedName":"themeStore.setInlineToolRequests"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleCompactInlinePermissionToggle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleCompactInlinePermissionToggle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleCompactInlinePermissionToggle","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCompactInlinePermission","kind":"calls","metadata":{"unresolvedName":"setCompactInlinePermission"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleCompactInlinePermissionToggle","to":"external:themeStore.setCompactInlinePermission","kind":"calls","metadata":{"unresolvedName":"themeStore.setCompactInlinePermission"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleToolCardStyleChange","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleToolCardStyleChange","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleToolCardStyleChange","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setToolCardStyle","kind":"calls","metadata":{"unresolvedName":"setToolCardStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleToolCardStyleChange","to":"external:themeStore.setToolCardStyle","kind":"calls","metadata":{"unresolvedName":"themeStore.setToolCardStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleImmersiveModeToggle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleImmersiveModeToggle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleImmersiveModeToggle","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setImmersiveMode","kind":"calls","metadata":{"unresolvedName":"setImmersiveMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleImmersiveModeToggle","to":"external:themeStore.setImmersiveMode","kind":"calls","metadata":{"unresolvedName":"themeStore.setImmersiveMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleImmersiveModeToggle","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setInlineToolRequests","kind":"calls","metadata":{"unresolvedName":"setInlineToolRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleImmersiveModeToggle","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setDescriptiveToolSteps","kind":"calls","metadata":{"unresolvedName":"setDescriptiveToolSteps"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleImmersiveModeToggle","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setToolCardStyle","kind":"calls","metadata":{"unresolvedName":"setToolCardStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx:handleImmersiveModeToggle","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCompactInlinePermission","kind":"calls","metadata":{"unresolvedName":"setCompactInlinePermission"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:toCssHsl","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:toCssHsl","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:getPresetPreviewColors","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:getPresetPreviewColors","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:getPresetPreviewColors","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts:getThemePreset","kind":"calls","metadata":{"unresolvedName":"getThemePreset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:getPresetPreviewColors","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:toCssHsl","kind":"calls","metadata":{"unresolvedName":"toCssHsl"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:getSnippetFileName","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:getSnippetFileName","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:getSnippetFileName","to":"external:name\n .trim()\n .replace(/[<>:\"/\\\\|?*]/g, '')\n .replace","kind":"calls","metadata":{"unresolvedName":"name\n .trim()\n .replace(/[<>:\"/\\\\|?*]/g, '')\n .replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:getSnippetFileName","to":"external:name\n .trim()\n .replace","kind":"calls","metadata":{"unresolvedName":"name\n .trim()\n .replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:getSnippetFileName","to":"external:name\n .trim","kind":"calls","metadata":{"unresolvedName":"name\n .trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:PresetCard","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:PresetCard","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:PresetCard","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:getPresetPreviewColors","kind":"calls","metadata":{"unresolvedName":"getPresetPreviewColors"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:FontScaleSlider","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:FontScaleSlider","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:FontScaleSlider","to":"symbol-name:onChange","kind":"calls","metadata":{"unresolvedName":"onChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:FontScaleSlider","to":"symbol-name:Number","kind":"calls","metadata":{"unresolvedName":"Number"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:CustomCSSEditor","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:CustomCSSEditor","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:CustomCSSEditor","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:CustomCSSEditor","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:CustomCSSEditor","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:CustomCSSEditor","to":"symbol-name:setLocalValue","kind":"calls","metadata":{"unresolvedName":"setLocalValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:CustomCSSEditor","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:CustomCSSEditor","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:CustomCSSEditor","to":"symbol-name:onChange","kind":"calls","metadata":{"unresolvedName":"onChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:CustomCSSEditor","to":"symbol-name:onImportFile","kind":"calls","metadata":{"unresolvedName":"onImportFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:CustomCSSEditor","to":"external:reader.readAsText","kind":"calls","metadata":{"unresolvedName":"reader.readAsText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:CustomCSSEditor","to":"external:fileInputRef.current?.click","kind":"calls","metadata":{"unresolvedName":"fileInputRef.current?.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:CustomCSSEditor","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:CustomCSSEditor","to":"external:localValue.trim","kind":"calls","metadata":{"unresolvedName":"localValue.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:CustomCSSEditor","to":"symbol-name:onLoadTemplate","kind":"calls","metadata":{"unresolvedName":"onLoadTemplate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:CustomCSSEditor","to":"symbol-name:handleChange","kind":"calls","metadata":{"unresolvedName":"handleChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:CustomCSSEditor","to":"symbol-name:onClear","kind":"calls","metadata":{"unresolvedName":"onClear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","to":"symbol-name:setLocalValue","kind":"calls","metadata":{"unresolvedName":"setLocalValue"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleChange","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleChange","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleChange","to":"symbol-name:setLocalValue","kind":"calls","metadata":{"unresolvedName":"setLocalValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleChange","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleChange","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleChange","to":"symbol-name:onChange","kind":"calls","metadata":{"unresolvedName":"onChange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleFileImport","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleFileImport","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleFileImport","to":"symbol-name:setLocalValue","kind":"calls","metadata":{"unresolvedName":"setLocalValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleFileImport","to":"symbol-name:onImportFile","kind":"calls","metadata":{"unresolvedName":"onImportFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleFileImport","to":"external:reader.readAsText","kind":"calls","metadata":{"unresolvedName":"reader.readAsText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","to":"symbol-name:setLocalValue","kind":"calls","metadata":{"unresolvedName":"setLocalValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","to":"symbol-name:onImportFile","kind":"calls","metadata":{"unresolvedName":"onImportFile"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","to":"symbol-name:setLocalValue","kind":"calls","metadata":{"unresolvedName":"setLocalValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","to":"symbol-name:onLoadTemplate","kind":"calls","metadata":{"unresolvedName":"onLoadTemplate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","to":"symbol-name:setLocalValue","kind":"calls","metadata":{"unresolvedName":"setLocalValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","to":"symbol-name:onClear","kind":"calls","metadata":{"unresolvedName":"onClear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:SavedSnippetItem","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:SavedSnippetItem","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:SavedSnippetItem","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:SavedSnippetItem","to":"external:snippet.css.slice","kind":"calls","metadata":{"unresolvedName":"snippet.css.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","kind":"calls","metadata":{"unresolvedName":"useTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"external:customCSSSnippets.find","kind":"calls","metadata":{"unresolvedName":"customCSSSnippets.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:clearActiveCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"clearActiveCustomCSSSnippet"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCustomCSS","kind":"calls","metadata":{"unresolvedName":"setCustomCSS"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"external:snippetName.trim","kind":"calls","metadata":{"unresolvedName":"snippetName.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"external:customCSS.trim","kind":"calls","metadata":{"unresolvedName":"customCSS.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:saveCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"saveCustomCSSSnippet"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:updateCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"updateCustomCSSSnippet"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"external:window.confirm","kind":"calls","metadata":{"unresolvedName":"window.confirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:deleteCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"deleteCustomCSSSnippet"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:saveData","kind":"calls","metadata":{"unresolvedName":"saveData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"external:new TextEncoder().encode","kind":"calls","metadata":{"unresolvedName":"new TextEncoder().encode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:getSnippetFileName","kind":"calls","metadata":{"unresolvedName":"getSnippetFileName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"external:availablePresets.map","kind":"calls","metadata":{"unresolvedName":"availablePresets.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"symbol-name:setPresetWithAnimation","kind":"calls","metadata":{"unresolvedName":"setPresetWithAnimation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"symbol-name:setSnippetDraft","kind":"calls","metadata":{"unresolvedName":"setSnippetDraft"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"external:customCSSSnippets.map","kind":"calls","metadata":{"unresolvedName":"customCSSSnippets.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"applyCustomCSSSnippet"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleExportSnippet","kind":"calls","metadata":{"unresolvedName":"handleExportSnippet"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleDeleteSnippet","kind":"calls","metadata":{"unresolvedName":"handleDeleteSnippet"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"symbol-name:setThemeWithAnimation","kind":"calls","metadata":{"unresolvedName":"setThemeWithAnimation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setGlassEffect","kind":"calls","metadata":{"unresolvedName":"setGlassEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setUIFontScale","kind":"calls","metadata":{"unresolvedName":"setUIFontScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCodeFontScale","kind":"calls","metadata":{"unresolvedName":"setCodeFontScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:AppearanceSettings","to":"external:i18n.changeLanguage","kind":"calls","metadata":{"unresolvedName":"i18n.changeLanguage"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleImportCSS","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleImportCSS","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleImportCSS","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:clearActiveCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"clearActiveCustomCSSSnippet"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleImportCSS","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCustomCSS","kind":"calls","metadata":{"unresolvedName":"setCustomCSS"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleSaveNewSnippet","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleSaveNewSnippet","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleSaveNewSnippet","to":"external:snippetName.trim","kind":"calls","metadata":{"unresolvedName":"snippetName.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleSaveNewSnippet","to":"external:customCSS.trim","kind":"calls","metadata":{"unresolvedName":"customCSS.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleSaveNewSnippet","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:saveCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"saveCustomCSSSnippet"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleRenameSnippet","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleRenameSnippet","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleRenameSnippet","to":"external:snippetName.trim","kind":"calls","metadata":{"unresolvedName":"snippetName.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleRenameSnippet","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:updateCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"updateCustomCSSSnippet"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleUpdateSnippet","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleUpdateSnippet","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleUpdateSnippet","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:updateCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"updateCustomCSSSnippet"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleDeleteSnippet","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleDeleteSnippet","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleDeleteSnippet","to":"external:window.confirm","kind":"calls","metadata":{"unresolvedName":"window.confirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleDeleteSnippet","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleDeleteSnippet","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:deleteCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"deleteCustomCSSSnippet"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleExportSnippet","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleExportSnippet","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleExportSnippet","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:saveData","kind":"calls","metadata":{"unresolvedName":"saveData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleExportSnippet","to":"external:new TextEncoder().encode","kind":"calls","metadata":{"unresolvedName":"new TextEncoder().encode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:handleExportSnippet","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:getSnippetFileName","kind":"calls","metadata":{"unresolvedName":"getSnippetFileName"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:clearActiveCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"clearActiveCustomCSSSnippet"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCustomCSS","kind":"calls","metadata":{"unresolvedName":"setCustomCSS"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setUIFontScale","kind":"calls","metadata":{"unresolvedName":"setUIFontScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCodeFontScale","kind":"calls","metadata":{"unresolvedName":"setCodeFontScale"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:ChatSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:ChatSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:ChatSettings","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:ChatSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:usePathMode","kind":"calls","metadata":{"unresolvedName":"usePathMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:ChatSettings","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:ChatSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:useIsMobile","kind":"calls","metadata":{"unresolvedName":"useIsMobile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:ChatSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCollapseUserMessages","kind":"calls","metadata":{"unresolvedName":"setCollapseUserMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:ChatSettings","to":"external:themeStore.setCollapseUserMessages","kind":"calls","metadata":{"unresolvedName":"themeStore.setCollapseUserMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:ChatSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setReasoningDisplayMode","kind":"calls","metadata":{"unresolvedName":"setReasoningDisplayMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:ChatSettings","to":"external:themeStore.setReasoningDisplayMode","kind":"calls","metadata":{"unresolvedName":"themeStore.setReasoningDisplayMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:ChatSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:ChatSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:setPathMode","kind":"calls","metadata":{"unresolvedName":"setPathMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:ChatSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:handleReasoningDisplayModeChange","kind":"calls","metadata":{"unresolvedName":"handleReasoningDisplayModeChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:ChatSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setStepFinishDisplay","kind":"calls","metadata":{"unresolvedName":"setStepFinishDisplay"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:ChatSettings","to":"external:themeStore.setStepFinishDisplay","kind":"calls","metadata":{"unresolvedName":"themeStore.setStepFinishDisplay"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:ChatSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCompletedAtFormat","kind":"calls","metadata":{"unresolvedName":"setCompletedAtFormat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:ChatSettings","to":"external:themeStore.setCompletedAtFormat","kind":"calls","metadata":{"unresolvedName":"themeStore.setCompletedAtFormat"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:handleCollapseToggle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:handleCollapseToggle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:handleCollapseToggle","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCollapseUserMessages","kind":"calls","metadata":{"unresolvedName":"setCollapseUserMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:handleCollapseToggle","to":"external:themeStore.setCollapseUserMessages","kind":"calls","metadata":{"unresolvedName":"themeStore.setCollapseUserMessages"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:handleReasoningDisplayModeChange","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:handleReasoningDisplayModeChange","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:handleReasoningDisplayModeChange","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setReasoningDisplayMode","kind":"calls","metadata":{"unresolvedName":"setReasoningDisplayMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:handleReasoningDisplayModeChange","to":"external:themeStore.setReasoningDisplayMode","kind":"calls","metadata":{"unresolvedName":"themeStore.setReasoningDisplayMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setStepFinishDisplay","kind":"calls","metadata":{"unresolvedName":"setStepFinishDisplay"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:","to":"external:themeStore.setStepFinishDisplay","kind":"calls","metadata":{"unresolvedName":"themeStore.setStepFinishDisplay"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setStepFinishDisplay","kind":"calls","metadata":{"unresolvedName":"setStepFinishDisplay"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:","to":"external:themeStore.setStepFinishDisplay","kind":"calls","metadata":{"unresolvedName":"themeStore.setStepFinishDisplay"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCompletedAtFormat","kind":"calls","metadata":{"unresolvedName":"setCompletedAtFormat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx:","to":"external:themeStore.setCompletedAtFormat","kind":"calls","metadata":{"unresolvedName":"themeStore.setCompletedAtFormat"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:useModelsMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useModelsMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:useHiddenModelKeysMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useHiddenModelKeysMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:setVisibleMock.mockReset","kind":"calls","metadata":{"unresolvedName":"setVisibleMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:setManyVisibleMock.mockReset","kind":"calls","metadata":{"unresolvedName":"setManyVisibleMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:screen.getAllByRole","kind":"calls","metadata":{"unresolvedName":"screen.getAllByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:expect(modelButton).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(modelButton).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:expect(switches[0]).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(switches[0]).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:expect(switches[1]).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(switches[1]).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:expect(setVisibleMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(setVisibleMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:expect(modelRow).not.toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(modelRow).not.toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:expect(switches[2]).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(switches[2]).toHaveAttribute"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:useModelsMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useModelsMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:useHiddenModelKeysMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useHiddenModelKeysMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:setVisibleMock.mockReset","kind":"calls","metadata":{"unresolvedName":"setVisibleMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:setManyVisibleMock.mockReset","kind":"calls","metadata":{"unresolvedName":"setManyVisibleMock.mockReset"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:screen.getAllByRole","kind":"calls","metadata":{"unresolvedName":"screen.getAllByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:expect(modelButton).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(modelButton).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:expect(switches[0]).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(switches[0]).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:expect(switches[1]).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(switches[1]).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:expect(setVisibleMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(setVisibleMock).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:expect(modelRow).not.toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(modelRow).not.toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:expect(setVisibleMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(setVisibleMock).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:useHiddenModelKeysMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useHiddenModelKeysMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:screen.getAllByRole","kind":"calls","metadata":{"unresolvedName":"screen.getAllByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:expect(switches[0]).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(switches[0]).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:expect(switches[1]).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(switches[1]).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.test.tsx:","to":"external:expect(switches[2]).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(switches[2]).toHaveAttribute"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:formatContext","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:formatContext","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:formatContext","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:formatContext","to":"external:(k / 1000).toFixed","kind":"calls","metadata":{"unresolvedName":"(k / 1000).toFixed"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:useModels","kind":"calls","metadata":{"unresolvedName":"useModels"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:useHiddenModelKeys","kind":"calls","metadata":{"unresolvedName":"useHiddenModelKeys"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"external:models.reduce","kind":"calls","metadata":{"unresolvedName":"models.reduce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"external:hiddenModelKeySet.has","kind":"calls","metadata":{"unresolvedName":"hiddenModelKeySet.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"external:query.trim().toLowerCase","kind":"calls","metadata":{"unresolvedName":"query.trim().toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"external:query.trim","kind":"calls","metadata":{"unresolvedName":"query.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"external:value.toLowerCase","kind":"calls","metadata":{"unresolvedName":"value.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"external:models.filter","kind":"calls","metadata":{"unresolvedName":"models.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"external:normalize(model.name).includes","kind":"calls","metadata":{"unresolvedName":"normalize(model.name).includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:normalize","kind":"calls","metadata":{"unresolvedName":"normalize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"external:normalize(model.id).includes","kind":"calls","metadata":{"unresolvedName":"normalize(model.id).includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"external:normalize(model.family).includes","kind":"calls","metadata":{"unresolvedName":"normalize(model.family).includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"external:normalize(model.providerName).includes","kind":"calls","metadata":{"unresolvedName":"normalize(model.providerName).includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:groupModelsByProvider","kind":"calls","metadata":{"unresolvedName":"groupModelsByProvider"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"symbol-name:setQuery","kind":"calls","metadata":{"unresolvedName":"setQuery"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"external:groups.map","kind":"calls","metadata":{"unresolvedName":"groups.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"external:providerModels.filter","kind":"calls","metadata":{"unresolvedName":"providerModels.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"external:modelVisibilityStore.setManyVisible","kind":"calls","metadata":{"unresolvedName":"modelVisibilityStore.setManyVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"external:group.models.map","kind":"calls","metadata":{"unresolvedName":"group.models.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"symbol-name:formatContext","kind":"calls","metadata":{"unresolvedName":"formatContext"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"external:modelVisibilityStore.setVisible","kind":"calls","metadata":{"unresolvedName":"modelVisibilityStore.setVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:ModelsSettings","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:query.trim().toLowerCase","kind":"calls","metadata":{"unresolvedName":"query.trim().toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:query.trim","kind":"calls","metadata":{"unresolvedName":"query.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:value.toLowerCase","kind":"calls","metadata":{"unresolvedName":"value.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:models.filter","kind":"calls","metadata":{"unresolvedName":"models.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:normalize(model.name).includes","kind":"calls","metadata":{"unresolvedName":"normalize(model.name).includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:normalize","kind":"calls","metadata":{"unresolvedName":"normalize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:normalize(model.id).includes","kind":"calls","metadata":{"unresolvedName":"normalize(model.id).includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:normalize(model.family).includes","kind":"calls","metadata":{"unresolvedName":"normalize(model.family).includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:normalize(model.providerName).includes","kind":"calls","metadata":{"unresolvedName":"normalize(model.providerName).includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:models.filter","kind":"calls","metadata":{"unresolvedName":"models.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:providerModels.filter","kind":"calls","metadata":{"unresolvedName":"providerModels.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:hiddenModelKeySet.has","kind":"calls","metadata":{"unresolvedName":"hiddenModelKeySet.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:modelVisibilityStore.setManyVisible","kind":"calls","metadata":{"unresolvedName":"modelVisibilityStore.setManyVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:group.models.map","kind":"calls","metadata":{"unresolvedName":"group.models.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"symbol-name:formatContext","kind":"calls","metadata":{"unresolvedName":"formatContext"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:modelVisibilityStore.setVisible","kind":"calls","metadata":{"unresolvedName":"modelVisibilityStore.setVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:modelVisibilityStore.setManyVisible","kind":"calls","metadata":{"unresolvedName":"modelVisibilityStore.setManyVisible"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:hiddenModelKeySet.has","kind":"calls","metadata":{"unresolvedName":"hiddenModelKeySet.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"symbol-name:formatContext","kind":"calls","metadata":{"unresolvedName":"formatContext"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:modelVisibilityStore.setVisible","kind":"calls","metadata":{"unresolvedName":"modelVisibilityStore.setVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:modelVisibilityStore.setVisible","kind":"calls","metadata":{"unresolvedName":"modelVisibilityStore.setVisible"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:modelVisibilityStore.setVisible","kind":"calls","metadata":{"unresolvedName":"modelVisibilityStore.setVisible"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx:","to":"external:modelVisibilityStore.setVisible","kind":"calls","metadata":{"unresolvedName":"modelVisibilityStore.setVisible"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx","to":"external:qrcode","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:vi.mocked(getNetworkAccess).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getNetworkAccess).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:vi.mocked(updateNetworkAccess).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(updateNetworkAccess).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:vi.mocked(getNetworkAccess).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getNetworkAccess).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:screen.findByRole","kind":"calls","metadata":{"unresolvedName":"screen.findByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:screen.findByAltText","kind":"calls","metadata":{"unresolvedName":"screen.findByAltText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:expect(QRCode.toDataURL).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(QRCode.toDataURL).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:vi.mocked(updateNetworkAccess).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(updateNetworkAccess).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:expect(updateNetworkAccess).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(updateNetworkAccess).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:vi.mocked(getNetworkAccess).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getNetworkAccess).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:vi.mocked(updateNetworkAccess).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(updateNetworkAccess).mockReset"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:vi.mocked(getNetworkAccess).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getNetworkAccess).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:screen.findByRole","kind":"calls","metadata":{"unresolvedName":"screen.findByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:screen.findByAltText","kind":"calls","metadata":{"unresolvedName":"screen.findByAltText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:expect(QRCode.toDataURL).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(QRCode.toDataURL).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:vi.mocked(getNetworkAccess).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getNetworkAccess).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:vi.mocked(updateNetworkAccess).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(updateNetworkAccess).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:screen.findByRole","kind":"calls","metadata":{"unresolvedName":"screen.findByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"external:expect(updateNetworkAccess).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(updateNetworkAccess).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"external:qrcode","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/network.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:NetworkAccessSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:NetworkAccessSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:NetworkAccessSettings","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:NetworkAccessSettings","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:NetworkAccessSettings","to":"external:getNetworkAccess()\n .then","kind":"calls","metadata":{"unresolvedName":"getNetworkAccess()\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:NetworkAccessSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts:getNetworkAccess","kind":"calls","metadata":{"unresolvedName":"getNetworkAccess"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:NetworkAccessSettings","to":"symbol-name:setInfo","kind":"calls","metadata":{"unresolvedName":"setInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:NetworkAccessSettings","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:NetworkAccessSettings","to":"symbol-name:setQrDataUrl","kind":"calls","metadata":{"unresolvedName":"setQrDataUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:NetworkAccessSettings","to":"external:QRCode.toDataURL(url, { margin: 1, width: 144 })\n .then","kind":"calls","metadata":{"unresolvedName":"QRCode.toDataURL(url, { margin: 1, width: 144 })\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:NetworkAccessSettings","to":"external:QRCode.toDataURL","kind":"calls","metadata":{"unresolvedName":"QRCode.toDataURL"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:NetworkAccessSettings","to":"symbol-name:setIsSaving","kind":"calls","metadata":{"unresolvedName":"setIsSaving"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:NetworkAccessSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts:updateNetworkAccess","kind":"calls","metadata":{"unresolvedName":"updateNetworkAccess"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","to":"external:getNetworkAccess()\n .then","kind":"calls","metadata":{"unresolvedName":"getNetworkAccess()\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts:getNetworkAccess","kind":"calls","metadata":{"unresolvedName":"getNetworkAccess"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","to":"symbol-name:setInfo","kind":"calls","metadata":{"unresolvedName":"setInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","to":"symbol-name:setInfo","kind":"calls","metadata":{"unresolvedName":"setInfo"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","to":"symbol-name:setQrDataUrl","kind":"calls","metadata":{"unresolvedName":"setQrDataUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","to":"external:QRCode.toDataURL(url, { margin: 1, width: 144 })\n .then","kind":"calls","metadata":{"unresolvedName":"QRCode.toDataURL(url, { margin: 1, width: 144 })\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","to":"external:QRCode.toDataURL","kind":"calls","metadata":{"unresolvedName":"QRCode.toDataURL"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","to":"symbol-name:setQrDataUrl","kind":"calls","metadata":{"unresolvedName":"setQrDataUrl"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","to":"symbol-name:setQrDataUrl","kind":"calls","metadata":{"unresolvedName":"setQrDataUrl"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:toggleLanAccess","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:toggleLanAccess","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:toggleLanAccess","to":"symbol-name:setIsSaving","kind":"calls","metadata":{"unresolvedName":"setIsSaving"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:toggleLanAccess","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:toggleLanAccess","to":"symbol-name:setInfo","kind":"calls","metadata":{"unresolvedName":"setInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx:toggleLanAccess","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/network.ts:updateNetworkAccess","kind":"calls","metadata":{"unresolvedName":"updateNetworkAccess"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:VolumeSlider","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:VolumeSlider","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:VolumeSlider","to":"symbol-name:onChange","kind":"calls","metadata":{"unresolvedName":"onChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:VolumeSlider","to":"symbol-name:Number","kind":"calls","metadata":{"unresolvedName":"Number"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventEnableRow","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventEnableRow","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventEnableRow","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventEnableRow","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:useNotificationEventSettings","kind":"calls","metadata":{"unresolvedName":"useNotificationEventSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventEnableRow","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventEnableRow","to":"external:notificationEventSettingsStore.setSystemEnabled","kind":"calls","metadata":{"unresolvedName":"notificationEventSettingsStore.setSystemEnabled"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:useSoundSettings","kind":"calls","metadata":{"unresolvedName":"useSoundSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","to":"external:soundStore.hasCustomAudio","kind":"calls","metadata":{"unresolvedName":"soundStore.hasCustomAudio"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","to":"external:soundStore.getCustomAudioBlob","kind":"calls","metadata":{"unresolvedName":"soundStore.getCustomAudioBlob"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playSound","kind":"calls","metadata":{"unresolvedName":"playSound"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","to":"symbol-name:setUploadError","kind":"calls","metadata":{"unresolvedName":"setUploadError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","to":"external:soundStore.setEventSound","kind":"calls","metadata":{"unresolvedName":"soundStore.setEventSound"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","to":"external:soundStore.uploadCustomAudio","kind":"calls","metadata":{"unresolvedName":"soundStore.uploadCustomAudio"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","to":"external:result.error.charAt(0).toUpperCase","kind":"calls","metadata":{"unresolvedName":"result.error.charAt(0).toUpperCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","to":"external:result.error.charAt","kind":"calls","metadata":{"unresolvedName":"result.error.charAt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","to":"external:result.error.slice","kind":"calls","metadata":{"unresolvedName":"result.error.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","to":"external:soundStore.removeCustomAudio","kind":"calls","metadata":{"unresolvedName":"soundStore.removeCustomAudio"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","to":"external:soundStore.exportCustomAudio","kind":"calls","metadata":{"unresolvedName":"soundStore.exportCustomAudio"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","to":"symbol-name:handleSoundChange","kind":"calls","metadata":{"unresolvedName":"handleSoundChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","to":"external:soundOptions.map","kind":"calls","metadata":{"unresolvedName":"soundOptions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:EventSoundCard","to":"external:fileInputRef.current?.click","kind":"calls","metadata":{"unresolvedName":"fileInputRef.current?.click"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","to":"external:soundStore.getCustomAudioBlob","kind":"calls","metadata":{"unresolvedName":"soundStore.getCustomAudioBlob"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playSound","kind":"calls","metadata":{"unresolvedName":"playSound"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","to":"symbol-name:setUploadError","kind":"calls","metadata":{"unresolvedName":"setUploadError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","to":"external:soundStore.setEventSound","kind":"calls","metadata":{"unresolvedName":"soundStore.setEventSound"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","to":"symbol-name:setUploadError","kind":"calls","metadata":{"unresolvedName":"setUploadError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","to":"external:soundStore.uploadCustomAudio","kind":"calls","metadata":{"unresolvedName":"soundStore.uploadCustomAudio"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","to":"external:result.error.charAt(0).toUpperCase","kind":"calls","metadata":{"unresolvedName":"result.error.charAt(0).toUpperCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","to":"external:result.error.charAt","kind":"calls","metadata":{"unresolvedName":"result.error.charAt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","to":"external:result.error.slice","kind":"calls","metadata":{"unresolvedName":"result.error.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","to":"symbol-name:setUploadError","kind":"calls","metadata":{"unresolvedName":"setUploadError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","to":"external:soundStore.removeCustomAudio","kind":"calls","metadata":{"unresolvedName":"soundStore.removeCustomAudio"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:","to":"external:soundStore.exportCustomAudio","kind":"calls","metadata":{"unresolvedName":"soundStore.exportCustomAudio"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:NotificationSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:NotificationSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:NotificationSettings","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:NotificationSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","kind":"calls","metadata":{"unresolvedName":"useNotification"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:NotificationSettings","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:NotificationSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:useSoundSettings","kind":"calls","metadata":{"unresolvedName":"useSoundSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:NotificationSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:isSoundSupported","kind":"calls","metadata":{"unresolvedName":"isSoundSupported"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:NotificationSettings","to":"symbol-name:sendNotification","kind":"calls","metadata":{"unresolvedName":"sendNotification"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:NotificationSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:NotificationSettings","to":"symbol-name:setToastEnabledState","kind":"calls","metadata":{"unresolvedName":"setToastEnabledState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:NotificationSettings","to":"external:notificationStore.setToastEnabled","kind":"calls","metadata":{"unresolvedName":"notificationStore.setToastEnabled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:NotificationSettings","to":"symbol-name:setNotificationsEnabled","kind":"calls","metadata":{"unresolvedName":"setNotificationsEnabled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:NotificationSettings","to":"external:EVENT_TYPES.map","kind":"calls","metadata":{"unresolvedName":"EVENT_TYPES.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:NotificationSettings","to":"external:soundStore.setEnabled","kind":"calls","metadata":{"unresolvedName":"soundStore.setEnabled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:NotificationSettings","to":"external:soundStore.setCurrentSessionEnabled","kind":"calls","metadata":{"unresolvedName":"soundStore.setCurrentSessionEnabled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:NotificationSettings","to":"external:soundStore.setVolume","kind":"calls","metadata":{"unresolvedName":"soundStore.setVolume"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:handleTestNotification","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:handleTestNotification","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:handleTestNotification","to":"symbol-name:sendNotification","kind":"calls","metadata":{"unresolvedName":"sendNotification"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:handleTestNotification","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:handleToastToggle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:handleToastToggle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:handleToastToggle","to":"symbol-name:setToastEnabledState","kind":"calls","metadata":{"unresolvedName":"setToastEnabledState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx:handleToastToggle","to":"external:notificationStore.setToastEnabled","kind":"calls","metadata":{"unresolvedName":"notificationStore.setToastEnabled"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/ConfirmDialog.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NetworkAccessSettings.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServerItem","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServerItem","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServerItem","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServerItem","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServerItem","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServerItem","to":"symbol-name:onEdit","kind":"calls","metadata":{"unresolvedName":"onEdit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServerItem","to":"symbol-name:setEditing","kind":"calls","metadata":{"unresolvedName":"setEditing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServerItem","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServerItem","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServerItem","to":"symbol-name:onCheckHealth","kind":"calls","metadata":{"unresolvedName":"onCheckHealth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServerItem","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:statusTitle","kind":"calls","metadata":{"unresolvedName":"statusTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServerItem","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:statusIcon","kind":"calls","metadata":{"unresolvedName":"statusIcon"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServerItem","to":"symbol-name:setConfirmDelete","kind":"calls","metadata":{"unresolvedName":"setConfirmDelete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServerItem","to":"symbol-name:onDelete","kind":"calls","metadata":{"unresolvedName":"onDelete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:statusIcon","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:statusIcon","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:statusTitle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:statusTitle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:statusTitle","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:onEdit","kind":"calls","metadata":{"unresolvedName":"onEdit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setEditing","kind":"calls","metadata":{"unresolvedName":"setEditing"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:onCheckHealth","kind":"calls","metadata":{"unresolvedName":"onCheckHealth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setEditing","kind":"calls","metadata":{"unresolvedName":"setEditing"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setConfirmDelete","kind":"calls","metadata":{"unresolvedName":"setConfirmDelete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setConfirmDelete","kind":"calls","metadata":{"unresolvedName":"setConfirmDelete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:onDelete","kind":"calls","metadata":{"unresolvedName":"onDelete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:EditServerForm","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:EditServerForm","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:EditServerForm","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:EditServerForm","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:EditServerForm","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:EditServerForm","to":"external:name.trim","kind":"calls","metadata":{"unresolvedName":"name.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:EditServerForm","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:EditServerForm","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:EditServerForm","to":"external:url.trim","kind":"calls","metadata":{"unresolvedName":"url.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:EditServerForm","to":"symbol-name:onSave","kind":"calls","metadata":{"unresolvedName":"onSave"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:EditServerForm","to":"external:password.trim","kind":"calls","metadata":{"unresolvedName":"password.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:EditServerForm","to":"external:username.trim","kind":"calls","metadata":{"unresolvedName":"username.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:EditServerForm","to":"symbol-name:setName","kind":"calls","metadata":{"unresolvedName":"setName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:EditServerForm","to":"symbol-name:setUrl","kind":"calls","metadata":{"unresolvedName":"setUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:EditServerForm","to":"symbol-name:setShowAuth","kind":"calls","metadata":{"unresolvedName":"setShowAuth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:EditServerForm","to":"symbol-name:setUsername","kind":"calls","metadata":{"unresolvedName":"setUsername"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:EditServerForm","to":"symbol-name:setPassword","kind":"calls","metadata":{"unresolvedName":"setPassword"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","to":"external:name.trim","kind":"calls","metadata":{"unresolvedName":"name.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","to":"external:url.trim","kind":"calls","metadata":{"unresolvedName":"url.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","to":"symbol-name:onSave","kind":"calls","metadata":{"unresolvedName":"onSave"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","to":"external:password.trim","kind":"calls","metadata":{"unresolvedName":"password.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","to":"external:username.trim","kind":"calls","metadata":{"unresolvedName":"username.trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setName","kind":"calls","metadata":{"unresolvedName":"setName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setUrl","kind":"calls","metadata":{"unresolvedName":"setUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setUsername","kind":"calls","metadata":{"unresolvedName":"setUsername"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setPassword","kind":"calls","metadata":{"unresolvedName":"setPassword"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:AddServerForm","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:AddServerForm","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:AddServerForm","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:AddServerForm","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:AddServerForm","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:AddServerForm","to":"external:name.trim","kind":"calls","metadata":{"unresolvedName":"name.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:AddServerForm","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:AddServerForm","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:AddServerForm","to":"external:url.trim","kind":"calls","metadata":{"unresolvedName":"url.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:AddServerForm","to":"symbol-name:onAdd","kind":"calls","metadata":{"unresolvedName":"onAdd"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:AddServerForm","to":"external:password.trim","kind":"calls","metadata":{"unresolvedName":"password.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:AddServerForm","to":"external:username.trim","kind":"calls","metadata":{"unresolvedName":"username.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:AddServerForm","to":"symbol-name:setName","kind":"calls","metadata":{"unresolvedName":"setName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:AddServerForm","to":"symbol-name:setUrl","kind":"calls","metadata":{"unresolvedName":"setUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:AddServerForm","to":"symbol-name:setShowAuth","kind":"calls","metadata":{"unresolvedName":"setShowAuth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:AddServerForm","to":"symbol-name:setUsername","kind":"calls","metadata":{"unresolvedName":"setUsername"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:AddServerForm","to":"symbol-name:setPassword","kind":"calls","metadata":{"unresolvedName":"setPassword"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","to":"external:name.trim","kind":"calls","metadata":{"unresolvedName":"name.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","to":"external:url.trim","kind":"calls","metadata":{"unresolvedName":"url.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","to":"symbol-name:onAdd","kind":"calls","metadata":{"unresolvedName":"onAdd"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","to":"external:password.trim","kind":"calls","metadata":{"unresolvedName":"password.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:handleSubmit","to":"external:username.trim","kind":"calls","metadata":{"unresolvedName":"username.trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"external:url.trim","kind":"calls","metadata":{"unresolvedName":"url.trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setName","kind":"calls","metadata":{"unresolvedName":"setName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setUrl","kind":"calls","metadata":{"unresolvedName":"setUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setUsername","kind":"calls","metadata":{"unresolvedName":"setUsername"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setPassword","kind":"calls","metadata":{"unresolvedName":"setPassword"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:useServerStore","kind":"calls","metadata":{"unresolvedName":"useServerStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:useRouter","kind":"calls","metadata":{"unresolvedName":"useRouter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"external:servers.find","kind":"calls","metadata":{"unresolvedName":"servers.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"external:servers.filter","kind":"calls","metadata":{"unresolvedName":"servers.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkAllHealth","kind":"calls","metadata":{"unresolvedName":"checkAllHealth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"external:messageStore.clearSession","kind":"calls","metadata":{"unresolvedName":"messageStore.clearSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:setActiveServer","kind":"calls","metadata":{"unresolvedName":"setActiveServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"symbol-name:navigateHome","kind":"calls","metadata":{"unresolvedName":"navigateHome"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"symbol-name:setAddingServer","kind":"calls","metadata":{"unresolvedName":"setAddingServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"external:orderedServers.map","kind":"calls","metadata":{"unresolvedName":"orderedServers.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"symbol-name:getHealth","kind":"calls","metadata":{"unresolvedName":"getHealth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"symbol-name:handleSelectServer","kind":"calls","metadata":{"unresolvedName":"handleSelectServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:removeServer","kind":"calls","metadata":{"unresolvedName":"removeServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:updateServer","kind":"calls","metadata":{"unresolvedName":"updateServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkHealth","kind":"calls","metadata":{"unresolvedName":"checkHealth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:ServersSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:addServer","kind":"calls","metadata":{"unresolvedName":"addServer"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"external:servers.find","kind":"calls","metadata":{"unresolvedName":"servers.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"external:servers.filter","kind":"calls","metadata":{"unresolvedName":"servers.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkAllHealth","kind":"calls","metadata":{"unresolvedName":"checkAllHealth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"external:messageStore.clearSession","kind":"calls","metadata":{"unresolvedName":"messageStore.clearSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:setActiveServer","kind":"calls","metadata":{"unresolvedName":"setActiveServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:navigateHome","kind":"calls","metadata":{"unresolvedName":"navigateHome"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:updateServer","kind":"calls","metadata":{"unresolvedName":"updateServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkHealth","kind":"calls","metadata":{"unresolvedName":"checkHealth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:addServer","kind":"calls","metadata":{"unresolvedName":"addServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"symbol-name:setAddingServer","kind":"calls","metadata":{"unresolvedName":"setAddingServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkHealth","kind":"calls","metadata":{"unresolvedName":"checkHealth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:useIsMobile","kind":"calls","metadata":{"unresolvedName":"useIsMobile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:useServiceStore","kind":"calls","metadata":{"unresolvedName":"useServiceStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:useServerStore","kind":"calls","metadata":{"unresolvedName":"useServerStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"symbol-name:setLocalBinaryPath","kind":"calls","metadata":{"unresolvedName":"setLocalBinaryPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleCheckService","kind":"calls","metadata":{"unresolvedName":"handleCheckService"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"external:serviceStore.setAutoStart","kind":"calls","metadata":{"unresolvedName":"serviceStore.setAutoStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"external:serviceStore.setBinaryPath","kind":"calls","metadata":{"unresolvedName":"serviceStore.setBinaryPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"symbol-name:setServiceError","kind":"calls","metadata":{"unresolvedName":"setServiceError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"external:serviceStore.setStarting","kind":"calls","metadata":{"unresolvedName":"serviceStore.setStarting"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"symbol-name:invoke","kind":"calls","metadata":{"unresolvedName":"invoke"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"symbol-name:getServerUrl","kind":"calls","metadata":{"unresolvedName":"getServerUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"external:serviceStore.setStartedByUs","kind":"calls","metadata":{"unresolvedName":"serviceStore.setStartedByUs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"external:serviceStore.setRunning","kind":"calls","metadata":{"unresolvedName":"serviceStore.setRunning"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleBinaryPathChange","kind":"calls","metadata":{"unresolvedName":"handleBinaryPathChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"external:serviceStore.setEnvVars","kind":"calls","metadata":{"unresolvedName":"serviceStore.setEnvVars"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"external:envVars.map","kind":"calls","metadata":{"unresolvedName":"envVars.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:ServiceSettings","to":"external:envVars.filter","kind":"calls","metadata":{"unresolvedName":"envVars.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:","to":"symbol-name:setLocalBinaryPath","kind":"calls","metadata":{"unresolvedName":"setLocalBinaryPath"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleCheckService","kind":"calls","metadata":{"unresolvedName":"handleCheckService"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleAutoStartToggle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleAutoStartToggle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleAutoStartToggle","to":"external:serviceStore.setAutoStart","kind":"calls","metadata":{"unresolvedName":"serviceStore.setAutoStart"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleBinaryPathChange","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleBinaryPathChange","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleBinaryPathChange","to":"symbol-name:setLocalBinaryPath","kind":"calls","metadata":{"unresolvedName":"setLocalBinaryPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleBinaryPathChange","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleBinaryPathChange","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleBinaryPathChange","to":"external:serviceStore.setBinaryPath","kind":"calls","metadata":{"unresolvedName":"serviceStore.setBinaryPath"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStartService","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStartService","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStartService","to":"symbol-name:setServiceError","kind":"calls","metadata":{"unresolvedName":"setServiceError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStartService","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStartService","to":"external:serviceStore.setStarting","kind":"calls","metadata":{"unresolvedName":"serviceStore.setStarting"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStartService","to":"symbol-name:invoke","kind":"calls","metadata":{"unresolvedName":"invoke"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStartService","to":"symbol-name:getServerUrl","kind":"calls","metadata":{"unresolvedName":"getServerUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStartService","to":"external:serviceStore.setStartedByUs","kind":"calls","metadata":{"unresolvedName":"serviceStore.setStartedByUs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStartService","to":"external:serviceStore.setRunning","kind":"calls","metadata":{"unresolvedName":"serviceStore.setRunning"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStartService","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStartService","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStopService","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStopService","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStopService","to":"symbol-name:setServiceError","kind":"calls","metadata":{"unresolvedName":"setServiceError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStopService","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStopService","to":"symbol-name:invoke","kind":"calls","metadata":{"unresolvedName":"invoke"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStopService","to":"external:serviceStore.setStartedByUs","kind":"calls","metadata":{"unresolvedName":"serviceStore.setStartedByUs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStopService","to":"external:serviceStore.setRunning","kind":"calls","metadata":{"unresolvedName":"serviceStore.setRunning"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleStopService","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleCheckService","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleCheckService","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleCheckService","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleCheckService","to":"symbol-name:invoke","kind":"calls","metadata":{"unresolvedName":"invoke"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleCheckService","to":"symbol-name:getServerUrl","kind":"calls","metadata":{"unresolvedName":"getServerUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleCheckService","to":"external:serviceStore.setRunning","kind":"calls","metadata":{"unresolvedName":"serviceStore.setRunning"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleCheckService","to":"external:serviceStore.setStartedByUs","kind":"calls","metadata":{"unresolvedName":"serviceStore.setStartedByUs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:handleCheckService","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:","to":"external:serviceStore.setEnvVars","kind":"calls","metadata":{"unresolvedName":"serviceStore.setEnvVars"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:","to":"external:serviceStore.setEnvVars","kind":"calls","metadata":{"unresolvedName":"serviceStore.setEnvVars"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:","to":"external:envVars.filter","kind":"calls","metadata":{"unresolvedName":"envVars.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx:","to":"external:serviceStore.setEnvVars","kind":"calls","metadata":{"unresolvedName":"serviceStore.setEnvVars"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:Toggle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:Toggle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:Toggle","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:Toggle","to":"symbol-name:onChange","kind":"calls","metadata":{"unresolvedName":"onChange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:","to":"symbol-name:onChange","kind":"calls","metadata":{"unresolvedName":"onChange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SegmentedControl","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SegmentedControl","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SegmentedControl","to":"external:options.findIndex","kind":"calls","metadata":{"unresolvedName":"options.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SegmentedControl","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SegmentedControl","to":"symbol-name:onChange","kind":"calls","metadata":{"unresolvedName":"onChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SegmentedControl","to":"external:options.map","kind":"calls","metadata":{"unresolvedName":"options.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:","to":"symbol-name:onChange","kind":"calls","metadata":{"unresolvedName":"onChange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SettingsSelect","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SettingsSelect","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SettingRow","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SettingRow","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SettingsSection","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SettingsSection","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SettingsCard","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx:SettingsCard","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:vi.mocked(getSttSettings).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getSttSettings).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:vi.mocked(updateSttSettings).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(updateSttSettings).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:vi.mocked(getSttSettings).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getSttSettings).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:vi.mocked(updateSttSettings).mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.mocked(updateSttSettings).mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:screen.findByRole","kind":"calls","metadata":{"unresolvedName":"screen.findByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(enableSwitch).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(enableSwitch).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(screen.queryByRole('checkbox')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByRole('checkbox')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:screen.queryByRole","kind":"calls","metadata":{"unresolvedName":"screen.queryByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(updateSttSettings).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(updateSttSettings).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(requireKeySwitch).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(requireKeySwitch).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:screen.findByText","kind":"calls","metadata":{"unresolvedName":"screen.findByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(screen.queryByText('Transcription provider')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByText('Transcription provider')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:screen.queryByText","kind":"calls","metadata":{"unresolvedName":"screen.queryByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(screen.getByLabelText('Provider')).toHaveValue","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByLabelText('Provider')).toHaveValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:screen.getByLabelText","kind":"calls","metadata":{"unresolvedName":"screen.getByLabelText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(screen.getByLabelText('Base URL')).toHaveValue","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByLabelText('Base URL')).toHaveValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(screen.getByLabelText('Endpoint')).toHaveValue","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByLabelText('Endpoint')).toHaveValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(screen.getByLabelText('Model')).toHaveValue","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByLabelText('Model')).toHaveValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:screen.findByLabelText","kind":"calls","metadata":{"unresolvedName":"screen.findByLabelText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(insertMode).toHaveClass","kind":"calls","metadata":{"unresolvedName":"expect(insertMode).toHaveClass"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(insertMode.closest('[data-settings-select]')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(insertMode.closest('[data-settings-select]')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:insertMode.closest","kind":"calls","metadata":{"unresolvedName":"insertMode.closest"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:vi.mocked(getSttSettings).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getSttSettings).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:vi.mocked(updateSttSettings).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(updateSttSettings).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:vi.mocked(getSttSettings).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getSttSettings).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:vi.mocked(updateSttSettings).mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.mocked(updateSttSettings).mockImplementation"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:screen.findByRole","kind":"calls","metadata":{"unresolvedName":"screen.findByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(enableSwitch).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(enableSwitch).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(screen.queryByRole('checkbox')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByRole('checkbox')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:screen.queryByRole","kind":"calls","metadata":{"unresolvedName":"screen.queryByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(updateSttSettings).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(updateSttSettings).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:screen.findByRole","kind":"calls","metadata":{"unresolvedName":"screen.findByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(requireKeySwitch).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(requireKeySwitch).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(updateSttSettings).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(updateSttSettings).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:screen.findByText","kind":"calls","metadata":{"unresolvedName":"screen.findByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(screen.queryByText('Transcription provider')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByText('Transcription provider')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:screen.queryByText","kind":"calls","metadata":{"unresolvedName":"screen.queryByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(screen.getByLabelText('Provider')).toHaveValue","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByLabelText('Provider')).toHaveValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:screen.getByLabelText","kind":"calls","metadata":{"unresolvedName":"screen.getByLabelText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(screen.getByLabelText('Base URL')).toHaveValue","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByLabelText('Base URL')).toHaveValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(screen.getByLabelText('Endpoint')).toHaveValue","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByLabelText('Endpoint')).toHaveValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(screen.getByLabelText('Model')).toHaveValue","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByLabelText('Model')).toHaveValue"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:screen.findByLabelText","kind":"calls","metadata":{"unresolvedName":"screen.findByLabelText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(insertMode).toHaveClass","kind":"calls","metadata":{"unresolvedName":"expect(insertMode).toHaveClass"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:expect(insertMode.closest('[data-settings-select]')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(insertMode.closest('[data-settings-select]')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.test.tsx:","to":"external:insertMode.closest","kind":"calls","metadata":{"unresolvedName":"insertMode.closest"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/stt.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:SttSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:SttSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:SttSettings","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:SttSettings","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:SttSettings","to":"external:getSttSettings()\n .then","kind":"calls","metadata":{"unresolvedName":"getSttSettings()\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:SttSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:getSttSettings","kind":"calls","metadata":{"unresolvedName":"getSttSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:SttSettings","to":"symbol-name:setSettings","kind":"calls","metadata":{"unresolvedName":"setSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:SttSettings","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:SttSettings","to":"symbol-name:setIsSaving","kind":"calls","metadata":{"unresolvedName":"setIsSaving"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:SttSettings","to":"symbol-name:updateSttSettings","kind":"calls","metadata":{"unresolvedName":"updateSttSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:SttSettings","to":"external:apiKey.trim","kind":"calls","metadata":{"unresolvedName":"apiKey.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:SttSettings","to":"symbol-name:setApiKey","kind":"calls","metadata":{"unresolvedName":"setApiKey"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:","to":"external:getSttSettings()\n .then","kind":"calls","metadata":{"unresolvedName":"getSttSettings()\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:getSttSettings","kind":"calls","metadata":{"unresolvedName":"getSttSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:","to":"symbol-name:setSettings","kind":"calls","metadata":{"unresolvedName":"setSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:","to":"symbol-name:setSettings","kind":"calls","metadata":{"unresolvedName":"setSettings"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:saveSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:saveSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:saveSettings","to":"symbol-name:setIsSaving","kind":"calls","metadata":{"unresolvedName":"setIsSaving"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:saveSettings","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:saveSettings","to":"symbol-name:setSettings","kind":"calls","metadata":{"unresolvedName":"setSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:saveSettings","to":"symbol-name:updateSttSettings","kind":"calls","metadata":{"unresolvedName":"updateSttSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:saveSettings","to":"external:apiKey.trim","kind":"calls","metadata":{"unresolvedName":"apiKey.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx:saveSettings","to":"symbol-name:setApiKey","kind":"calls","metadata":{"unresolvedName":"setApiKey"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:vi.mocked(getTtsSettings).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getTtsSettings).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:vi.mocked(updateTtsSettings).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(updateTtsSettings).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:vi.mocked(getTtsSettings).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getTtsSettings).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:vi.mocked(updateTtsSettings).mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.mocked(updateTtsSettings).mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:screen.findByLabelText","kind":"calls","metadata":{"unresolvedName":"screen.findByLabelText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:expect(voiceSelect).toHaveValue","kind":"calls","metadata":{"unresolvedName":"expect(voiceSelect).toHaveValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:expect(updateTtsSettings).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(updateTtsSettings).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:vi.mocked(getTtsSettings).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getTtsSettings).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:vi.mocked(updateTtsSettings).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(updateTtsSettings).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:vi.mocked(getTtsSettings).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getTtsSettings).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:vi.mocked(updateTtsSettings).mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.mocked(updateTtsSettings).mockImplementation"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:screen.findByLabelText","kind":"calls","metadata":{"unresolvedName":"screen.findByLabelText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:expect(voiceSelect).toHaveValue","kind":"calls","metadata":{"unresolvedName":"expect(voiceSelect).toHaveValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:fireEvent.change","kind":"calls","metadata":{"unresolvedName":"fireEvent.change"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:expect(updateTtsSettings).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(updateTtsSettings).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.test.tsx:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Button.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/tts.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:TtsSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:TtsSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:TtsSettings","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:TtsSettings","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:TtsSettings","to":"external:getTtsSettings()\n .then","kind":"calls","metadata":{"unresolvedName":"getTtsSettings()\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:TtsSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:getTtsSettings","kind":"calls","metadata":{"unresolvedName":"getTtsSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:TtsSettings","to":"symbol-name:setSettings","kind":"calls","metadata":{"unresolvedName":"setSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:TtsSettings","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:TtsSettings","to":"symbol-name:setIsSaving","kind":"calls","metadata":{"unresolvedName":"setIsSaving"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:TtsSettings","to":"symbol-name:updateTtsSettings","kind":"calls","metadata":{"unresolvedName":"updateTtsSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:TtsSettings","to":"external:apiKey.trim","kind":"calls","metadata":{"unresolvedName":"apiKey.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:TtsSettings","to":"symbol-name:setApiKey","kind":"calls","metadata":{"unresolvedName":"setApiKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:TtsSettings","to":"external:KOKORO_VOICES.map","kind":"calls","metadata":{"unresolvedName":"KOKORO_VOICES.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:","to":"external:getTtsSettings()\n .then","kind":"calls","metadata":{"unresolvedName":"getTtsSettings()\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/tts.ts:getTtsSettings","kind":"calls","metadata":{"unresolvedName":"getTtsSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:","to":"symbol-name:setSettings","kind":"calls","metadata":{"unresolvedName":"setSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:","to":"symbol-name:setSettings","kind":"calls","metadata":{"unresolvedName":"setSettings"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:saveSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:saveSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:saveSettings","to":"symbol-name:setIsSaving","kind":"calls","metadata":{"unresolvedName":"setIsSaving"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:saveSettings","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:saveSettings","to":"symbol-name:setSettings","kind":"calls","metadata":{"unresolvedName":"setSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:saveSettings","to":"symbol-name:updateTtsSettings","kind":"calls","metadata":{"unresolvedName":"updateTtsSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:saveSettings","to":"external:apiKey.trim","kind":"calls","metadata":{"unresolvedName":"apiKey.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx:saveSettings","to":"symbol-name:setApiKey","kind":"calls","metadata":{"unresolvedName":"setApiKey"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/VoiceSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SttSettings.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/VoiceSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/TtsSettings.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/VoiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/VoiceSettings.tsx:VoiceSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/VoiceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/VoiceSettings.tsx:VoiceSettings","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/SettingsUI.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:WorkspaceSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:WorkspaceSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:WorkspaceSettings","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:WorkspaceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","kind":"calls","metadata":{"unresolvedName":"useTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:WorkspaceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"calls","metadata":{"unresolvedName":"useLayoutStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:WorkspaceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:WorkspaceSettings","to":"external:layoutStore.setWakeLock","kind":"calls","metadata":{"unresolvedName":"layoutStore.setWakeLock"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:WorkspaceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCodeWordWrap","kind":"calls","metadata":{"unresolvedName":"setCodeWordWrap"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:WorkspaceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setManualTerminalTitles","kind":"calls","metadata":{"unresolvedName":"setManualTerminalTitles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:WorkspaceSettings","to":"external:layoutStore.syncTerminalTitleMode","kind":"calls","metadata":{"unresolvedName":"layoutStore.syncTerminalTitleMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:WorkspaceSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setDiffStyle","kind":"calls","metadata":{"unresolvedName":"setDiffStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:WorkspaceSettings","to":"external:layoutStore.setTerminalCopyOnSelect","kind":"calls","metadata":{"unresolvedName":"layoutStore.setTerminalCopyOnSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:WorkspaceSettings","to":"external:layoutStore.setTerminalRightClickPaste","kind":"calls","metadata":{"unresolvedName":"layoutStore.setTerminalRightClickPaste"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:WorkspaceSettings","to":"external:layoutStore.setSidebarFolderRecents","kind":"calls","metadata":{"unresolvedName":"layoutStore.setSidebarFolderRecents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:WorkspaceSettings","to":"external:layoutStore.setSidebarFolderRecentsShowDiff","kind":"calls","metadata":{"unresolvedName":"layoutStore.setSidebarFolderRecentsShowDiff"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:WorkspaceSettings","to":"external:layoutStore.setSidebarShowChildSessions","kind":"calls","metadata":{"unresolvedName":"layoutStore.setSidebarShowChildSessions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setManualTerminalTitles","kind":"calls","metadata":{"unresolvedName":"setManualTerminalTitles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:","to":"external:layoutStore.syncTerminalTitleMode","kind":"calls","metadata":{"unresolvedName":"layoutStore.syncTerminalTitleMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setManualTerminalTitles","kind":"calls","metadata":{"unresolvedName":"setManualTerminalTitles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx:","to":"external:layoutStore.syncTerminalTitleMode","kind":"calls","metadata":{"unresolvedName":"layoutStore.syncTerminalTitleMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:Kbd","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:Kbd","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:ShortcutDisplay","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:ShortcutDisplay","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:ShortcutDisplay","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:parseKeybinding","kind":"calls","metadata":{"unresolvedName":"parseKeybinding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:ShortcutDisplay","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybinding","kind":"calls","metadata":{"unresolvedName":"formatKeybinding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:ShortcutDisplay","to":"external:formatted.split","kind":"calls","metadata":{"unresolvedName":"formatted.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:ShortcutDisplay","to":"external:parts.map","kind":"calls","metadata":{"unresolvedName":"parts.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"external:captureRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"captureRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"external:['Control', 'Alt', 'Shift', 'Meta'].includes","kind":"calls","metadata":{"unresolvedName":"['Control', 'Alt', 'Shift', 'Meta'].includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:keyEventToString","kind":"calls","metadata":{"unresolvedName":"keyEventToString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"symbol-name:setTempKey","kind":"calls","metadata":{"unresolvedName":"setTempKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:isKeyUsed","kind":"calls","metadata":{"unresolvedName":"isKeyUsed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"symbol-name:onEdit","kind":"calls","metadata":{"unresolvedName":"onEdit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"symbol-name:setIsEditing","kind":"calls","metadata":{"unresolvedName":"setIsEditing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"symbol-name:cancel","kind":"calls","metadata":{"unresolvedName":"cancel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"symbol-name:confirm","kind":"calls","metadata":{"unresolvedName":"confirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"symbol-name:handleKeyDown","kind":"calls","metadata":{"unresolvedName":"handleKeyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingRow","to":"symbol-name:onReset","kind":"calls","metadata":{"unresolvedName":"onReset"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"external:captureRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"captureRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"external:['Control', 'Alt', 'Shift', 'Meta'].includes","kind":"calls","metadata":{"unresolvedName":"['Control', 'Alt', 'Shift', 'Meta'].includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:keyEventToString","kind":"calls","metadata":{"unresolvedName":"keyEventToString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"symbol-name:setTempKey","kind":"calls","metadata":{"unresolvedName":"setTempKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:isKeyUsed","kind":"calls","metadata":{"unresolvedName":"isKeyUsed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"symbol-name:onEdit","kind":"calls","metadata":{"unresolvedName":"onEdit"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"symbol-name:setIsEditing","kind":"calls","metadata":{"unresolvedName":"setIsEditing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"symbol-name:setTempKey","kind":"calls","metadata":{"unresolvedName":"setTempKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"symbol-name:setIsEditing","kind":"calls","metadata":{"unresolvedName":"setIsEditing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"symbol-name:setTempKey","kind":"calls","metadata":{"unresolvedName":"setTempKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"symbol-name:cancel","kind":"calls","metadata":{"unresolvedName":"cancel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"symbol-name:confirm","kind":"calls","metadata":{"unresolvedName":"confirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"symbol-name:handleKeyDown","kind":"calls","metadata":{"unresolvedName":"handleKeyDown"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:handler","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:handler","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:handler","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:handler","to":"symbol-name:cancel","kind":"calls","metadata":{"unresolvedName":"cancel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:handler","to":"symbol-name:confirm","kind":"calls","metadata":{"unresolvedName":"confirm"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:handler","to":"symbol-name:handleKeyDown","kind":"calls","metadata":{"unresolvedName":"handleKeyDown"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"symbol-name:setIsEditing","kind":"calls","metadata":{"unresolvedName":"setIsEditing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"symbol-name:setTempKey","kind":"calls","metadata":{"unresolvedName":"setTempKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingStore","kind":"calls","metadata":{"unresolvedName":"useKeybindingStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"external:keybindings.map","kind":"calls","metadata":{"unresolvedName":"keybindings.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"external:search.trim","kind":"calls","metadata":{"unresolvedName":"search.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"external:search.toLowerCase","kind":"calls","metadata":{"unresolvedName":"search.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"external:localizedKeybindings.filter","kind":"calls","metadata":{"unresolvedName":"localizedKeybindings.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"external:kb.label.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"kb.label.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"external:kb.label.toLowerCase","kind":"calls","metadata":{"unresolvedName":"kb.label.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"external:kb.description.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"kb.description.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"external:kb.description.toLowerCase","kind":"calls","metadata":{"unresolvedName":"kb.description.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"external:kb.currentKey.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"kb.currentKey.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"external:kb.currentKey.toLowerCase","kind":"calls","metadata":{"unresolvedName":"kb.currentKey.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"external:CATEGORY_ORDER.map","kind":"calls","metadata":{"unresolvedName":"CATEGORY_ORDER.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"external:filtered.filter","kind":"calls","metadata":{"unresolvedName":"filtered.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"external:localizedKeybindings.some","kind":"calls","metadata":{"unresolvedName":"localizedKeybindings.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"external:searchRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"searchRef.current?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"symbol-name:setSearch","kind":"calls","metadata":{"unresolvedName":"setSearch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"external:grouped.map","kind":"calls","metadata":{"unresolvedName":"grouped.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:KeybindingsSection","to":"external:items.map","kind":"calls","metadata":{"unresolvedName":"items.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"external:search.trim","kind":"calls","metadata":{"unresolvedName":"search.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"external:search.toLowerCase","kind":"calls","metadata":{"unresolvedName":"search.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"external:localizedKeybindings.filter","kind":"calls","metadata":{"unresolvedName":"localizedKeybindings.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"external:kb.label.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"kb.label.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"external:kb.label.toLowerCase","kind":"calls","metadata":{"unresolvedName":"kb.label.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"external:kb.description.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"kb.description.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"external:kb.description.toLowerCase","kind":"calls","metadata":{"unresolvedName":"kb.description.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"external:kb.currentKey.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"kb.currentKey.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"external:kb.currentKey.toLowerCase","kind":"calls","metadata":{"unresolvedName":"kb.currentKey.toLowerCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx:","to":"external:searchRef.current?.focus","kind":"calls","metadata":{"unresolvedName":"searchRef.current?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","to":"external:vi.stubGlobal","kind":"calls","metadata":{"unresolvedName":"vi.stubGlobal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","to":"external:expect(voiceTab).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(voiceTab).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","to":"external:expect(voiceTab).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(voiceTab).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","to":"external:expect(screen.getByText('voice-panel')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('voice-panel')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","to":"external:vi.stubGlobal","kind":"calls","metadata":{"unresolvedName":"vi.stubGlobal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","to":"external:screen.getByRole","kind":"calls","metadata":{"unresolvedName":"screen.getByRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","to":"external:expect(voiceTab).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(voiceTab).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","to":"external:fireEvent.click","kind":"calls","metadata":{"unresolvedName":"fireEvent.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","to":"external:expect(voiceTab).toHaveAttribute","kind":"calls","metadata":{"unresolvedName":"expect(voiceTab).toHaveAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","to":"external:expect(screen.getByText('voice-panel')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('voice-panel')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ui/Dialog.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Icons.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/KeybindingsSection.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AgentSettings.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AppearanceSettings.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/AboutSettings.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ChatSettings.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ModelsSettings.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/NotificationSettings.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServiceSettings.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/ServersSettings.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/VoiceSettings.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/components/WorkspaceSettings.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:TabContent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:TabContent","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:useIsMobile","kind":"calls","metadata":{"unresolvedName":"useIsMobile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"symbol-name:normalizeTab","kind":"calls","metadata":{"unresolvedName":"normalizeTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"external:TAB_IDS.filter","kind":"calls","metadata":{"unresolvedName":"TAB_IDS.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"external:visibleTabIds.map","kind":"calls","metadata":{"unresolvedName":"visibleTabIds.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"external:GROUP_DEFS.map","kind":"calls","metadata":{"unresolvedName":"GROUP_DEFS.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"external:group.tabs\n .map","kind":"calls","metadata":{"unresolvedName":"group.tabs\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"external:visibleTabs.find","kind":"calls","metadata":{"unresolvedName":"visibleTabs.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"symbol-name:setTab","kind":"calls","metadata":{"unresolvedName":"setTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"external:visibleTabs.some","kind":"calls","metadata":{"unresolvedName":"visibleTabs.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"external:document.getElementById(`settings-tab-${tab}`)?.focus","kind":"calls","metadata":{"unresolvedName":"document.getElementById(`settings-tab-${tab}`)?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"external:scrollRef.current?.scrollTo","kind":"calls","metadata":{"unresolvedName":"scrollRef.current?.scrollTo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"external:visibleTabs.map","kind":"calls","metadata":{"unresolvedName":"visibleTabs.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"external:ids.indexOf","kind":"calls","metadata":{"unresolvedName":"ids.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"symbol-name:switchTab","kind":"calls","metadata":{"unresolvedName":"switchTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"external:document.getElementById(`settings-tab-${ids[next]}`)?.focus","kind":"calls","metadata":{"unresolvedName":"document.getElementById(`settings-tab-${ids[next]}`)?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"external:groupedTabs.map","kind":"calls","metadata":{"unresolvedName":"groupedTabs.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:SettingsDialog","to":"external:group.tabs.map","kind":"calls","metadata":{"unresolvedName":"group.tabs.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"symbol-name:setTab","kind":"calls","metadata":{"unresolvedName":"setTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"symbol-name:normalizeTab","kind":"calls","metadata":{"unresolvedName":"normalizeTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"symbol-name:setTab","kind":"calls","metadata":{"unresolvedName":"setTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"symbol-name:normalizeTab","kind":"calls","metadata":{"unresolvedName":"normalizeTab"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"external:visibleTabs.some","kind":"calls","metadata":{"unresolvedName":"visibleTabs.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"symbol-name:setTab","kind":"calls","metadata":{"unresolvedName":"setTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"symbol-name:setTab","kind":"calls","metadata":{"unresolvedName":"setTab"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"external:document.getElementById(`settings-tab-${tab}`)?.focus","kind":"calls","metadata":{"unresolvedName":"document.getElementById(`settings-tab-${tab}`)?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"external:document.getElementById(`settings-tab-${tab}`)?.focus","kind":"calls","metadata":{"unresolvedName":"document.getElementById(`settings-tab-${tab}`)?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"symbol-name:setTab","kind":"calls","metadata":{"unresolvedName":"setTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"external:scrollRef.current?.scrollTo","kind":"calls","metadata":{"unresolvedName":"scrollRef.current?.scrollTo"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"external:scrollRef.current?.scrollTo","kind":"calls","metadata":{"unresolvedName":"scrollRef.current?.scrollTo"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"external:visibleTabs.map","kind":"calls","metadata":{"unresolvedName":"visibleTabs.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"external:ids.indexOf","kind":"calls","metadata":{"unresolvedName":"ids.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"symbol-name:switchTab","kind":"calls","metadata":{"unresolvedName":"switchTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"external:document.getElementById(`settings-tab-${ids[next]}`)?.focus","kind":"calls","metadata":{"unresolvedName":"document.getElementById(`settings-tab-${ids[next]}`)?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"external:document.getElementById(`settings-tab-${ids[next]}`)?.focus","kind":"calls","metadata":{"unresolvedName":"document.getElementById(`settings-tab-${ids[next]}`)?.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/settings/SettingsDialog.tsx:","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:expect(screen.getByText('/compact')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('/compact')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:expect(screen.queryByText('/explain')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByText('/explain')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:screen.queryByText","kind":"calls","metadata":{"unresolvedName":"screen.queryByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:expect(screen.getByText('/compact')).toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByText('/compact')).toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:screen.getByText","kind":"calls","metadata":{"unresolvedName":"screen.getByText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:expect(screen.queryByText('/explain')).not.toBeInTheDocument","kind":"calls","metadata":{"unresolvedName":"expect(screen.queryByText('/explain')).not.toBeInTheDocument"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:screen.queryByText","kind":"calls","metadata":{"unresolvedName":"screen.queryByText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:query.toLowerCase","kind":"calls","metadata":{"unresolvedName":"query.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:commands.filter","kind":"calls","metadata":{"unresolvedName":"commands.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:cmd.name.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"cmd.name.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:cmd.name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"cmd.name.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:cmd.description?.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"cmd.description?.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:cmd.description?.toLowerCase","kind":"calls","metadata":{"unresolvedName":"cmd.description?.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:commands.reduce","kind":"calls","metadata":{"unresolvedName":"commands.reduce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:useLayoutEffect","kind":"calls","metadata":{"unresolvedName":"useLayoutEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:setDynamicMaxHeight","kind":"calls","metadata":{"unresolvedName":"setDynamicMaxHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:parent.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"parent.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:window.visualViewport?.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.visualViewport?.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:window.visualViewport?.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.visualViewport?.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:getCommands(rootPath)\r\n .then","kind":"calls","metadata":{"unresolvedName":"getCommands(rootPath)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands","kind":"calls","metadata":{"unresolvedName":"getCommands"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:setCommands","kind":"calls","metadata":{"unresolvedName":"setCommands"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:selectedEl.scrollIntoView","kind":"calls","metadata":{"unresolvedName":"selectedEl.scrollIntoView"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:useImperativeHandle","kind":"calls","metadata":{"unresolvedName":"useImperativeHandle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:menuRef.current.contains","kind":"calls","metadata":{"unresolvedName":"menuRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:filteredCommands.map","kind":"calls","metadata":{"unresolvedName":"filteredCommands.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:query.toLowerCase","kind":"calls","metadata":{"unresolvedName":"query.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:commands.filter","kind":"calls","metadata":{"unresolvedName":"commands.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:cmd.name.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"cmd.name.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:cmd.name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"cmd.name.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:cmd.description?.toLowerCase().includes","kind":"calls","metadata":{"unresolvedName":"cmd.description?.toLowerCase().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:cmd.description?.toLowerCase","kind":"calls","metadata":{"unresolvedName":"cmd.description?.toLowerCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:commands.reduce","kind":"calls","metadata":{"unresolvedName":"commands.reduce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:setDynamicMaxHeight","kind":"calls","metadata":{"unresolvedName":"setDynamicMaxHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:parent.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"parent.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:window.visualViewport?.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.visualViewport?.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:window.visualViewport?.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.visualViewport?.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:calculate","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:calculate","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:calculate","to":"symbol-name:setDynamicMaxHeight","kind":"calls","metadata":{"unresolvedName":"setDynamicMaxHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:calculate","to":"external:parent.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"parent.getBoundingClientRect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:window.visualViewport?.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.visualViewport?.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:getCommands(rootPath)\r\n .then","kind":"calls","metadata":{"unresolvedName":"getCommands(rootPath)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands","kind":"calls","metadata":{"unresolvedName":"getCommands"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:setCommands","kind":"calls","metadata":{"unresolvedName":"setCommands"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:getCommands(rootPath)\r\n .then","kind":"calls","metadata":{"unresolvedName":"getCommands(rootPath)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:getCommands","kind":"calls","metadata":{"unresolvedName":"getCommands"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:setCommands","kind":"calls","metadata":{"unresolvedName":"setCommands"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:setCommands","kind":"calls","metadata":{"unresolvedName":"setCommands"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:setCommands","kind":"calls","metadata":{"unresolvedName":"setCommands"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:setLoading","kind":"calls","metadata":{"unresolvedName":"setLoading"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:selectedEl.scrollIntoView","kind":"calls","metadata":{"unresolvedName":"selectedEl.scrollIntoView"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:moveUp","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:moveUp","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:moveUp","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:moveUp","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:moveDown","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:moveDown","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:moveDown","to":"symbol-name:setSelectedIndex","kind":"calls","metadata":{"unresolvedName":"setSelectedIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:moveDown","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:selectCurrent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:selectCurrent","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:selectCurrent","to":"symbol-name:onSelect","kind":"calls","metadata":{"unresolvedName":"onSelect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:menuRef.current.contains","kind":"calls","metadata":{"unresolvedName":"menuRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:handleClickOutside","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:handleClickOutside","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:handleClickOutside","to":"external:menuRef.current.contains","kind":"calls","metadata":{"unresolvedName":"menuRef.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/slash-command/SlashCommandMenu.tsx:handleClickOutside","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:useCancelHint","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:useCancelHint","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:useCancelHint","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:useCancelHint","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:useCancelHint","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:useCancelHint","to":"symbol-name:setShowCancelHint","kind":"calls","metadata":{"unresolvedName":"setShowCancelHint"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:useCancelHint","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:useCancelHint","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:useCancelHint","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:useCancelHint","to":"symbol-name:handleAbort","kind":"calls","metadata":{"unresolvedName":"handleAbort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:useCancelHint","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:","to":"symbol-name:setShowCancelHint","kind":"calls","metadata":{"unresolvedName":"setShowCancelHint"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:","to":"symbol-name:setShowCancelHint","kind":"calls","metadata":{"unresolvedName":"setShowCancelHint"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:","to":"symbol-name:handleAbort","kind":"calls","metadata":{"unresolvedName":"handleAbort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCancelHint.ts:","to":"symbol-name:setShowCancelHint","kind":"calls","metadata":{"unresolvedName":"setShowCancelHint"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:createSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"createSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:summarizeSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"summarizeSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:executeCommandMock.mockReset","kind":"calls","metadata":{"unresolvedName":"executeCommandMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:getSelectableAgentsMock.mockReset","kind":"calls","metadata":{"unresolvedName":"getSelectableAgentsMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:registerSessionConsumerMock.mockReset","kind":"calls","metadata":{"unresolvedName":"registerSessionConsumerMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:updateConsumerSessionIdMock.mockReset","kind":"calls","metadata":{"unresolvedName":"updateConsumerSessionIdMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:sendNotificationMock.mockReset","kind":"calls","metadata":{"unresolvedName":"sendNotificationMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:isSystemEnabledMock.mockReset","kind":"calls","metadata":{"unresolvedName":"isSystemEnabledMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:errorHandlerMock.mockReset","kind":"calls","metadata":{"unresolvedName":"errorHandlerMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:sendMessageAsyncMock.mockReset","kind":"calls","metadata":{"unresolvedName":"sendMessageAsyncMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:abortSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"abortSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:registerSessionConsumerMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"registerSessionConsumerMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:getSelectableAgentsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getSelectableAgentsMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:isSystemEnabledMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"isSystemEnabledMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:summarizeSessionMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"summarizeSessionMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","kind":"calls","metadata":{"unresolvedName":"useChatSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:result.current.handleCommand","kind":"calls","metadata":{"unresolvedName":"result.current.handleCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:promise.then","kind":"calls","metadata":{"unresolvedName":"promise.then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(summarizeSessionMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(summarizeSessionMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(settled).toBe","kind":"calls","metadata":{"unresolvedName":"expect(settled).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(commandResult).toBe","kind":"calls","metadata":{"unresolvedName":"expect(commandResult).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:executeCommandMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"executeCommandMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(executeCommandMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(executeCommandMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:it.each","kind":"calls","metadata":{"unresolvedName":"it.each"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:registerSessionConsumerMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"registerSessionConsumerMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:callbacks?.[trigger]","kind":"calls","metadata":{"unresolvedName":"callbacks?.[trigger]"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(sendNotificationMock).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(sendNotificationMock).not.toHaveBeenCalled"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:createSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"createSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:summarizeSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"summarizeSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:executeCommandMock.mockReset","kind":"calls","metadata":{"unresolvedName":"executeCommandMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:getSelectableAgentsMock.mockReset","kind":"calls","metadata":{"unresolvedName":"getSelectableAgentsMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:registerSessionConsumerMock.mockReset","kind":"calls","metadata":{"unresolvedName":"registerSessionConsumerMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:updateConsumerSessionIdMock.mockReset","kind":"calls","metadata":{"unresolvedName":"updateConsumerSessionIdMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:sendNotificationMock.mockReset","kind":"calls","metadata":{"unresolvedName":"sendNotificationMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:isSystemEnabledMock.mockReset","kind":"calls","metadata":{"unresolvedName":"isSystemEnabledMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:errorHandlerMock.mockReset","kind":"calls","metadata":{"unresolvedName":"errorHandlerMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:sendMessageAsyncMock.mockReset","kind":"calls","metadata":{"unresolvedName":"sendMessageAsyncMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:abortSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"abortSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:registerSessionConsumerMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"registerSessionConsumerMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:getSelectableAgentsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getSelectableAgentsMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:isSystemEnabledMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"isSystemEnabledMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:summarizeSessionMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"summarizeSessionMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","kind":"calls","metadata":{"unresolvedName":"useChatSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:result.current.handleCommand","kind":"calls","metadata":{"unresolvedName":"result.current.handleCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:promise.then","kind":"calls","metadata":{"unresolvedName":"promise.then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(summarizeSessionMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(summarizeSessionMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(settled).toBe","kind":"calls","metadata":{"unresolvedName":"expect(settled).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(commandResult).toBe","kind":"calls","metadata":{"unresolvedName":"expect(commandResult).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:result.current.handleCommand","kind":"calls","metadata":{"unresolvedName":"result.current.handleCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:promise.then","kind":"calls","metadata":{"unresolvedName":"promise.then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:executeCommandMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"executeCommandMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","kind":"calls","metadata":{"unresolvedName":"useChatSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:result.current.handleCommand","kind":"calls","metadata":{"unresolvedName":"result.current.handleCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:promise.then","kind":"calls","metadata":{"unresolvedName":"promise.then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(executeCommandMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(executeCommandMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(settled).toBe","kind":"calls","metadata":{"unresolvedName":"expect(settled).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(commandResult).toBe","kind":"calls","metadata":{"unresolvedName":"expect(commandResult).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:result.current.handleCommand","kind":"calls","metadata":{"unresolvedName":"result.current.handleCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:promise.then","kind":"calls","metadata":{"unresolvedName":"promise.then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:registerSessionConsumerMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"registerSessionConsumerMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:isSystemEnabledMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"isSystemEnabledMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","kind":"calls","metadata":{"unresolvedName":"useChatSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:callbacks?.[trigger]","kind":"calls","metadata":{"unresolvedName":"callbacks?.[trigger]"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(sendNotificationMock).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(sendNotificationMock).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:callbacks?.[trigger]","kind":"calls","metadata":{"unresolvedName":"callbacks?.[trigger]"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:sendMessageAsyncMock.mockReset","kind":"calls","metadata":{"unresolvedName":"sendMessageAsyncMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:abortSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"abortSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:createSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"createSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:navigateToSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"navigateToSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:navigateHomeMock.mockReset","kind":"calls","metadata":{"unresolvedName":"navigateHomeMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:createSessionMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"createSessionMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","kind":"calls","metadata":{"unresolvedName":"useChatSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:result.current.handleSend","kind":"calls","metadata":{"unresolvedName":"result.current.handleSend"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(success).toBe","kind":"calls","metadata":{"unresolvedName":"expect(success).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(sendMessageAsyncMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(sendMessageAsyncMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(createSessionMock).toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(createSessionMock).toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(navigateToSessionMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(navigateToSessionMock).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:sendMessageAsyncMock.mockReset","kind":"calls","metadata":{"unresolvedName":"sendMessageAsyncMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:abortSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"abortSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:createSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"createSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:navigateToSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"navigateToSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:navigateHomeMock.mockReset","kind":"calls","metadata":{"unresolvedName":"navigateHomeMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:createSessionMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"createSessionMock.mockResolvedValue"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","kind":"calls","metadata":{"unresolvedName":"useChatSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:result.current.handleSend","kind":"calls","metadata":{"unresolvedName":"result.current.handleSend"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(success).toBe","kind":"calls","metadata":{"unresolvedName":"expect(success).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(sendMessageAsyncMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(sendMessageAsyncMock).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:result.current.handleSend","kind":"calls","metadata":{"unresolvedName":"result.current.handleSend"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","kind":"calls","metadata":{"unresolvedName":"useChatSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:result.current.handleSend","kind":"calls","metadata":{"unresolvedName":"result.current.handleSend"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(success).toBe","kind":"calls","metadata":{"unresolvedName":"expect(success).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(createSessionMock).toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(createSessionMock).toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(navigateToSessionMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(navigateToSessionMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:expect(sendMessageAsyncMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(sendMessageAsyncMock).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.test.tsx:","to":"external:result.current.handleSend","kind":"calls","metadata":{"unresolvedName":"result.current.handleSend"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/chat","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useActiveSessionStore","kind":"calls","metadata":{"unresolvedName":"useActiveSessionStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:serverStorage.get","kind":"calls","metadata":{"unresolvedName":"serverStorage.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:setSelectedAgentRaw","kind":"calls","metadata":{"unresolvedName":"setSelectedAgentRaw"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:serverStorage.set","kind":"calls","metadata":{"unresolvedName":"serverStorage.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:usePermissions","kind":"calls","metadata":{"unresolvedName":"usePermissions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useDirectory.ts:useDirectory","kind":"calls","metadata":{"unresolvedName":"useDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts/useSessionContext.ts:useSessionContext","kind":"calls","metadata":{"unresolvedName":"useSessionContext"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","kind":"calls","metadata":{"unresolvedName":"useNotification"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:useFollowupQueue","kind":"calls","metadata":{"unresolvedName":"useFollowupQueue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useSessionState","kind":"calls","metadata":{"unresolvedName":"useSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:Boolean","kind":"calls","metadata":{"unresolvedName":"Boolean"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:sessions.find","kind":"calls","metadata":{"unresolvedName":"sessions.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:sessionId.slice","kind":"calls","metadata":{"unresolvedName":"sessionId.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getSessionTitle","kind":"calls","metadata":{"unresolvedName":"getSessionTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:useSessionFamily","kind":"calls","metadata":{"unresolvedName":"useSessionFamily"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","kind":"calls","metadata":{"unresolvedName":"useSessionManager"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","kind":"calls","metadata":{"unresolvedName":"usePermissionHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation","kind":"calls","metadata":{"unresolvedName":"useMessageAnimation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:parts.push","kind":"calls","metadata":{"unresolvedName":"parts.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:autoApproveStore.getPaneFullAutoMode","kind":"calls","metadata":{"unresolvedName":"autoApproveStore.getPaneFullAutoMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:handlePermissionReply","kind":"calls","metadata":{"unresolvedName":"handlePermissionReply"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:autoApproveStore.shouldAutoApprove","kind":"calls","metadata":{"unresolvedName":"autoApproveStore.shouldAutoApprove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:setPendingPermissionRequests","kind":"calls","metadata":{"unresolvedName":"setPendingPermissionRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:prev.some","kind":"calls","metadata":{"unresolvedName":"prev.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:buildNotificationTitle","kind":"calls","metadata":{"unresolvedName":"buildNotificationTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:notificationEventSettingsStore.isSystemEnabled","kind":"calls","metadata":{"unresolvedName":"notificationEventSettingsStore.isSystemEnabled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:sendNotification","kind":"calls","metadata":{"unresolvedName":"sendNotification"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:setPendingQuestionRequests","kind":"calls","metadata":{"unresolvedName":"setPendingQuestionRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:chatAreaRef.current?.scrollToBottomIfAtBottom","kind":"calls","metadata":{"unresolvedName":"chatAreaRef.current?.scrollToBottomIfAtBottom"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:messageStore.markAllSessionsStale","kind":"calls","metadata":{"unresolvedName":"messageStore.markAllSessionsStale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:loadSession","kind":"calls","metadata":{"unresolvedName":"loadSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:refreshPendingRequests","kind":"calls","metadata":{"unresolvedName":"refreshPendingRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:refetchModels().catch","kind":"calls","metadata":{"unresolvedName":"refetchModels().catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:refetchModels","kind":"calls","metadata":{"unresolvedName":"refetchModels"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:getSelectableAgents(currentDirectory)\n .then","kind":"calls","metadata":{"unresolvedName":"getSelectableAgents(currentDirectory)\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts:getSelectableAgents","kind":"calls","metadata":{"unresolvedName":"getSelectableAgents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:registerSessionConsumer","kind":"calls","metadata":{"unresolvedName":"registerSessionConsumer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:sseCallbacksRef.current.onPermissionAsked","kind":"calls","metadata":{"unresolvedName":"sseCallbacksRef.current.onPermissionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:sseCallbacksRef.current.onPermissionReplied","kind":"calls","metadata":{"unresolvedName":"sseCallbacksRef.current.onPermissionReplied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:sseCallbacksRef.current.onQuestionAsked","kind":"calls","metadata":{"unresolvedName":"sseCallbacksRef.current.onQuestionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:sseCallbacksRef.current.onQuestionReplied","kind":"calls","metadata":{"unresolvedName":"sseCallbacksRef.current.onQuestionReplied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:sseCallbacksRef.current.onQuestionRejected","kind":"calls","metadata":{"unresolvedName":"sseCallbacksRef.current.onQuestionRejected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:sseCallbacksRef.current.onScrollRequest","kind":"calls","metadata":{"unresolvedName":"sseCallbacksRef.current.onScrollRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:sseCallbacksRef.current.onSessionIdle","kind":"calls","metadata":{"unresolvedName":"sseCallbacksRef.current.onSessionIdle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:sseCallbacksRef.current.onSessionError","kind":"calls","metadata":{"unresolvedName":"sseCallbacksRef.current.onSessionError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:sseCallbacksRef.current.onReconnected","kind":"calls","metadata":{"unresolvedName":"sseCallbacksRef.current.onReconnected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:updateConsumerSessionId","kind":"calls","metadata":{"unresolvedName":"updateConsumerSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:getSelectableAgents(currentDirectory)\n .then(setAgents)\n .catch","kind":"calls","metadata":{"unresolvedName":"getSelectableAgents(currentDirectory)\n .then(setAgents)\n .catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:getSelectableAgents(currentDirectory)\n .then","kind":"calls","metadata":{"unresolvedName":"getSelectableAgents(currentDirectory)\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:handleError","kind":"calls","metadata":{"unresolvedName":"handleError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:prefetchRootDirectory(effectiveDirectory).catch","kind":"calls","metadata":{"unresolvedName":"prefetchRootDirectory(effectiveDirectory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:prefetchRootDirectory","kind":"calls","metadata":{"unresolvedName":"prefetchRootDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:prefetchCommands(effectiveDirectory).catch","kind":"calls","metadata":{"unresolvedName":"prefetchCommands(effectiveDirectory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:prefetchCommands","kind":"calls","metadata":{"unresolvedName":"prefetchCommands"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:agents.filter","kind":"calls","metadata":{"unresolvedName":"agents.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:primaryAgents.some","kind":"calls","metadata":{"unresolvedName":"primaryAgents.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:setSelectedAgent","kind":"calls","metadata":{"unresolvedName":"setSelectedAgent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:resetPendingRequests","kind":"calls","metadata":{"unresolvedName":"resetPendingRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:childSessionStore.getChildSessionIds","kind":"calls","metadata":{"unresolvedName":"childSessionStore.getChildSessionIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionChildren","kind":"calls","metadata":{"unresolvedName":"getSessionChildren"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:childSessionStore.registerChildSession","kind":"calls","metadata":{"unresolvedName":"childSessionStore.registerChildSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:childSessionStore.getSessionAndDescendants","kind":"calls","metadata":{"unresolvedName":"childSessionStore.getSessionAndDescendants"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:Promise.all","kind":"calls","metadata":{"unresolvedName":"Promise.all"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:getPendingPermissions(undefined, effectiveDirectory).catch","kind":"calls","metadata":{"unresolvedName":"getPendingPermissions(undefined, effectiveDirectory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingPermissions","kind":"calls","metadata":{"unresolvedName":"getPendingPermissions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:getPendingQuestions(undefined, effectiveDirectory).catch","kind":"calls","metadata":{"unresolvedName":"getPendingQuestions(undefined, effectiveDirectory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingQuestions","kind":"calls","metadata":{"unresolvedName":"getPendingQuestions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:allPerms.filter","kind":"calls","metadata":{"unresolvedName":"allPerms.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:family.has","kind":"calls","metadata":{"unresolvedName":"family.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:nextPerms.map","kind":"calls","metadata":{"unresolvedName":"nextPerms.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:merged.has","kind":"calls","metadata":{"unresolvedName":"merged.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:merged.set","kind":"calls","metadata":{"unresolvedName":"merged.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:merged.values","kind":"calls","metadata":{"unresolvedName":"merged.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:allQuestions.filter","kind":"calls","metadata":{"unresolvedName":"allQuestions.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","kind":"calls","metadata":{"unresolvedName":"loadChildSessionsAndPermissions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:messageStore.createSendRollbackSnapshot","kind":"calls","metadata":{"unresolvedName":"messageStore.createSendRollbackSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:createSession","kind":"calls","metadata":{"unresolvedName":"createSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:messageStore.setMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:messageStore.truncateAfterRevert","kind":"calls","metadata":{"unresolvedName":"messageStore.truncateAfterRevert"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:messageStore.setStreaming","kind":"calls","metadata":{"unresolvedName":"messageStore.setStreaming"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:navigateToSession","kind":"calls","metadata":{"unresolvedName":"navigateToSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:sendMessageAsync","kind":"calls","metadata":{"unresolvedName":"sendMessageAsync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:state.messages.some","kind":"calls","metadata":{"unresolvedName":"state.messages.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:message.parts.some","kind":"calls","metadata":{"unresolvedName":"message.parts.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:getSessionMessages(pullSessionId, 5, pullDir)\n .then","kind":"calls","metadata":{"unresolvedName":"getSessionMessages(pullSessionId, 5, pullDir)\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessages","kind":"calls","metadata":{"unresolvedName":"getSessionMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:messageStore.handleMessageUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handleMessageUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:messageStore.handlePartUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:messageStore.restoreSendRollback","kind":"calls","metadata":{"unresolvedName":"messageStore.restoreSendRollback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:followupQueueStore.remove","kind":"calls","metadata":{"unresolvedName":"followupQueueStore.remove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:followupQueueStore.enqueue","kind":"calls","metadata":{"unresolvedName":"followupQueueStore.enqueue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:messageStore.upsertLocalMessage","kind":"calls","metadata":{"unresolvedName":"messageStore.upsertLocalMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:buildLocalQueuedMessage","kind":"calls","metadata":{"unresolvedName":"buildLocalQueuedMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:sendMessageNow","kind":"calls","metadata":{"unresolvedName":"sendMessageNow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:followupQueueStore.getItem","kind":"calls","metadata":{"unresolvedName":"followupQueueStore.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:followupQueueStore.startSending","kind":"calls","metadata":{"unresolvedName":"followupQueueStore.startSending"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:messageStore.removeMessage","kind":"calls","metadata":{"unresolvedName":"messageStore.removeMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:followupQueueStore.finishSending","kind":"calls","metadata":{"unresolvedName":"followupQueueStore.finishSending"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:followupQueueStore.markFailed","kind":"calls","metadata":{"unresolvedName":"followupQueueStore.markFailed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:followupQueueStore.getItems","kind":"calls","metadata":{"unresolvedName":"followupQueueStore.getItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:setRestoredContent","kind":"calls","metadata":{"unresolvedName":"setRestoredContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:sendQueuedFollowup","kind":"calls","metadata":{"unresolvedName":"sendQueuedFollowup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:followupQueueStore.clearSession","kind":"calls","metadata":{"unresolvedName":"followupQueueStore.clearSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:hasOtherConsumerForSession","kind":"calls","metadata":{"unresolvedName":"hasOtherConsumerForSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:messageStore.clearSession","kind":"calls","metadata":{"unresolvedName":"messageStore.clearSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:resetPermissions","kind":"calls","metadata":{"unresolvedName":"resetPermissions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:messages.findIndex","kind":"calls","metadata":{"unresolvedName":"messages.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:forkSession","kind":"calls","metadata":{"unresolvedName":"forkSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:isUserMessage","kind":"calls","metadata":{"unresolvedName":"isUserMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:extractUserMessageContent","kind":"calls","metadata":{"unresolvedName":"extractUserMessageContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:abortSession","kind":"calls","metadata":{"unresolvedName":"abortSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:messageStore.handleSessionIdle","kind":"calls","metadata":{"unresolvedName":"messageStore.handleSessionIdle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:commandStr.trim","kind":"calls","metadata":{"unresolvedName":"commandStr.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:trimmed.startsWith","kind":"calls","metadata":{"unresolvedName":"trimmed.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:trimmed.slice","kind":"calls","metadata":{"unresolvedName":"trimmed.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:withoutSlash.indexOf","kind":"calls","metadata":{"unresolvedName":"withoutSlash.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:withoutSlash.slice","kind":"calls","metadata":{"unresolvedName":"withoutSlash.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:navigateHome","kind":"calls","metadata":{"unresolvedName":"navigateHome"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:handleNewChat","kind":"calls","metadata":{"unresolvedName":"handleNewChat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:summarizeSession","kind":"calls","metadata":{"unresolvedName":"summarizeSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:executeCommand(sessionId, command, args, effectiveDirectory).catch","kind":"calls","metadata":{"unresolvedName":"executeCommand(sessionId, command, args, effectiveDirectory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:executeCommand","kind":"calls","metadata":{"unresolvedName":"executeCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:messages.slice(messageIndex).map","kind":"calls","metadata":{"unresolvedName":"messages.slice(messageIndex).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:messages.slice","kind":"calls","metadata":{"unresolvedName":"messages.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:animateUndo","kind":"calls","metadata":{"unresolvedName":"animateUndo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:handleUndo","kind":"calls","metadata":{"unresolvedName":"handleUndo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:animateRedo","kind":"calls","metadata":{"unresolvedName":"animateRedo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:handleRedo","kind":"calls","metadata":{"unresolvedName":"handleRedo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:updateSession","kind":"calls","metadata":{"unresolvedName":"updateSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:sessions.findIndex","kind":"calls","metadata":{"unresolvedName":"sessions.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:primaryAgents.findIndex","kind":"calls","metadata":{"unresolvedName":"primaryAgents.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:agents.some","kind":"calls","metadata":{"unresolvedName":"agents.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:[...messages].reverse().find","kind":"calls","metadata":{"unresolvedName":"[...messages].reverse().find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"external:[...messages].reverse","kind":"calls","metadata":{"unresolvedName":"[...messages].reverse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:getMessageText","kind":"calls","metadata":{"unresolvedName":"getMessageText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:clipboardErrorHandler","kind":"calls","metadata":{"unresolvedName":"clipboardErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:useChatSession","to":"symbol-name:clearRevert","kind":"calls","metadata":{"unresolvedName":"clearRevert"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:setSelectedAgentRaw","kind":"calls","metadata":{"unresolvedName":"setSelectedAgentRaw"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:serverStorage.set","kind":"calls","metadata":{"unresolvedName":"serverStorage.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:sessions.find","kind":"calls","metadata":{"unresolvedName":"sessions.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:sessionId.slice","kind":"calls","metadata":{"unresolvedName":"sessionId.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getSessionTitle","kind":"calls","metadata":{"unresolvedName":"getSessionTitle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:parts.push","kind":"calls","metadata":{"unresolvedName":"parts.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onPermissionAsked","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onPermissionAsked","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onPermissionAsked","to":"external:autoApproveStore.getPaneFullAutoMode","kind":"calls","metadata":{"unresolvedName":"autoApproveStore.getPaneFullAutoMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onPermissionAsked","to":"symbol-name:handlePermissionReply","kind":"calls","metadata":{"unresolvedName":"handlePermissionReply"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onPermissionAsked","to":"external:autoApproveStore.shouldAutoApprove","kind":"calls","metadata":{"unresolvedName":"autoApproveStore.shouldAutoApprove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onPermissionAsked","to":"symbol-name:setPendingPermissionRequests","kind":"calls","metadata":{"unresolvedName":"setPendingPermissionRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onPermissionAsked","to":"external:prev.some","kind":"calls","metadata":{"unresolvedName":"prev.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onPermissionAsked","to":"symbol-name:buildNotificationTitle","kind":"calls","metadata":{"unresolvedName":"buildNotificationTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onPermissionAsked","to":"external:notificationEventSettingsStore.isSystemEnabled","kind":"calls","metadata":{"unresolvedName":"notificationEventSettingsStore.isSystemEnabled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onPermissionAsked","to":"symbol-name:sendNotification","kind":"calls","metadata":{"unresolvedName":"sendNotification"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:prev.some","kind":"calls","metadata":{"unresolvedName":"prev.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onPermissionReplied","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onPermissionReplied","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onPermissionReplied","to":"symbol-name:setPendingPermissionRequests","kind":"calls","metadata":{"unresolvedName":"setPendingPermissionRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onPermissionReplied","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionAsked","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionAsked","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionAsked","to":"symbol-name:setPendingQuestionRequests","kind":"calls","metadata":{"unresolvedName":"setPendingQuestionRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionAsked","to":"external:prev.some","kind":"calls","metadata":{"unresolvedName":"prev.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionAsked","to":"symbol-name:buildNotificationTitle","kind":"calls","metadata":{"unresolvedName":"buildNotificationTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionAsked","to":"external:notificationEventSettingsStore.isSystemEnabled","kind":"calls","metadata":{"unresolvedName":"notificationEventSettingsStore.isSystemEnabled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionAsked","to":"symbol-name:sendNotification","kind":"calls","metadata":{"unresolvedName":"sendNotification"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:prev.some","kind":"calls","metadata":{"unresolvedName":"prev.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionReplied","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionReplied","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionReplied","to":"symbol-name:setPendingQuestionRequests","kind":"calls","metadata":{"unresolvedName":"setPendingQuestionRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionReplied","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionRejected","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionRejected","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionRejected","to":"symbol-name:setPendingQuestionRequests","kind":"calls","metadata":{"unresolvedName":"setPendingQuestionRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onQuestionRejected","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onScrollRequest","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onScrollRequest","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onScrollRequest","to":"external:chatAreaRef.current?.scrollToBottomIfAtBottom","kind":"calls","metadata":{"unresolvedName":"chatAreaRef.current?.scrollToBottomIfAtBottom"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onSessionIdle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onSessionIdle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onSessionIdle","to":"symbol-name:buildNotificationTitle","kind":"calls","metadata":{"unresolvedName":"buildNotificationTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onSessionIdle","to":"external:notificationEventSettingsStore.isSystemEnabled","kind":"calls","metadata":{"unresolvedName":"notificationEventSettingsStore.isSystemEnabled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onSessionIdle","to":"symbol-name:sendNotification","kind":"calls","metadata":{"unresolvedName":"sendNotification"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onSessionError","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onSessionError","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onSessionError","to":"symbol-name:buildNotificationTitle","kind":"calls","metadata":{"unresolvedName":"buildNotificationTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onSessionError","to":"external:notificationEventSettingsStore.isSystemEnabled","kind":"calls","metadata":{"unresolvedName":"notificationEventSettingsStore.isSystemEnabled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onSessionError","to":"symbol-name:sendNotification","kind":"calls","metadata":{"unresolvedName":"sendNotification"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onReconnected","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onReconnected","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onReconnected","to":"external:messageStore.markAllSessionsStale","kind":"calls","metadata":{"unresolvedName":"messageStore.markAllSessionsStale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onReconnected","to":"symbol-name:loadSession","kind":"calls","metadata":{"unresolvedName":"loadSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onReconnected","to":"symbol-name:refreshPendingRequests","kind":"calls","metadata":{"unresolvedName":"refreshPendingRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onReconnected","to":"external:refetchModels().catch","kind":"calls","metadata":{"unresolvedName":"refetchModels().catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onReconnected","to":"symbol-name:refetchModels","kind":"calls","metadata":{"unresolvedName":"refetchModels"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onReconnected","to":"external:getSelectableAgents(currentDirectory)\n .then","kind":"calls","metadata":{"unresolvedName":"getSelectableAgents(currentDirectory)\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:onReconnected","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts:getSelectableAgents","kind":"calls","metadata":{"unresolvedName":"getSelectableAgents"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:registerSessionConsumer","kind":"calls","metadata":{"unresolvedName":"registerSessionConsumer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:sseCallbacksRef.current.onPermissionAsked","kind":"calls","metadata":{"unresolvedName":"sseCallbacksRef.current.onPermissionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:sseCallbacksRef.current.onPermissionReplied","kind":"calls","metadata":{"unresolvedName":"sseCallbacksRef.current.onPermissionReplied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:sseCallbacksRef.current.onQuestionAsked","kind":"calls","metadata":{"unresolvedName":"sseCallbacksRef.current.onQuestionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:sseCallbacksRef.current.onQuestionReplied","kind":"calls","metadata":{"unresolvedName":"sseCallbacksRef.current.onQuestionReplied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:sseCallbacksRef.current.onQuestionRejected","kind":"calls","metadata":{"unresolvedName":"sseCallbacksRef.current.onQuestionRejected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:sseCallbacksRef.current.onScrollRequest","kind":"calls","metadata":{"unresolvedName":"sseCallbacksRef.current.onScrollRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:sseCallbacksRef.current.onSessionIdle","kind":"calls","metadata":{"unresolvedName":"sseCallbacksRef.current.onSessionIdle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:sseCallbacksRef.current.onSessionError","kind":"calls","metadata":{"unresolvedName":"sseCallbacksRef.current.onSessionError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:sseCallbacksRef.current.onReconnected","kind":"calls","metadata":{"unresolvedName":"sseCallbacksRef.current.onReconnected"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:updateConsumerSessionId","kind":"calls","metadata":{"unresolvedName":"updateConsumerSessionId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:getSelectableAgents(currentDirectory)\n .then(setAgents)\n .catch","kind":"calls","metadata":{"unresolvedName":"getSelectableAgents(currentDirectory)\n .then(setAgents)\n .catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:getSelectableAgents(currentDirectory)\n .then","kind":"calls","metadata":{"unresolvedName":"getSelectableAgents(currentDirectory)\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/agent.ts:getSelectableAgents","kind":"calls","metadata":{"unresolvedName":"getSelectableAgents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:handleError","kind":"calls","metadata":{"unresolvedName":"handleError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:prefetchRootDirectory(effectiveDirectory).catch","kind":"calls","metadata":{"unresolvedName":"prefetchRootDirectory(effectiveDirectory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:prefetchRootDirectory","kind":"calls","metadata":{"unresolvedName":"prefetchRootDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:prefetchCommands(effectiveDirectory).catch","kind":"calls","metadata":{"unresolvedName":"prefetchCommands(effectiveDirectory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:prefetchCommands","kind":"calls","metadata":{"unresolvedName":"prefetchCommands"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:agents.filter","kind":"calls","metadata":{"unresolvedName":"agents.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:primaryAgents.some","kind":"calls","metadata":{"unresolvedName":"primaryAgents.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:setSelectedAgent","kind":"calls","metadata":{"unresolvedName":"setSelectedAgent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:setSelectedAgent","kind":"calls","metadata":{"unresolvedName":"setSelectedAgent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:resetPendingRequests","kind":"calls","metadata":{"unresolvedName":"resetPendingRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:childSessionStore.getChildSessionIds","kind":"calls","metadata":{"unresolvedName":"childSessionStore.getChildSessionIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionChildren","kind":"calls","metadata":{"unresolvedName":"getSessionChildren"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:childSessionStore.registerChildSession","kind":"calls","metadata":{"unresolvedName":"childSessionStore.registerChildSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:childSessionStore.getSessionAndDescendants","kind":"calls","metadata":{"unresolvedName":"childSessionStore.getSessionAndDescendants"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:Promise.all","kind":"calls","metadata":{"unresolvedName":"Promise.all"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:getPendingPermissions(undefined, effectiveDirectory).catch","kind":"calls","metadata":{"unresolvedName":"getPendingPermissions(undefined, effectiveDirectory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingPermissions","kind":"calls","metadata":{"unresolvedName":"getPendingPermissions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:getPendingQuestions(undefined, effectiveDirectory).catch","kind":"calls","metadata":{"unresolvedName":"getPendingQuestions(undefined, effectiveDirectory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingQuestions","kind":"calls","metadata":{"unresolvedName":"getPendingQuestions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:allPerms.filter","kind":"calls","metadata":{"unresolvedName":"allPerms.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:family.has","kind":"calls","metadata":{"unresolvedName":"family.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:setPendingPermissionRequests","kind":"calls","metadata":{"unresolvedName":"setPendingPermissionRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:nextPerms.map","kind":"calls","metadata":{"unresolvedName":"nextPerms.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:merged.has","kind":"calls","metadata":{"unresolvedName":"merged.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:merged.set","kind":"calls","metadata":{"unresolvedName":"merged.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:merged.values","kind":"calls","metadata":{"unresolvedName":"merged.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:setPendingQuestionRequests","kind":"calls","metadata":{"unresolvedName":"setPendingQuestionRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:allQuestions.filter","kind":"calls","metadata":{"unresolvedName":"allQuestions.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","kind":"calls","metadata":{"unresolvedName":"loadChildSessionsAndPermissions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","to":"external:childSessionStore.getChildSessionIds","kind":"calls","metadata":{"unresolvedName":"childSessionStore.getChildSessionIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionChildren","kind":"calls","metadata":{"unresolvedName":"getSessionChildren"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","to":"external:childSessionStore.registerChildSession","kind":"calls","metadata":{"unresolvedName":"childSessionStore.registerChildSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","to":"external:childSessionStore.getSessionAndDescendants","kind":"calls","metadata":{"unresolvedName":"childSessionStore.getSessionAndDescendants"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","to":"external:Promise.all","kind":"calls","metadata":{"unresolvedName":"Promise.all"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","to":"external:getPendingPermissions(undefined, effectiveDirectory).catch","kind":"calls","metadata":{"unresolvedName":"getPendingPermissions(undefined, effectiveDirectory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingPermissions","kind":"calls","metadata":{"unresolvedName":"getPendingPermissions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","to":"external:getPendingQuestions(undefined, effectiveDirectory).catch","kind":"calls","metadata":{"unresolvedName":"getPendingQuestions(undefined, effectiveDirectory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingQuestions","kind":"calls","metadata":{"unresolvedName":"getPendingQuestions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","to":"external:allPerms.filter","kind":"calls","metadata":{"unresolvedName":"allPerms.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","to":"external:family.has","kind":"calls","metadata":{"unresolvedName":"family.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","to":"symbol-name:setPendingPermissionRequests","kind":"calls","metadata":{"unresolvedName":"setPendingPermissionRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","to":"external:nextPerms.map","kind":"calls","metadata":{"unresolvedName":"nextPerms.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","to":"external:merged.has","kind":"calls","metadata":{"unresolvedName":"merged.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","to":"external:merged.set","kind":"calls","metadata":{"unresolvedName":"merged.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","to":"external:merged.values","kind":"calls","metadata":{"unresolvedName":"merged.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","to":"symbol-name:setPendingQuestionRequests","kind":"calls","metadata":{"unresolvedName":"setPendingQuestionRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:loadChildSessionsAndPermissions","to":"external:allQuestions.filter","kind":"calls","metadata":{"unresolvedName":"allQuestions.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:nextPerms.map","kind":"calls","metadata":{"unresolvedName":"nextPerms.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:family.has","kind":"calls","metadata":{"unresolvedName":"family.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:merged.has","kind":"calls","metadata":{"unresolvedName":"merged.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:merged.set","kind":"calls","metadata":{"unresolvedName":"merged.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:merged.values","kind":"calls","metadata":{"unresolvedName":"merged.values"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messageStore.createSendRollbackSnapshot","kind":"calls","metadata":{"unresolvedName":"messageStore.createSendRollbackSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:createSession","kind":"calls","metadata":{"unresolvedName":"createSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messageStore.setMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messageStore.truncateAfterRevert","kind":"calls","metadata":{"unresolvedName":"messageStore.truncateAfterRevert"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messageStore.setStreaming","kind":"calls","metadata":{"unresolvedName":"messageStore.setStreaming"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:navigateToSession","kind":"calls","metadata":{"unresolvedName":"navigateToSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:sendMessageAsync","kind":"calls","metadata":{"unresolvedName":"sendMessageAsync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:state.messages.some","kind":"calls","metadata":{"unresolvedName":"state.messages.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:message.parts.some","kind":"calls","metadata":{"unresolvedName":"message.parts.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:getSessionMessages(pullSessionId, 5, pullDir)\n .then","kind":"calls","metadata":{"unresolvedName":"getSessionMessages(pullSessionId, 5, pullDir)\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessages","kind":"calls","metadata":{"unresolvedName":"getSessionMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messageStore.handleMessageUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handleMessageUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messageStore.handlePartUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:handleError","kind":"calls","metadata":{"unresolvedName":"handleError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messageStore.restoreSendRollback","kind":"calls","metadata":{"unresolvedName":"messageStore.restoreSendRollback"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:state.messages.some","kind":"calls","metadata":{"unresolvedName":"state.messages.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:message.parts.some","kind":"calls","metadata":{"unresolvedName":"message.parts.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:getSessionMessages(pullSessionId, 5, pullDir)\n .then","kind":"calls","metadata":{"unresolvedName":"getSessionMessages(pullSessionId, 5, pullDir)\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessages","kind":"calls","metadata":{"unresolvedName":"getSessionMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messageStore.handleMessageUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handleMessageUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messageStore.handlePartUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartUpdated"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:message.parts.some","kind":"calls","metadata":{"unresolvedName":"message.parts.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messageStore.handleMessageUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handleMessageUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messageStore.handlePartUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartUpdated"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:handleError","kind":"calls","metadata":{"unresolvedName":"handleError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:followupQueueStore.remove","kind":"calls","metadata":{"unresolvedName":"followupQueueStore.remove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:followupQueueStore.enqueue","kind":"calls","metadata":{"unresolvedName":"followupQueueStore.enqueue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messageStore.upsertLocalMessage","kind":"calls","metadata":{"unresolvedName":"messageStore.upsertLocalMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:buildLocalQueuedMessage","kind":"calls","metadata":{"unresolvedName":"buildLocalQueuedMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:sendMessageNow","kind":"calls","metadata":{"unresolvedName":"sendMessageNow"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:followupQueueStore.getItem","kind":"calls","metadata":{"unresolvedName":"followupQueueStore.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:followupQueueStore.startSending","kind":"calls","metadata":{"unresolvedName":"followupQueueStore.startSending"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messageStore.removeMessage","kind":"calls","metadata":{"unresolvedName":"messageStore.removeMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:sendMessageNow","kind":"calls","metadata":{"unresolvedName":"sendMessageNow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:followupQueueStore.finishSending","kind":"calls","metadata":{"unresolvedName":"followupQueueStore.finishSending"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:followupQueueStore.remove","kind":"calls","metadata":{"unresolvedName":"followupQueueStore.remove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:followupQueueStore.markFailed","kind":"calls","metadata":{"unresolvedName":"followupQueueStore.markFailed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:followupQueueStore.getItems","kind":"calls","metadata":{"unresolvedName":"followupQueueStore.getItems"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:setRestoredContent","kind":"calls","metadata":{"unresolvedName":"setRestoredContent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:sendQueuedFollowup","kind":"calls","metadata":{"unresolvedName":"sendQueuedFollowup"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:followupQueueStore.clearSession","kind":"calls","metadata":{"unresolvedName":"followupQueueStore.clearSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:hasOtherConsumerForSession","kind":"calls","metadata":{"unresolvedName":"hasOtherConsumerForSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messageStore.clearSession","kind":"calls","metadata":{"unresolvedName":"messageStore.clearSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:resetPermissions","kind":"calls","metadata":{"unresolvedName":"resetPermissions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:resetPendingRequests","kind":"calls","metadata":{"unresolvedName":"resetPendingRequests"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messages.findIndex","kind":"calls","metadata":{"unresolvedName":"messages.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:forkSession","kind":"calls","metadata":{"unresolvedName":"forkSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:setRestoredContent","kind":"calls","metadata":{"unresolvedName":"setRestoredContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:navigateToSession","kind":"calls","metadata":{"unresolvedName":"navigateToSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:isUserMessage","kind":"calls","metadata":{"unresolvedName":"isUserMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:extractUserMessageContent","kind":"calls","metadata":{"unresolvedName":"extractUserMessageContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:handleError","kind":"calls","metadata":{"unresolvedName":"handleError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:abortSession","kind":"calls","metadata":{"unresolvedName":"abortSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messageStore.handleSessionIdle","kind":"calls","metadata":{"unresolvedName":"messageStore.handleSessionIdle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:handleError","kind":"calls","metadata":{"unresolvedName":"handleError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:commandStr.trim","kind":"calls","metadata":{"unresolvedName":"commandStr.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:trimmed.startsWith","kind":"calls","metadata":{"unresolvedName":"trimmed.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:trimmed.slice","kind":"calls","metadata":{"unresolvedName":"trimmed.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:withoutSlash.indexOf","kind":"calls","metadata":{"unresolvedName":"withoutSlash.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:withoutSlash.slice","kind":"calls","metadata":{"unresolvedName":"withoutSlash.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:navigateHome","kind":"calls","metadata":{"unresolvedName":"navigateHome"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:handleNewChat","kind":"calls","metadata":{"unresolvedName":"handleNewChat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:createSession","kind":"calls","metadata":{"unresolvedName":"createSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:navigateToSession","kind":"calls","metadata":{"unresolvedName":"navigateToSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:handleError","kind":"calls","metadata":{"unresolvedName":"handleError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:summarizeSession","kind":"calls","metadata":{"unresolvedName":"summarizeSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:executeCommand(sessionId, command, args, effectiveDirectory).catch","kind":"calls","metadata":{"unresolvedName":"executeCommand(sessionId, command, args, effectiveDirectory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/command.ts:executeCommand","kind":"calls","metadata":{"unresolvedName":"executeCommand"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:handleError","kind":"calls","metadata":{"unresolvedName":"handleError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:handleError","kind":"calls","metadata":{"unresolvedName":"handleError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messages.findIndex","kind":"calls","metadata":{"unresolvedName":"messages.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messages.slice(messageIndex).map","kind":"calls","metadata":{"unresolvedName":"messages.slice(messageIndex).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:messages.slice","kind":"calls","metadata":{"unresolvedName":"messages.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:animateUndo","kind":"calls","metadata":{"unresolvedName":"animateUndo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:handleUndo","kind":"calls","metadata":{"unresolvedName":"handleUndo"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:animateRedo","kind":"calls","metadata":{"unresolvedName":"animateRedo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:handleRedo","kind":"calls","metadata":{"unresolvedName":"handleRedo"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:navigateToSession","kind":"calls","metadata":{"unresolvedName":"navigateToSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:navigateHome","kind":"calls","metadata":{"unresolvedName":"navigateHome"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:handleNewChat","kind":"calls","metadata":{"unresolvedName":"handleNewChat"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:updateSession","kind":"calls","metadata":{"unresolvedName":"updateSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:navigateHome","kind":"calls","metadata":{"unresolvedName":"navigateHome"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:handleNewChat","kind":"calls","metadata":{"unresolvedName":"handleNewChat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:handleError","kind":"calls","metadata":{"unresolvedName":"handleError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:sessions.findIndex","kind":"calls","metadata":{"unresolvedName":"sessions.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:navigateToSession","kind":"calls","metadata":{"unresolvedName":"navigateToSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:sessions.findIndex","kind":"calls","metadata":{"unresolvedName":"sessions.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:navigateToSession","kind":"calls","metadata":{"unresolvedName":"navigateToSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:agents.filter","kind":"calls","metadata":{"unresolvedName":"agents.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:primaryAgents.findIndex","kind":"calls","metadata":{"unresolvedName":"primaryAgents.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:setSelectedAgent","kind":"calls","metadata":{"unresolvedName":"setSelectedAgent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:agents.some","kind":"calls","metadata":{"unresolvedName":"agents.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:setSelectedAgent","kind":"calls","metadata":{"unresolvedName":"setSelectedAgent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:[...messages].reverse().find","kind":"calls","metadata":{"unresolvedName":"[...messages].reverse().find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"external:[...messages].reverse","kind":"calls","metadata":{"unresolvedName":"[...messages].reverse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:getMessageText","kind":"calls","metadata":{"unresolvedName":"getMessageText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:clipboardErrorHandler","kind":"calls","metadata":{"unresolvedName":"clipboardErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:setRestoredContent","kind":"calls","metadata":{"unresolvedName":"setRestoredContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","to":"symbol-name:clearRevert","kind":"calls","metadata":{"unresolvedName":"clearRevert"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useChatSession.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:useClickOutside","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:useClickOutside","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:useClickOutside","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:useClickOutside","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:useClickOutside","to":"external:ref.current.contains","kind":"calls","metadata":{"unresolvedName":"ref.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:useClickOutside","to":"symbol-name:callback","kind":"calls","metadata":{"unresolvedName":"callback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:useClickOutside","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:useClickOutside","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:","to":"external:ref.current.contains","kind":"calls","metadata":{"unresolvedName":"ref.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:","to":"symbol-name:callback","kind":"calls","metadata":{"unresolvedName":"callback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:handleClickOutside","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:handleClickOutside","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:handleClickOutside","to":"external:ref.current.contains","kind":"calls","metadata":{"unresolvedName":"ref.current.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:handleClickOutside","to":"symbol-name:callback","kind":"calls","metadata":{"unresolvedName":"callback"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:useCloseServiceDialog","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:useCloseServiceDialog","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:useCloseServiceDialog","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:useCloseServiceDialog","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:useCloseServiceDialog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:useCloseServiceDialog","to":"external:import('@tauri-apps/api/event').then","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/api/event').then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:useCloseServiceDialog","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:useCloseServiceDialog","to":"symbol-name:listen","kind":"calls","metadata":{"unresolvedName":"listen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:useCloseServiceDialog","to":"symbol-name:setShowCloseDialog","kind":"calls","metadata":{"unresolvedName":"setShowCloseDialog"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:useCloseServiceDialog","to":"symbol-name:unlisten","kind":"calls","metadata":{"unresolvedName":"unlisten"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:useCloseServiceDialog","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:useCloseServiceDialog","to":"symbol-name:invoke","kind":"calls","metadata":{"unresolvedName":"invoke"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:useCloseServiceDialog","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","to":"external:import('@tauri-apps/api/event').then","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/api/event').then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","to":"symbol-name:listen","kind":"calls","metadata":{"unresolvedName":"listen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","to":"symbol-name:setShowCloseDialog","kind":"calls","metadata":{"unresolvedName":"setShowCloseDialog"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","to":"symbol-name:unlisten","kind":"calls","metadata":{"unresolvedName":"unlisten"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","to":"symbol-name:listen","kind":"calls","metadata":{"unresolvedName":"listen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","to":"symbol-name:setShowCloseDialog","kind":"calls","metadata":{"unresolvedName":"setShowCloseDialog"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","to":"symbol-name:setShowCloseDialog","kind":"calls","metadata":{"unresolvedName":"setShowCloseDialog"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","to":"symbol-name:unlisten","kind":"calls","metadata":{"unresolvedName":"unlisten"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","to":"symbol-name:invoke","kind":"calls","metadata":{"unresolvedName":"invoke"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","to":"symbol-name:uiErrorHandler","kind":"calls","metadata":{"unresolvedName":"uiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useCloseServiceDialog.ts:","to":"symbol-name:setShowCloseDialog","kind":"calls","metadata":{"unresolvedName":"setShowCloseDialog"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"external:expect(result.current).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"external:expect(result.current).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"external:expect(result.current).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"external:expect(result.current).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","to":"symbol-name:setShouldRender","kind":"calls","metadata":{"unresolvedName":"setShouldRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:","to":"symbol-name:setShouldRender","kind":"calls","metadata":{"unresolvedName":"setShouldRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:","to":"symbol-name:setShouldRender","kind":"calls","metadata":{"unresolvedName":"setShouldRender"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:useDropdown","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:useDropdown","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:useDropdown","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:useDropdown","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:useDropdown","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:useDropdown","to":"symbol-name:setIsOpen","kind":"calls","metadata":{"unresolvedName":"setIsOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:useDropdown","to":"external:options.onOpen","kind":"calls","metadata":{"unresolvedName":"options.onOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:useDropdown","to":"external:options.onClose","kind":"calls","metadata":{"unresolvedName":"options.onClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:useDropdown","to":"symbol-name:close","kind":"calls","metadata":{"unresolvedName":"close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:useDropdown","to":"symbol-name:open","kind":"calls","metadata":{"unresolvedName":"open"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:useDropdown","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useClickOutside.ts:useClickOutside","kind":"calls","metadata":{"unresolvedName":"useClickOutside"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:","to":"symbol-name:setIsOpen","kind":"calls","metadata":{"unresolvedName":"setIsOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:","to":"external:options.onOpen","kind":"calls","metadata":{"unresolvedName":"options.onOpen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:","to":"symbol-name:setIsOpen","kind":"calls","metadata":{"unresolvedName":"setIsOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:","to":"external:options.onClose","kind":"calls","metadata":{"unresolvedName":"options.onClose"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:","to":"symbol-name:close","kind":"calls","metadata":{"unresolvedName":"close"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:","to":"symbol-name:open","kind":"calls","metadata":{"unresolvedName":"open"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDropdown.ts:","to":"symbol-name:close","kind":"calls","metadata":{"unresolvedName":"close"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","to":"symbol-name:estimateHeight","kind":"calls","metadata":{"unresolvedName":"estimateHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","to":"symbol-name:getEstimatedHeight","kind":"calls","metadata":{"unresolvedName":"getEstimatedHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","to":"symbol-name:findIndex","kind":"calls","metadata":{"unresolvedName":"findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","to":"symbol-name:setContainerHeight","kind":"calls","metadata":{"unresolvedName":"setContainerHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","to":"symbol-name:setContainerWidth","kind":"calls","metadata":{"unresolvedName":"setContainerWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","to":"external:ro.observe","kind":"calls","metadata":{"unresolvedName":"ro.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","to":"symbol-name:setMeasuredHeights","kind":"calls","metadata":{"unresolvedName":"setMeasuredHeights"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","to":"symbol-name:setScrollTop","kind":"calls","metadata":{"unresolvedName":"setScrollTop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:useDynamicVirtualScroll","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"symbol-name:getEstimatedHeight","kind":"calls","metadata":{"unresolvedName":"getEstimatedHeight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"symbol-name:findIndex","kind":"calls","metadata":{"unresolvedName":"findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"symbol-name:setContainerHeight","kind":"calls","metadata":{"unresolvedName":"setContainerHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"symbol-name:setContainerWidth","kind":"calls","metadata":{"unresolvedName":"setContainerWidth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"external:ro.observe","kind":"calls","metadata":{"unresolvedName":"ro.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"symbol-name:setContainerHeight","kind":"calls","metadata":{"unresolvedName":"setContainerHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"symbol-name:setContainerWidth","kind":"calls","metadata":{"unresolvedName":"setContainerWidth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"symbol-name:setMeasuredHeights","kind":"calls","metadata":{"unresolvedName":"setMeasuredHeights"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"external:ro.observe","kind":"calls","metadata":{"unresolvedName":"ro.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"external:ro.disconnect","kind":"calls","metadata":{"unresolvedName":"ro.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"symbol-name:setMeasuredHeights","kind":"calls","metadata":{"unresolvedName":"setMeasuredHeights"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"symbol-name:setScrollTop","kind":"calls","metadata":{"unresolvedName":"setScrollTop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"symbol-name:getEstimatedHeight","kind":"calls","metadata":{"unresolvedName":"getEstimatedHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"symbol-name:setMeasuredHeights","kind":"calls","metadata":{"unresolvedName":"setMeasuredHeights"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDynamicVirtualScroll.ts:","to":"symbol-name:setMeasuredHeights","kind":"calls","metadata":{"unresolvedName":"setMeasuredHeights"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:changeScopeStore.clearAll","kind":"calls","metadata":{"unresolvedName":"changeScopeStore.clearAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:vi.clearAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.clearAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:listDirectory.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"listDirectory.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:getFileContent.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getFileContent.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:getFileStatus.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getFileStatus.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:getVcsDiff.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getVcsDiff.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:getSessionDiff.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getSessionDiff.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:getLastTurnDiff.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getLastTurnDiff.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","kind":"calls","metadata":{"unresolvedName":"useFileExplorer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.fileStatus.get('src/session.ts')?.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.fileStatus.get('src/session.ts')?.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:result.current.fileStatus.get","kind":"calls","metadata":{"unresolvedName":"result.current.fileStatus.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(getSessionDiff).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(getSessionDiff).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:changeScopeStore.setMode","kind":"calls","metadata":{"unresolvedName":"changeScopeStore.setMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.fileStatus.get('src/turn.ts')?.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.fileStatus.get('src/turn.ts')?.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.fileStatus.get('src/session.ts')).toBeUndefined","kind":"calls","metadata":{"unresolvedName":"expect(result.current.fileStatus.get('src/session.ts')).toBeUndefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(getLastTurnDiff).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(getLastTurnDiff).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:listDirectory.mockImplementation","kind":"calls","metadata":{"unresolvedName":"listDirectory.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:result.current.toggleExpand","kind":"calls","metadata":{"unresolvedName":"result.current.toggleExpand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.expandedPaths.has('src')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.expandedPaths.has('src')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:result.current.expandedPaths.has","kind":"calls","metadata":{"unresolvedName":"result.current.expandedPaths.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree[0]?.children?.[0]?.path).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree[0]?.children?.[0]?.path).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree[0]?.absolute).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree[0]?.absolute).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree[0]?.children?.[0]?.path).toBeUndefined","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree[0]?.children?.[0]?.path).toBeUndefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:resolveRepoAChildren!","kind":"calls","metadata":{"unresolvedName":"resolveRepoAChildren!"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree[0]?.children?.map(child => child.path)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree[0]?.children?.map(child => child.path)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:result.current.tree[0]?.children?.map","kind":"calls","metadata":{"unresolvedName":"result.current.tree[0]?.children?.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:changeScopeStore.clearAll","kind":"calls","metadata":{"unresolvedName":"changeScopeStore.clearAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:vi.clearAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.clearAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:listDirectory.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"listDirectory.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:getFileContent.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getFileContent.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:getFileStatus.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getFileStatus.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:getVcsDiff.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getVcsDiff.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:getSessionDiff.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getSessionDiff.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:getLastTurnDiff.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getLastTurnDiff.mockResolvedValue"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","kind":"calls","metadata":{"unresolvedName":"useFileExplorer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.fileStatus.get('src/session.ts')?.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.fileStatus.get('src/session.ts')?.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:result.current.fileStatus.get","kind":"calls","metadata":{"unresolvedName":"result.current.fileStatus.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(getSessionDiff).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(getSessionDiff).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:changeScopeStore.setMode","kind":"calls","metadata":{"unresolvedName":"changeScopeStore.setMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.fileStatus.get('src/turn.ts')?.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.fileStatus.get('src/turn.ts')?.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.fileStatus.get('src/session.ts')).toBeUndefined","kind":"calls","metadata":{"unresolvedName":"expect(result.current.fileStatus.get('src/session.ts')).toBeUndefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(getLastTurnDiff).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(getLastTurnDiff).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.fileStatus.get('src/session.ts')?.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.fileStatus.get('src/session.ts')?.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:result.current.fileStatus.get","kind":"calls","metadata":{"unresolvedName":"result.current.fileStatus.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:changeScopeStore.setMode","kind":"calls","metadata":{"unresolvedName":"changeScopeStore.setMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.fileStatus.get('src/turn.ts')?.status).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.fileStatus.get('src/turn.ts')?.status).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:result.current.fileStatus.get","kind":"calls","metadata":{"unresolvedName":"result.current.fileStatus.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:listDirectory.mockImplementation","kind":"calls","metadata":{"unresolvedName":"listDirectory.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","kind":"calls","metadata":{"unresolvedName":"useFileExplorer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:result.current.toggleExpand","kind":"calls","metadata":{"unresolvedName":"result.current.toggleExpand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.expandedPaths.has('src')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.expandedPaths.has('src')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:result.current.expandedPaths.has","kind":"calls","metadata":{"unresolvedName":"result.current.expandedPaths.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree[0]?.children?.[0]?.path).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree[0]?.children?.[0]?.path).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree[0]?.absolute).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree[0]?.absolute).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree[0]?.children?.[0]?.path).toBeUndefined","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree[0]?.children?.[0]?.path).toBeUndefined"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:result.current.toggleExpand","kind":"calls","metadata":{"unresolvedName":"result.current.toggleExpand"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.expandedPaths.has('src')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.expandedPaths.has('src')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:result.current.expandedPaths.has","kind":"calls","metadata":{"unresolvedName":"result.current.expandedPaths.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree[0]?.children?.[0]?.path).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree[0]?.children?.[0]?.path).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree[0]?.absolute).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree[0]?.absolute).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree[0]?.children?.[0]?.path).toBeUndefined","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree[0]?.children?.[0]?.path).toBeUndefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.expandedPaths.has('src')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.expandedPaths.has('src')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:result.current.expandedPaths.has","kind":"calls","metadata":{"unresolvedName":"result.current.expandedPaths.has"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree[0]?.absolute).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree[0]?.absolute).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.expandedPaths.has('src')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.expandedPaths.has('src')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:result.current.expandedPaths.has","kind":"calls","metadata":{"unresolvedName":"result.current.expandedPaths.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree[0]?.children?.[0]?.path).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree[0]?.children?.[0]?.path).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:listDirectory.mockImplementation","kind":"calls","metadata":{"unresolvedName":"listDirectory.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","kind":"calls","metadata":{"unresolvedName":"useFileExplorer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree[0]?.absolute).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree[0]?.absolute).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:result.current.toggleExpand","kind":"calls","metadata":{"unresolvedName":"result.current.toggleExpand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree[0]?.children?.[0]?.path).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree[0]?.children?.[0]?.path).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:resolveRepoAChildren!","kind":"calls","metadata":{"unresolvedName":"resolveRepoAChildren!"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree[0]?.children?.map(child => child.path)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree[0]?.children?.map(child => child.path)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:result.current.tree[0]?.children?.map","kind":"calls","metadata":{"unresolvedName":"result.current.tree[0]?.children?.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree[0]?.absolute).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree[0]?.absolute).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:result.current.toggleExpand","kind":"calls","metadata":{"unresolvedName":"result.current.toggleExpand"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree[0]?.absolute).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree[0]?.absolute).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:result.current.toggleExpand","kind":"calls","metadata":{"unresolvedName":"result.current.toggleExpand"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"external:expect(result.current.tree[0]?.children?.[0]?.path).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.tree[0]?.children?.[0]?.path).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.test.tsx:","to":"symbol-name:resolveRepoAChildren!","kind":"calls","metadata":{"unresolvedName":"resolveRepoAChildren!"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:useSessionChangeScope","kind":"calls","metadata":{"unresolvedName":"useSessionChangeScope"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","kind":"calls","metadata":{"unresolvedName":"listDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:sortNodes","kind":"calls","metadata":{"unresolvedName":"sortNodes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:setTree","kind":"calls","metadata":{"unresolvedName":"setTree"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"external:sorted.map","kind":"calls","metadata":{"unresolvedName":"sorted.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:setFileStatus","kind":"calls","metadata":{"unresolvedName":"setFileStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:getFileStatus","kind":"calls","metadata":{"unresolvedName":"getFileStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"external:status.forEach","kind":"calls","metadata":{"unresolvedName":"status.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"external:normalized.startsWith","kind":"calls","metadata":{"unresolvedName":"normalized.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"external:statusMap.set","kind":"calls","metadata":{"unresolvedName":"statusMap.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsDiff","kind":"calls","metadata":{"unresolvedName":"getVcsDiff"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getLastTurnDiff","kind":"calls","metadata":{"unresolvedName":"getLastTurnDiff"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionDiff","kind":"calls","metadata":{"unresolvedName":"getSessionDiff"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"external:diffs.forEach","kind":"calls","metadata":{"unresolvedName":"diffs.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:getFileStatusFromDiff","kind":"calls","metadata":{"unresolvedName":"getFileStatusFromDiff"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:computeDirectoryStatus","kind":"calls","metadata":{"unresolvedName":"computeDirectoryStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"external:childLoadIdsRef.current.get","kind":"calls","metadata":{"unresolvedName":"childLoadIdsRef.current.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"external:childLoadIdsRef.current.set","kind":"calls","metadata":{"unresolvedName":"childLoadIdsRef.current.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:updateTreeNode","kind":"calls","metadata":{"unresolvedName":"updateTreeNode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:isCurrentLoad","kind":"calls","metadata":{"unresolvedName":"isCurrentLoad"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:setExpandedPaths","kind":"calls","metadata":{"unresolvedName":"setExpandedPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:updater","kind":"calls","metadata":{"unresolvedName":"updater"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"external:expandedPathsByDirectoryRef.current.set","kind":"calls","metadata":{"unresolvedName":"expandedPathsByDirectoryRef.current.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:updateExpandedPaths","kind":"calls","metadata":{"unresolvedName":"updateExpandedPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"external:next.has","kind":"calls","metadata":{"unresolvedName":"next.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"external:next.delete","kind":"calls","metadata":{"unresolvedName":"next.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"external:next.add","kind":"calls","metadata":{"unresolvedName":"next.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:findTreeNode","kind":"calls","metadata":{"unresolvedName":"findTreeNode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:loadChildren","kind":"calls","metadata":{"unresolvedName":"loadChildren"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:setPreviewLoading","kind":"calls","metadata":{"unresolvedName":"setPreviewLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:setPreviewError","kind":"calls","metadata":{"unresolvedName":"setPreviewError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"external:previewCacheRef.current.get","kind":"calls","metadata":{"unresolvedName":"previewCacheRef.current.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:setPreviewContent","kind":"calls","metadata":{"unresolvedName":"setPreviewContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getFileContent","kind":"calls","metadata":{"unresolvedName":"getFileContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"external:previewCacheRef.current.set","kind":"calls","metadata":{"unresolvedName":"previewCacheRef.current.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"external:expandedPathsByDirectoryRef.current.delete","kind":"calls","metadata":{"unresolvedName":"expandedPathsByDirectoryRef.current.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"external:previewCacheRef.current.clear","kind":"calls","metadata":{"unresolvedName":"previewCacheRef.current.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"external:Promise.all","kind":"calls","metadata":{"unresolvedName":"Promise.all"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:loadRoot","kind":"calls","metadata":{"unresolvedName":"loadRoot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:loadStatuses","kind":"calls","metadata":{"unresolvedName":"loadStatuses"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"external:expandedPathsByDirectoryRef.current.get","kind":"calls","metadata":{"unresolvedName":"expandedPathsByDirectoryRef.current.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:collectPendingExpandedDirectoryPaths","kind":"calls","metadata":{"unresolvedName":"collectPendingExpandedDirectoryPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:useFileExplorer","to":"external:pendingPaths.forEach","kind":"calls","metadata":{"unresolvedName":"pendingPaths.forEach"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","kind":"calls","metadata":{"unresolvedName":"listDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:sortNodes","kind":"calls","metadata":{"unresolvedName":"sortNodes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:setTree","kind":"calls","metadata":{"unresolvedName":"setTree"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:sorted.map","kind":"calls","metadata":{"unresolvedName":"sorted.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:setFileStatus","kind":"calls","metadata":{"unresolvedName":"setFileStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:getFileStatus","kind":"calls","metadata":{"unresolvedName":"getFileStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:status.forEach","kind":"calls","metadata":{"unresolvedName":"status.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:normalized.startsWith","kind":"calls","metadata":{"unresolvedName":"normalized.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:statusMap.set","kind":"calls","metadata":{"unresolvedName":"statusMap.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsDiff","kind":"calls","metadata":{"unresolvedName":"getVcsDiff"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getLastTurnDiff","kind":"calls","metadata":{"unresolvedName":"getLastTurnDiff"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionDiff","kind":"calls","metadata":{"unresolvedName":"getSessionDiff"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:diffs.forEach","kind":"calls","metadata":{"unresolvedName":"diffs.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:getFileStatusFromDiff","kind":"calls","metadata":{"unresolvedName":"getFileStatusFromDiff"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:computeDirectoryStatus","kind":"calls","metadata":{"unresolvedName":"computeDirectoryStatus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:normalized.startsWith","kind":"calls","metadata":{"unresolvedName":"normalized.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:statusMap.set","kind":"calls","metadata":{"unresolvedName":"statusMap.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:normalizePath","kind":"calls","metadata":{"unresolvedName":"normalizePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:statusMap.set","kind":"calls","metadata":{"unresolvedName":"statusMap.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:getFileStatusFromDiff","kind":"calls","metadata":{"unresolvedName":"getFileStatusFromDiff"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:childLoadIdsRef.current.get","kind":"calls","metadata":{"unresolvedName":"childLoadIdsRef.current.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:childLoadIdsRef.current.set","kind":"calls","metadata":{"unresolvedName":"childLoadIdsRef.current.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:setTree","kind":"calls","metadata":{"unresolvedName":"setTree"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:updateTreeNode","kind":"calls","metadata":{"unresolvedName":"updateTreeNode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:listDirectory","kind":"calls","metadata":{"unresolvedName":"listDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:isCurrentLoad","kind":"calls","metadata":{"unresolvedName":"isCurrentLoad"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:sortNodes","kind":"calls","metadata":{"unresolvedName":"sortNodes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:sorted.map","kind":"calls","metadata":{"unresolvedName":"sorted.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:setExpandedPaths","kind":"calls","metadata":{"unresolvedName":"setExpandedPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:updater","kind":"calls","metadata":{"unresolvedName":"updater"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:expandedPathsByDirectoryRef.current.set","kind":"calls","metadata":{"unresolvedName":"expandedPathsByDirectoryRef.current.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:updater","kind":"calls","metadata":{"unresolvedName":"updater"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:expandedPathsByDirectoryRef.current.set","kind":"calls","metadata":{"unresolvedName":"expandedPathsByDirectoryRef.current.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:updateExpandedPaths","kind":"calls","metadata":{"unresolvedName":"updateExpandedPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:next.has","kind":"calls","metadata":{"unresolvedName":"next.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:next.delete","kind":"calls","metadata":{"unresolvedName":"next.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:next.add","kind":"calls","metadata":{"unresolvedName":"next.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:findTreeNode","kind":"calls","metadata":{"unresolvedName":"findTreeNode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:loadChildren","kind":"calls","metadata":{"unresolvedName":"loadChildren"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:next.has","kind":"calls","metadata":{"unresolvedName":"next.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:next.delete","kind":"calls","metadata":{"unresolvedName":"next.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:next.add","kind":"calls","metadata":{"unresolvedName":"next.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:findTreeNode","kind":"calls","metadata":{"unresolvedName":"findTreeNode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:loadChildren","kind":"calls","metadata":{"unresolvedName":"loadChildren"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:updateExpandedPaths","kind":"calls","metadata":{"unresolvedName":"updateExpandedPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:next.add","kind":"calls","metadata":{"unresolvedName":"next.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:findTreeNode","kind":"calls","metadata":{"unresolvedName":"findTreeNode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:loadChildren","kind":"calls","metadata":{"unresolvedName":"loadChildren"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:next.add","kind":"calls","metadata":{"unresolvedName":"next.add"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:updateExpandedPaths","kind":"calls","metadata":{"unresolvedName":"updateExpandedPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:next.delete","kind":"calls","metadata":{"unresolvedName":"next.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:next.delete","kind":"calls","metadata":{"unresolvedName":"next.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:setPreviewLoading","kind":"calls","metadata":{"unresolvedName":"setPreviewLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:setPreviewError","kind":"calls","metadata":{"unresolvedName":"setPreviewError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:previewCacheRef.current.get","kind":"calls","metadata":{"unresolvedName":"previewCacheRef.current.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:setPreviewContent","kind":"calls","metadata":{"unresolvedName":"setPreviewContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/file.ts:getFileContent","kind":"calls","metadata":{"unresolvedName":"getFileContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:previewCacheRef.current.set","kind":"calls","metadata":{"unresolvedName":"previewCacheRef.current.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:setPreviewContent","kind":"calls","metadata":{"unresolvedName":"setPreviewContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:setPreviewError","kind":"calls","metadata":{"unresolvedName":"setPreviewError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:setPreviewLoading","kind":"calls","metadata":{"unresolvedName":"setPreviewLoading"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:expandedPathsByDirectoryRef.current.delete","kind":"calls","metadata":{"unresolvedName":"expandedPathsByDirectoryRef.current.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:setExpandedPaths","kind":"calls","metadata":{"unresolvedName":"setExpandedPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:previewCacheRef.current.clear","kind":"calls","metadata":{"unresolvedName":"previewCacheRef.current.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:setPreviewContent","kind":"calls","metadata":{"unresolvedName":"setPreviewContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:Promise.all","kind":"calls","metadata":{"unresolvedName":"Promise.all"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:loadRoot","kind":"calls","metadata":{"unresolvedName":"loadRoot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:loadStatuses","kind":"calls","metadata":{"unresolvedName":"loadStatuses"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:loadRoot","kind":"calls","metadata":{"unresolvedName":"loadRoot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:loadStatuses","kind":"calls","metadata":{"unresolvedName":"loadStatuses"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:setExpandedPaths","kind":"calls","metadata":{"unresolvedName":"setExpandedPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:expandedPathsByDirectoryRef.current.get","kind":"calls","metadata":{"unresolvedName":"expandedPathsByDirectoryRef.current.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:collectPendingExpandedDirectoryPaths","kind":"calls","metadata":{"unresolvedName":"collectPendingExpandedDirectoryPaths"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:pendingPaths.forEach","kind":"calls","metadata":{"unresolvedName":"pendingPaths.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:loadChildren","kind":"calls","metadata":{"unresolvedName":"loadChildren"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:loadChildren","kind":"calls","metadata":{"unresolvedName":"loadChildren"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:previewCacheRef.current.clear","kind":"calls","metadata":{"unresolvedName":"previewCacheRef.current.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:setPreviewContent","kind":"calls","metadata":{"unresolvedName":"setPreviewContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:setPreviewError","kind":"calls","metadata":{"unresolvedName":"setPreviewError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:setPreviewLoading","kind":"calls","metadata":{"unresolvedName":"setPreviewLoading"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:sortNodes","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:sortNodes","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:sortNodes","to":"external:[...nodes].sort","kind":"calls","metadata":{"unresolvedName":"[...nodes].sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:sortNodes","to":"external:a.name.toLowerCase().localeCompare","kind":"calls","metadata":{"unresolvedName":"a.name.toLowerCase().localeCompare"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:sortNodes","to":"external:a.name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"a.name.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:sortNodes","to":"external:b.name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"b.name.toLowerCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:a.name.toLowerCase().localeCompare","kind":"calls","metadata":{"unresolvedName":"a.name.toLowerCase().localeCompare"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:a.name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"a.name.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"external:b.name.toLowerCase","kind":"calls","metadata":{"unresolvedName":"b.name.toLowerCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:findTreeNode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:findTreeNode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:findTreeNode","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:findTreeNode","kind":"calls","metadata":{"unresolvedName":"findTreeNode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:updateTreeNode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:updateTreeNode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:updateTreeNode","to":"external:tree.map","kind":"calls","metadata":{"unresolvedName":"tree.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:updateTreeNode","to":"symbol-name:updater","kind":"calls","metadata":{"unresolvedName":"updater"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:updateTreeNode","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:updateTreeNode","kind":"calls","metadata":{"unresolvedName":"updateTreeNode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"symbol-name:updater","kind":"calls","metadata":{"unresolvedName":"updater"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:updateTreeNode","kind":"calls","metadata":{"unresolvedName":"updateTreeNode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:collectPendingExpandedDirectoryPaths","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:collectPendingExpandedDirectoryPaths","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:collectPendingExpandedDirectoryPaths","to":"external:expandedPaths.has","kind":"calls","metadata":{"unresolvedName":"expandedPaths.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:collectPendingExpandedDirectoryPaths","to":"external:pending.push","kind":"calls","metadata":{"unresolvedName":"pending.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:collectPendingExpandedDirectoryPaths","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:visit","kind":"calls","metadata":{"unresolvedName":"visit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:visit","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:visit","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:visit","to":"external:expandedPaths.has","kind":"calls","metadata":{"unresolvedName":"expandedPaths.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:visit","to":"external:pending.push","kind":"calls","metadata":{"unresolvedName":"pending.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:visit","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:visit","kind":"calls","metadata":{"unresolvedName":"visit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:normalizePath","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:normalizePath","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:normalizePath","to":"external:p.replace","kind":"calls","metadata":{"unresolvedName":"p.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:normalizePath","to":"external:result.startsWith","kind":"calls","metadata":{"unresolvedName":"result.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:normalizePath","to":"external:result.slice","kind":"calls","metadata":{"unresolvedName":"result.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:getFileStatusFromDiff","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:getFileStatusFromDiff","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:getFileStatusFromDiff","to":"external:diff.before.trim","kind":"calls","metadata":{"unresolvedName":"diff.before.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:getFileStatusFromDiff","to":"external:diff.after.trim","kind":"calls","metadata":{"unresolvedName":"diff.after.trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:computeDirectoryStatus","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:computeDirectoryStatus","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:computeDirectoryStatus","to":"external:filePath.split","kind":"calls","metadata":{"unresolvedName":"filePath.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:computeDirectoryStatus","to":"external:parts.slice(0, i).join","kind":"calls","metadata":{"unresolvedName":"parts.slice(0, i).join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:computeDirectoryStatus","to":"external:parts.slice","kind":"calls","metadata":{"unresolvedName":"parts.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:computeDirectoryStatus","to":"external:dirStatuses.get","kind":"calls","metadata":{"unresolvedName":"dirStatuses.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:computeDirectoryStatus","to":"external:dirStatuses.set","kind":"calls","metadata":{"unresolvedName":"dirStatuses.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:computeDirectoryStatus","to":"external:statusMap.has","kind":"calls","metadata":{"unresolvedName":"statusMap.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useFileExplorer.ts:computeDirectoryStatus","to":"external:statusMap.set","kind":"calls","metadata":{"unresolvedName":"statusMap.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:requestGitWorkspaceCatalogRefresh","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:requestGitWorkspaceCatalogRefresh","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:requestGitWorkspaceCatalogRefresh","to":"external:refreshListeners.forEach","kind":"calls","metadata":{"unresolvedName":"refreshListeners.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:requestGitWorkspaceCatalogRefresh","to":"symbol-name:listener","kind":"calls","metadata":{"unresolvedName":"listener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"symbol-name:setCatalog","kind":"calls","metadata":{"unresolvedName":"setCatalog"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:directories.filter(Boolean).map","kind":"calls","metadata":{"unresolvedName":"directories.filter(Boolean).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:directories.filter","kind":"calls","metadata":{"unresolvedName":"directories.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"symbol-name:setCatalogState","kind":"calls","metadata":{"unresolvedName":"setCatalogState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:Promise.allSettled","kind":"calls","metadata":{"unresolvedName":"Promise.allSettled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:normalizedDirectories.map","kind":"calls","metadata":{"unresolvedName":"normalizedDirectories.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getCurrentProject","kind":"calls","metadata":{"unresolvedName":"getCurrentProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:previousWorkspacesByRoot.set","kind":"calls","metadata":{"unresolvedName":"previousWorkspacesByRoot.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:normalizedDirectorySet.has","kind":"calls","metadata":{"unresolvedName":"normalizedDirectorySet.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:nextCatalog.set","kind":"calls","metadata":{"unresolvedName":"nextCatalog.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:previousCatalog.get","kind":"calls","metadata":{"unresolvedName":"previousCatalog.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:rootDirectories.add","kind":"calls","metadata":{"unresolvedName":"rootDirectories.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:directoryToRoot.set","kind":"calls","metadata":{"unresolvedName":"directoryToRoot.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:rootDirectoryList.map","kind":"calls","metadata":{"unresolvedName":"rootDirectoryList.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:listWorktrees","kind":"calls","metadata":{"unresolvedName":"listWorktrees"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:rootToWorkspaces.set","kind":"calls","metadata":{"unresolvedName":"rootToWorkspaces.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:previousWorkspacesByRoot.get","kind":"calls","metadata":{"unresolvedName":"previousWorkspacesByRoot.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:worktrees.map","kind":"calls","metadata":{"unresolvedName":"worktrees.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:normalizedWorktrees.filter","kind":"calls","metadata":{"unresolvedName":"normalizedWorktrees.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:worktree.toLowerCase","kind":"calls","metadata":{"unresolvedName":"worktree.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:rootDirectory.toLowerCase","kind":"calls","metadata":{"unresolvedName":"rootDirectory.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:rootToWorkspaces.get","kind":"calls","metadata":{"unresolvedName":"rootToWorkspaces.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"symbol-name:refresh","kind":"calls","metadata":{"unresolvedName":"refresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:refreshListeners.add","kind":"calls","metadata":{"unresolvedName":"refreshListeners.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:useGitWorkspaceCatalog","to":"external:refreshListeners.delete","kind":"calls","metadata":{"unresolvedName":"refreshListeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"symbol-name:setCatalog","kind":"calls","metadata":{"unresolvedName":"setCatalog"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:directories.filter(Boolean).map","kind":"calls","metadata":{"unresolvedName":"directories.filter(Boolean).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:directories.filter","kind":"calls","metadata":{"unresolvedName":"directories.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"symbol-name:setCatalogState","kind":"calls","metadata":{"unresolvedName":"setCatalogState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:Promise.allSettled","kind":"calls","metadata":{"unresolvedName":"Promise.allSettled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:normalizedDirectories.map","kind":"calls","metadata":{"unresolvedName":"normalizedDirectories.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getCurrentProject","kind":"calls","metadata":{"unresolvedName":"getCurrentProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:previousWorkspacesByRoot.set","kind":"calls","metadata":{"unresolvedName":"previousWorkspacesByRoot.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:normalizedDirectorySet.has","kind":"calls","metadata":{"unresolvedName":"normalizedDirectorySet.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:nextCatalog.set","kind":"calls","metadata":{"unresolvedName":"nextCatalog.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:previousCatalog.get","kind":"calls","metadata":{"unresolvedName":"previousCatalog.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:rootDirectories.add","kind":"calls","metadata":{"unresolvedName":"rootDirectories.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:directoryToRoot.set","kind":"calls","metadata":{"unresolvedName":"directoryToRoot.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:rootDirectoryList.map","kind":"calls","metadata":{"unresolvedName":"rootDirectoryList.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/worktree.ts:listWorktrees","kind":"calls","metadata":{"unresolvedName":"listWorktrees"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:rootToWorkspaces.set","kind":"calls","metadata":{"unresolvedName":"rootToWorkspaces.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:previousWorkspacesByRoot.get","kind":"calls","metadata":{"unresolvedName":"previousWorkspacesByRoot.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:worktrees.map","kind":"calls","metadata":{"unresolvedName":"worktrees.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:normalizedWorktrees.filter","kind":"calls","metadata":{"unresolvedName":"normalizedWorktrees.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:worktree.toLowerCase","kind":"calls","metadata":{"unresolvedName":"worktree.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:rootDirectory.toLowerCase","kind":"calls","metadata":{"unresolvedName":"rootDirectory.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:rootToWorkspaces.get","kind":"calls","metadata":{"unresolvedName":"rootToWorkspaces.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"symbol-name:refresh","kind":"calls","metadata":{"unresolvedName":"refresh"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"symbol-name:refresh","kind":"calls","metadata":{"unresolvedName":"refresh"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"symbol-name:refresh","kind":"calls","metadata":{"unresolvedName":"refresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:refreshListeners.add","kind":"calls","metadata":{"unresolvedName":"refreshListeners.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:refreshListeners.delete","kind":"calls","metadata":{"unresolvedName":"refreshListeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGitWorkspaceCatalog.ts:","to":"external:refreshListeners.delete","kind":"calls","metadata":{"unresolvedName":"refreshListeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:createDeferred","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:createDeferred","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:subscribeToEventsMock.mockReset","kind":"calls","metadata":{"unresolvedName":"subscribeToEventsMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getSessionStatusMock.mockClear","kind":"calls","metadata":{"unresolvedName":"getSessionStatusMock.mockClear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getPendingPermissionsMock.mockClear","kind":"calls","metadata":{"unresolvedName":"getPendingPermissionsMock.mockClear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getPendingQuestionsMock.mockClear","kind":"calls","metadata":{"unresolvedName":"getPendingQuestionsMock.mockClear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:replyPermissionMock.mockClear","kind":"calls","metadata":{"unresolvedName":"replyPermissionMock.mockClear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:childBelongsToSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"childBelongsToSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getFocusedSessionIdMock.mockReset","kind":"calls","metadata":{"unresolvedName":"getFocusedSessionIdMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:notificationPushMock.mockReset","kind":"calls","metadata":{"unresolvedName":"notificationPushMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:playNotificationSoundDedupedMock.mockReset","kind":"calls","metadata":{"unresolvedName":"playNotificationSoundDedupedMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getSoundSnapshotMock.mockReset","kind":"calls","metadata":{"unresolvedName":"getSoundSnapshotMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:isSystemEnabledMock.mockReset","kind":"calls","metadata":{"unresolvedName":"isSystemEnabledMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:applyServerConnectedTimestampMock.mockReset","kind":"calls","metadata":{"unresolvedName":"applyServerConnectedTimestampMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getActiveServerIdMock.mockReset","kind":"calls","metadata":{"unresolvedName":"getActiveServerIdMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:Object.values(activeSessionStoreMock).forEach","kind":"calls","metadata":{"unresolvedName":"Object.values(activeSessionStoreMock).forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:Object.values","kind":"calls","metadata":{"unresolvedName":"Object.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:value.mockClear","kind":"calls","metadata":{"unresolvedName":"value.mockClear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:subscribeToEventsMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"subscribeToEventsMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getSoundSnapshotMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"getSoundSnapshotMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:isSystemEnabledMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"isSystemEnabledMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getActiveServerIdMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"getActiveServerIdMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:activeSessionStoreMock.getSessionMeta.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"activeSessionStoreMock.getSessionMeta.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:activeSessionStoreMock.getSnapshot.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"activeSessionStoreMock.getSnapshot.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","kind":"calls","metadata":{"unresolvedName":"useGlobalEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(callbacks).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(callbacks).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:callbacks!.onServerConnected","kind":"calls","metadata":{"unresolvedName":"callbacks!.onServerConnected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(applyServerConnectedTimestampMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(applyServerConnectedTimestampMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getPendingPermissionsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getPendingPermissionsMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getPendingQuestionsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getPendingQuestionsMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getSessionStatusMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"getSessionStatusMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:createDeferred","kind":"calls","metadata":{"unresolvedName":"createDeferred"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:statusDeferreds.set","kind":"calls","metadata":{"unresolvedName":"statusDeferreds.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(getSessionStatusMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(getSessionStatusMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:statusDeferreds.get('/two')?.resolve","kind":"calls","metadata":{"unresolvedName":"statusDeferreds.get('/two')?.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:statusDeferreds.get","kind":"calls","metadata":{"unresolvedName":"statusDeferreds.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(activeSessionStoreMock.mergeStatusRefresh).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(activeSessionStoreMock.mergeStatusRefresh).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(activeSessionStoreMock.mergeStatusRefresh).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(activeSessionStoreMock.mergeStatusRefresh).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:statusDeferreds.get('/one')?.resolve","kind":"calls","metadata":{"unresolvedName":"statusDeferreds.get('/one')?.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(activeSessionStoreMock.mergeStatusRefresh).not.toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(activeSessionStoreMock.mergeStatusRefresh).not.toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:callbacks!.onPermissionAsked","kind":"calls","metadata":{"unresolvedName":"callbacks!.onPermissionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:statusDeferred.resolve","kind":"calls","metadata":{"unresolvedName":"statusDeferred.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(activeSessionStoreMock.initializePendingRequests).toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(activeSessionStoreMock.initializePendingRequests).toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(activeSessionStoreMock.addPendingRequest).toHaveBeenNthCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(activeSessionStoreMock.addPendingRequest).toHaveBeenNthCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:activeSessionStoreMock.getSessionMeta.mockImplementation","kind":"calls","metadata":{"unresolvedName":"activeSessionStoreMock.getSessionMeta.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:callbacks!.onQuestionAsked","kind":"calls","metadata":{"unresolvedName":"callbacks!.onQuestionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(activeSessionStoreMock.mergePendingRequests).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(activeSessionStoreMock.mergePendingRequests).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:activeSessionStoreMock.addPendingRequest.mock.calls.filter","kind":"calls","metadata":{"unresolvedName":"activeSessionStoreMock.addPendingRequest.mock.calls.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getFocusedSessionIdMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"getFocusedSessionIdMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:childBelongsToSessionMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"childBelongsToSessionMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(notificationPushMock).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(notificationPushMock).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(playNotificationSoundDedupedMock).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(playNotificationSoundDedupedMock).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(consumerAskedMock).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(consumerAskedMock).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:callbacks!.onQuestionReplied","kind":"calls","metadata":{"unresolvedName":"callbacks!.onQuestionReplied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:registerSessionConsumer","kind":"calls","metadata":{"unresolvedName":"registerSessionConsumer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:callbacks!.onSessionCreated","kind":"calls","metadata":{"unresolvedName":"callbacks!.onSessionCreated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(consumerAskedMock).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(consumerAskedMock).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(consumerAskedMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(consumerAskedMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:unregister","kind":"calls","metadata":{"unresolvedName":"unregister"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(playNotificationSoundDedupedMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(playNotificationSoundDedupedMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:it.each","kind":"calls","metadata":{"unresolvedName":"it.each"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:beforeTrigger","kind":"calls","metadata":{"unresolvedName":"beforeTrigger"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:callbacks![trigger as keyof typeof callbacks]","kind":"calls","metadata":{"unresolvedName":"callbacks![trigger as keyof typeof callbacks]"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(notificationPushMock).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(notificationPushMock).toHaveBeenCalledTimes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:subscribeToEventsMock.mockReset","kind":"calls","metadata":{"unresolvedName":"subscribeToEventsMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getSessionStatusMock.mockClear","kind":"calls","metadata":{"unresolvedName":"getSessionStatusMock.mockClear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getPendingPermissionsMock.mockClear","kind":"calls","metadata":{"unresolvedName":"getPendingPermissionsMock.mockClear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getPendingQuestionsMock.mockClear","kind":"calls","metadata":{"unresolvedName":"getPendingQuestionsMock.mockClear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:replyPermissionMock.mockClear","kind":"calls","metadata":{"unresolvedName":"replyPermissionMock.mockClear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:childBelongsToSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"childBelongsToSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getFocusedSessionIdMock.mockReset","kind":"calls","metadata":{"unresolvedName":"getFocusedSessionIdMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:notificationPushMock.mockReset","kind":"calls","metadata":{"unresolvedName":"notificationPushMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:playNotificationSoundDedupedMock.mockReset","kind":"calls","metadata":{"unresolvedName":"playNotificationSoundDedupedMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getSoundSnapshotMock.mockReset","kind":"calls","metadata":{"unresolvedName":"getSoundSnapshotMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:isSystemEnabledMock.mockReset","kind":"calls","metadata":{"unresolvedName":"isSystemEnabledMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:applyServerConnectedTimestampMock.mockReset","kind":"calls","metadata":{"unresolvedName":"applyServerConnectedTimestampMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getActiveServerIdMock.mockReset","kind":"calls","metadata":{"unresolvedName":"getActiveServerIdMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:Object.values(activeSessionStoreMock).forEach","kind":"calls","metadata":{"unresolvedName":"Object.values(activeSessionStoreMock).forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:Object.values","kind":"calls","metadata":{"unresolvedName":"Object.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:value.mockClear","kind":"calls","metadata":{"unresolvedName":"value.mockClear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:subscribeToEventsMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"subscribeToEventsMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getSoundSnapshotMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"getSoundSnapshotMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:isSystemEnabledMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"isSystemEnabledMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getActiveServerIdMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"getActiveServerIdMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:activeSessionStoreMock.getSessionMeta.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"activeSessionStoreMock.getSessionMeta.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:activeSessionStoreMock.getSnapshot.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"activeSessionStoreMock.getSnapshot.mockReturnValue"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:value.mockClear","kind":"calls","metadata":{"unresolvedName":"value.mockClear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:subscribeToEventsMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"subscribeToEventsMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","kind":"calls","metadata":{"unresolvedName":"useGlobalEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(callbacks).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(callbacks).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:callbacks!.onServerConnected","kind":"calls","metadata":{"unresolvedName":"callbacks!.onServerConnected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(applyServerConnectedTimestampMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(applyServerConnectedTimestampMock).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getPendingPermissionsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getPendingPermissionsMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getPendingQuestionsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getPendingQuestionsMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getSessionStatusMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"getSessionStatusMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:createDeferred","kind":"calls","metadata":{"unresolvedName":"createDeferred"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:statusDeferreds.set","kind":"calls","metadata":{"unresolvedName":"statusDeferreds.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","kind":"calls","metadata":{"unresolvedName":"useGlobalEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(getSessionStatusMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(getSessionStatusMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:statusDeferreds.get('/two')?.resolve","kind":"calls","metadata":{"unresolvedName":"statusDeferreds.get('/two')?.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:statusDeferreds.get","kind":"calls","metadata":{"unresolvedName":"statusDeferreds.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(activeSessionStoreMock.mergeStatusRefresh).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(activeSessionStoreMock.mergeStatusRefresh).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(activeSessionStoreMock.mergeStatusRefresh).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(activeSessionStoreMock.mergeStatusRefresh).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:statusDeferreds.get('/one')?.resolve","kind":"calls","metadata":{"unresolvedName":"statusDeferreds.get('/one')?.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(activeSessionStoreMock.mergeStatusRefresh).not.toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(activeSessionStoreMock.mergeStatusRefresh).not.toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:createDeferred","kind":"calls","metadata":{"unresolvedName":"createDeferred"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:statusDeferreds.set","kind":"calls","metadata":{"unresolvedName":"statusDeferreds.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(activeSessionStoreMock.mergeStatusRefresh).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(activeSessionStoreMock.mergeStatusRefresh).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(activeSessionStoreMock.mergeStatusRefresh).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(activeSessionStoreMock.mergeStatusRefresh).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:createDeferred","kind":"calls","metadata":{"unresolvedName":"createDeferred"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:subscribeToEventsMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"subscribeToEventsMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getSessionStatusMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"getSessionStatusMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getPendingPermissionsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getPendingPermissionsMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getPendingQuestionsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getPendingQuestionsMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","kind":"calls","metadata":{"unresolvedName":"useGlobalEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(getSessionStatusMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(getSessionStatusMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(callbacks).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(callbacks).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:callbacks!.onPermissionAsked","kind":"calls","metadata":{"unresolvedName":"callbacks!.onPermissionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:statusDeferred.resolve","kind":"calls","metadata":{"unresolvedName":"statusDeferred.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(activeSessionStoreMock.initializePendingRequests).toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(activeSessionStoreMock.initializePendingRequests).toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(activeSessionStoreMock.addPendingRequest).toHaveBeenNthCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(activeSessionStoreMock.addPendingRequest).toHaveBeenNthCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:subscribeToEventsMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"subscribeToEventsMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:activeSessionStoreMock.getSessionMeta.mockImplementation","kind":"calls","metadata":{"unresolvedName":"activeSessionStoreMock.getSessionMeta.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getSessionStatusMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"getSessionStatusMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:createDeferred","kind":"calls","metadata":{"unresolvedName":"createDeferred"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:statusDeferreds.set","kind":"calls","metadata":{"unresolvedName":"statusDeferreds.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getPendingPermissionsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getPendingPermissionsMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getPendingQuestionsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getPendingQuestionsMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","kind":"calls","metadata":{"unresolvedName":"useGlobalEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(getSessionStatusMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(getSessionStatusMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(callbacks).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(callbacks).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:callbacks!.onPermissionAsked","kind":"calls","metadata":{"unresolvedName":"callbacks!.onPermissionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:callbacks!.onQuestionAsked","kind":"calls","metadata":{"unresolvedName":"callbacks!.onQuestionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:statusDeferreds.get('/two')?.resolve","kind":"calls","metadata":{"unresolvedName":"statusDeferreds.get('/two')?.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:statusDeferreds.get","kind":"calls","metadata":{"unresolvedName":"statusDeferreds.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(activeSessionStoreMock.mergePendingRequests).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(activeSessionStoreMock.mergePendingRequests).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:activeSessionStoreMock.addPendingRequest.mock.calls.filter","kind":"calls","metadata":{"unresolvedName":"activeSessionStoreMock.addPendingRequest.mock.calls.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:createDeferred","kind":"calls","metadata":{"unresolvedName":"createDeferred"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:statusDeferreds.set","kind":"calls","metadata":{"unresolvedName":"statusDeferreds.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:subscribeToEventsMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"subscribeToEventsMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getFocusedSessionIdMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"getFocusedSessionIdMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:childBelongsToSessionMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"childBelongsToSessionMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","kind":"calls","metadata":{"unresolvedName":"useGlobalEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(callbacks).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(callbacks).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:callbacks!.onPermissionAsked","kind":"calls","metadata":{"unresolvedName":"callbacks!.onPermissionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(notificationPushMock).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(notificationPushMock).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(playNotificationSoundDedupedMock).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(playNotificationSoundDedupedMock).not.toHaveBeenCalled"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:subscribeToEventsMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"subscribeToEventsMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","kind":"calls","metadata":{"unresolvedName":"useGlobalEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(callbacks).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(callbacks).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:callbacks!.onQuestionAsked","kind":"calls","metadata":{"unresolvedName":"callbacks!.onQuestionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(consumerAskedMock).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(consumerAskedMock).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:callbacks!.onQuestionReplied","kind":"calls","metadata":{"unresolvedName":"callbacks!.onQuestionReplied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getFocusedSessionIdMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"getFocusedSessionIdMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:childBelongsToSessionMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"childBelongsToSessionMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:registerSessionConsumer","kind":"calls","metadata":{"unresolvedName":"registerSessionConsumer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:callbacks!.onSessionCreated","kind":"calls","metadata":{"unresolvedName":"callbacks!.onSessionCreated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(consumerAskedMock).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(consumerAskedMock).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(consumerAskedMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(consumerAskedMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:unregister","kind":"calls","metadata":{"unresolvedName":"unregister"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:subscribeToEventsMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"subscribeToEventsMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getFocusedSessionIdMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"getFocusedSessionIdMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","kind":"calls","metadata":{"unresolvedName":"useGlobalEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(callbacks).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(callbacks).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:callbacks!.onPermissionAsked","kind":"calls","metadata":{"unresolvedName":"callbacks!.onPermissionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(notificationPushMock).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(notificationPushMock).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(playNotificationSoundDedupedMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(playNotificationSoundDedupedMock).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:subscribeToEventsMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"subscribeToEventsMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:getFocusedSessionIdMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"getFocusedSessionIdMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:isSystemEnabledMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"isSystemEnabledMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","kind":"calls","metadata":{"unresolvedName":"useGlobalEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(callbacks).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(callbacks).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:callbacks!.onPermissionAsked","kind":"calls","metadata":{"unresolvedName":"callbacks!.onPermissionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(notificationPushMock).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(notificationPushMock).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(playNotificationSoundDedupedMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(playNotificationSoundDedupedMock).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:beforeTrigger","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:beforeTrigger","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:beforeTrigger","to":"external:activeSessionStoreMock.getSnapshot.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"activeSessionStoreMock.getSnapshot.mockReturnValue"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:subscribeToEventsMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"subscribeToEventsMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:isSystemEnabledMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"isSystemEnabledMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:beforeTrigger","kind":"calls","metadata":{"unresolvedName":"beforeTrigger"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","kind":"calls","metadata":{"unresolvedName":"useGlobalEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(callbacks).toBeDefined","kind":"calls","metadata":{"unresolvedName":"expect(callbacks).toBeDefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"symbol-name:callbacks![trigger as keyof typeof callbacks]","kind":"calls","metadata":{"unresolvedName":"callbacks![trigger as keyof typeof callbacks]"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(notificationPushMock).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(notificationPushMock).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:expect(playNotificationSoundDedupedMock).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(playNotificationSoundDedupedMock).not.toHaveBeenCalled"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/session.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:registerSessionConsumer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:registerSessionConsumer","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:registerSessionConsumer","to":"external:sessionConsumers.set","kind":"calls","metadata":{"unresolvedName":"sessionConsumers.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:registerSessionConsumer","to":"external:sessionConsumers.delete","kind":"calls","metadata":{"unresolvedName":"sessionConsumers.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:sessionConsumers.delete","kind":"calls","metadata":{"unresolvedName":"sessionConsumers.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:updateConsumerSessionId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:updateConsumerSessionId","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:updateConsumerSessionId","to":"external:sessionConsumers.get","kind":"calls","metadata":{"unresolvedName":"sessionConsumers.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:dispatchToConsumers","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:dispatchToConsumers","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:dispatchToConsumers","to":"external:sessionConsumers.values","kind":"calls","metadata":{"unresolvedName":"sessionConsumers.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:dispatchToConsumers","to":"external:childSessionStore.belongsToSession","kind":"calls","metadata":{"unresolvedName":"childSessionStore.belongsToSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:dispatchToConsumers","to":"symbol-name:invoke","kind":"calls","metadata":{"unresolvedName":"invoke"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:hasConsumerForSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:hasConsumerForSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:hasConsumerForSession","to":"external:sessionConsumers.values","kind":"calls","metadata":{"unresolvedName":"sessionConsumers.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:hasConsumerForSession","to":"external:childSessionStore.belongsToSession","kind":"calls","metadata":{"unresolvedName":"childSessionStore.belongsToSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:hasOtherConsumerForSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:hasOtherConsumerForSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:hasOtherConsumerForSession","to":"external:sessionConsumers.entries","kind":"calls","metadata":{"unresolvedName":"sessionConsumers.entries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:hasOtherConsumerForSession","to":"external:childSessionStore.belongsToSession","kind":"calls","metadata":{"unresolvedName":"childSessionStore.belongsToSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:cleanupExpired","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:cleanupExpired","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:cleanupExpired","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:cleanupExpired","to":"external:arr.filter","kind":"calls","metadata":{"unresolvedName":"arr.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:cleanupExpired","to":"external:map.delete","kind":"calls","metadata":{"unresolvedName":"map.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:cleanupExpired","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:addPending","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:addPending","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:addPending","to":"external:map.get","kind":"calls","metadata":{"unresolvedName":"map.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:addPending","to":"external:arr.push","kind":"calls","metadata":{"unresolvedName":"arr.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:addPending","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:addPending","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:drainPending","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:drainPending","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:drainPending","to":"external:map.get","kind":"calls","metadata":{"unresolvedName":"map.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:drainPending","to":"external:map.delete","kind":"calls","metadata":{"unresolvedName":"map.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:drainPending","to":"external:arr.map","kind":"calls","metadata":{"unresolvedName":"arr.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:getScopeKey","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:getScopeKey","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:getScopeKey","to":"external:directories.join","kind":"calls","metadata":{"unresolvedName":"directories.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:removePendingByRequestId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:removePendingByRequestId","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:removePendingByRequestId","to":"external:map.get","kind":"calls","metadata":{"unresolvedName":"map.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:removePendingByRequestId","to":"external:arr.filter","kind":"calls","metadata":{"unresolvedName":"arr.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:removePendingByRequestId","to":"external:map.delete","kind":"calls","metadata":{"unresolvedName":"map.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:removePendingByRequestId","to":"external:map.set","kind":"calls","metadata":{"unresolvedName":"map.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","to":"external:Promise.all","kind":"calls","metadata":{"unresolvedName":"Promise.all"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","to":"external:scopes.map","kind":"calls","metadata":{"unresolvedName":"scopes.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","to":"external:getSessionStatus(directory).catch","kind":"calls","metadata":{"unresolvedName":"getSessionStatus(directory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionStatus","kind":"calls","metadata":{"unresolvedName":"getSessionStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","to":"external:getPendingPermissions(undefined, directory).catch","kind":"calls","metadata":{"unresolvedName":"getPendingPermissions(undefined, directory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingPermissions","kind":"calls","metadata":{"unresolvedName":"getPendingPermissions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","to":"external:getPendingQuestions(undefined, directory).catch","kind":"calls","metadata":{"unresolvedName":"getPendingQuestions(undefined, directory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingQuestions","kind":"calls","metadata":{"unresolvedName":"getPendingQuestions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","to":"external:results.forEach","kind":"calls","metadata":{"unresolvedName":"results.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","to":"external:Object.assign","kind":"calls","metadata":{"unresolvedName":"Object.assign"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","to":"external:Object.keys(statusMap).forEach","kind":"calls","metadata":{"unresolvedName":"Object.keys(statusMap).forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","to":"external:Object.keys","kind":"calls","metadata":{"unresolvedName":"Object.keys"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","to":"external:sessionMetaEntries.push","kind":"calls","metadata":{"unresolvedName":"sessionMetaEntries.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","to":"external:permissions.forEach","kind":"calls","metadata":{"unresolvedName":"permissions.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","to":"external:permissionMap.set","kind":"calls","metadata":{"unresolvedName":"permissionMap.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","to":"external:questions.forEach","kind":"calls","metadata":{"unresolvedName":"questions.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","to":"external:questionMap.set","kind":"calls","metadata":{"unresolvedName":"questionMap.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","to":"external:permissionMap.values","kind":"calls","metadata":{"unresolvedName":"permissionMap.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","to":"external:questionMap.values","kind":"calls","metadata":{"unresolvedName":"questionMap.values"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:Promise.all","kind":"calls","metadata":{"unresolvedName":"Promise.all"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:getSessionStatus(directory).catch","kind":"calls","metadata":{"unresolvedName":"getSessionStatus(directory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionStatus","kind":"calls","metadata":{"unresolvedName":"getSessionStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:getPendingPermissions(undefined, directory).catch","kind":"calls","metadata":{"unresolvedName":"getPendingPermissions(undefined, directory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingPermissions","kind":"calls","metadata":{"unresolvedName":"getPendingPermissions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:getPendingQuestions(undefined, directory).catch","kind":"calls","metadata":{"unresolvedName":"getPendingQuestions(undefined, directory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingQuestions","kind":"calls","metadata":{"unresolvedName":"getPendingQuestions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:Object.assign","kind":"calls","metadata":{"unresolvedName":"Object.assign"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:Object.keys(statusMap).forEach","kind":"calls","metadata":{"unresolvedName":"Object.keys(statusMap).forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:Object.keys","kind":"calls","metadata":{"unresolvedName":"Object.keys"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:sessionMetaEntries.push","kind":"calls","metadata":{"unresolvedName":"sessionMetaEntries.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:permissions.forEach","kind":"calls","metadata":{"unresolvedName":"permissions.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:permissionMap.set","kind":"calls","metadata":{"unresolvedName":"permissionMap.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:questions.forEach","kind":"calls","metadata":{"unresolvedName":"questions.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:questionMap.set","kind":"calls","metadata":{"unresolvedName":"questionMap.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:sessionMetaEntries.push","kind":"calls","metadata":{"unresolvedName":"sessionMetaEntries.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:sessionMetaEntries.push","kind":"calls","metadata":{"unresolvedName":"sessionMetaEntries.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:permissionMap.set","kind":"calls","metadata":{"unresolvedName":"permissionMap.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:sessionMetaEntries.push","kind":"calls","metadata":{"unresolvedName":"sessionMetaEntries.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:questionMap.set","kind":"calls","metadata":{"unresolvedName":"questionMap.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:belongsToCurrentSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:belongsToCurrentSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:belongsToCurrentSession","to":"external:paneLayoutStore.getFocusedSessionId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:belongsToCurrentSession","to":"external:childSessionStore.belongsToSession","kind":"calls","metadata":{"unresolvedName":"childSessionStore.belongsToSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:belongsToCurrentSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:hasConsumerForSession","kind":"calls","metadata":{"unresolvedName":"hasConsumerForSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:isSessionDirectlyOpen","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:isSessionDirectlyOpen","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:isSessionDirectlyOpen","to":"external:paneLayoutStore.getFocusedSessionId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:isSessionDirectlyOpen","to":"external:sessionConsumers.values","kind":"calls","metadata":{"unresolvedName":"sessionConsumers.values"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:pendingScrollSessionIds.add","kind":"calls","metadata":{"unresolvedName":"pendingScrollSessionIds.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:dispatchToConsumers","kind":"calls","metadata":{"unresolvedName":"dispatchToConsumers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:cb.onScrollRequest","kind":"calls","metadata":{"unresolvedName":"cb.onScrollRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:pendingScrollSessionIds.clear","kind":"calls","metadata":{"unresolvedName":"pendingScrollSessionIds.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:fetchActiveScopeData(directoriesRef.current)\n .then","kind":"calls","metadata":{"unresolvedName":"fetchActiveScopeData(directoriesRef.current)\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","kind":"calls","metadata":{"unresolvedName":"fetchActiveScopeData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:activeSessionStore.mergeStatusRefresh","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.mergeStatusRefresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:activeSessionStore.mergePendingRequests","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.mergePendingRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:activeSessionStore.initialize","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.initialize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:activeSessionStore.initializePendingRequests","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.initializePendingRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:getScopeKey","kind":"calls","metadata":{"unresolvedName":"getScopeKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:latePendingRequests.values","kind":"calls","metadata":{"unresolvedName":"latePendingRequests.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:currentDirectories.includes","kind":"calls","metadata":{"unresolvedName":"currentDirectories.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:activeSessionStore.addPendingRequest","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.addPendingRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:activeSessionStore.setSessionMetaBulk","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.setSessionMetaBulk"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:messageStore.handleMessageUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handleMessageUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:messageStore.handlePartUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:scheduleScroll","kind":"calls","metadata":{"unresolvedName":"scheduleScroll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:messageStore.handlePartDelta","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartDelta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:messageStore.handlePartRemoved","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartRemoved"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:childSessionStore.registerChildSession","kind":"calls","metadata":{"unresolvedName":"childSessionStore.registerChildSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:belongsToCurrentSession","kind":"calls","metadata":{"unresolvedName":"belongsToCurrentSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:drainPending","kind":"calls","metadata":{"unresolvedName":"drainPending"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:cb.onPermissionAsked","kind":"calls","metadata":{"unresolvedName":"cb.onPermissionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:cb.onQuestionAsked","kind":"calls","metadata":{"unresolvedName":"cb.onQuestionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:activeSessionStore.setSessionMeta","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.setSessionMeta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:cleanupExpired","kind":"calls","metadata":{"unresolvedName":"cleanupExpired"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:messageStore.handleSessionIdle","kind":"calls","metadata":{"unresolvedName":"messageStore.handleSessionIdle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:childSessionStore.markIdle","kind":"calls","metadata":{"unresolvedName":"childSessionStore.markIdle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:cb.onSessionIdle","kind":"calls","metadata":{"unresolvedName":"cb.onSessionIdle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:messageStore.handleSessionError","kind":"calls","metadata":{"unresolvedName":"messageStore.handleSessionError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:childSessionStore.markError","kind":"calls","metadata":{"unresolvedName":"childSessionStore.markError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:activeSessionStore.updateStatus","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.updateStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:activeSessionStore.getSessionMeta","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.getSessionMeta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:error.sessionID.slice","kind":"calls","metadata":{"unresolvedName":"error.sessionID.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:notificationStore.push","kind":"calls","metadata":{"unresolvedName":"notificationStore.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:isSessionDirectlyOpen","kind":"calls","metadata":{"unresolvedName":"isSessionDirectlyOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:soundStore.getSnapshot","kind":"calls","metadata":{"unresolvedName":"soundStore.getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSoundDeduped","kind":"calls","metadata":{"unresolvedName":"playNotificationSoundDeduped"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:cb.onSessionError","kind":"calls","metadata":{"unresolvedName":"cb.onSessionError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:messageStore.updateSessionMetadata","kind":"calls","metadata":{"unresolvedName":"messageStore.updateSessionMetadata"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:serverStore.applyServerConnectedTimestamp","kind":"calls","metadata":{"unresolvedName":"serverStore.applyServerConnectedTimestamp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:serverStore.getActiveServerId","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveServerId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:replyPermission(request.id, 'once', undefined, dir, request.sessionID).catch","kind":"calls","metadata":{"unresolvedName":"replyPermission(request.id, 'once', undefined, dir, request.sessionID).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:replyPermission","kind":"calls","metadata":{"unresolvedName":"replyPermission"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:request.sessionID.slice","kind":"calls","metadata":{"unresolvedName":"request.sessionID.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:latePendingRequests.set","kind":"calls","metadata":{"unresolvedName":"latePendingRequests.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:addPending","kind":"calls","metadata":{"unresolvedName":"addPending"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:removePendingByRequestId","kind":"calls","metadata":{"unresolvedName":"removePendingByRequestId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:latePendingRequests.delete","kind":"calls","metadata":{"unresolvedName":"latePendingRequests.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:activeSessionStore.resolvePendingRequest","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.resolvePendingRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:cb.onPermissionReplied","kind":"calls","metadata":{"unresolvedName":"cb.onPermissionReplied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:cb.onQuestionReplied","kind":"calls","metadata":{"unresolvedName":"cb.onQuestionReplied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:cb.onQuestionRejected","kind":"calls","metadata":{"unresolvedName":"cb.onQuestionRejected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:activeSessionStore.getSnapshot","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:data.sessionID.slice","kind":"calls","metadata":{"unresolvedName":"data.sessionID.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchAndInitialize","kind":"calls","metadata":{"unresolvedName":"fetchAndInitialize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:sessionConsumers.values","kind":"calls","metadata":{"unresolvedName":"sessionConsumers.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:consumer.callbacks.onReconnected","kind":"calls","metadata":{"unresolvedName":"consumer.callbacks.onReconnected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"symbol-name:useLayoutEffect","kind":"calls","metadata":{"unresolvedName":"useLayoutEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:useGlobalEvents","to":"external:refreshRef.current","kind":"calls","metadata":{"unresolvedName":"refreshRef.current"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:pendingScrollSessionIds.add","kind":"calls","metadata":{"unresolvedName":"pendingScrollSessionIds.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:dispatchToConsumers","kind":"calls","metadata":{"unresolvedName":"dispatchToConsumers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:cb.onScrollRequest","kind":"calls","metadata":{"unresolvedName":"cb.onScrollRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:pendingScrollSessionIds.clear","kind":"calls","metadata":{"unresolvedName":"pendingScrollSessionIds.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:fetchActiveScopeData(directoriesRef.current)\n .then","kind":"calls","metadata":{"unresolvedName":"fetchActiveScopeData(directoriesRef.current)\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","kind":"calls","metadata":{"unresolvedName":"fetchActiveScopeData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:activeSessionStore.mergeStatusRefresh","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.mergeStatusRefresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:activeSessionStore.mergePendingRequests","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.mergePendingRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:activeSessionStore.initialize","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.initialize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:activeSessionStore.initializePendingRequests","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.initializePendingRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:getScopeKey","kind":"calls","metadata":{"unresolvedName":"getScopeKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:latePendingRequests.values","kind":"calls","metadata":{"unresolvedName":"latePendingRequests.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:currentDirectories.includes","kind":"calls","metadata":{"unresolvedName":"currentDirectories.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:activeSessionStore.addPendingRequest","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.addPendingRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:activeSessionStore.setSessionMetaBulk","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.setSessionMetaBulk"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:messageStore.handleMessageUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handleMessageUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:messageStore.handlePartUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:scheduleScroll","kind":"calls","metadata":{"unresolvedName":"scheduleScroll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:messageStore.handlePartDelta","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartDelta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:messageStore.handlePartRemoved","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartRemoved"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:childSessionStore.registerChildSession","kind":"calls","metadata":{"unresolvedName":"childSessionStore.registerChildSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:belongsToCurrentSession","kind":"calls","metadata":{"unresolvedName":"belongsToCurrentSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:drainPending","kind":"calls","metadata":{"unresolvedName":"drainPending"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:cb.onPermissionAsked","kind":"calls","metadata":{"unresolvedName":"cb.onPermissionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:cb.onQuestionAsked","kind":"calls","metadata":{"unresolvedName":"cb.onQuestionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:activeSessionStore.setSessionMeta","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.setSessionMeta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:cleanupExpired","kind":"calls","metadata":{"unresolvedName":"cleanupExpired"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:messageStore.handleSessionIdle","kind":"calls","metadata":{"unresolvedName":"messageStore.handleSessionIdle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:childSessionStore.markIdle","kind":"calls","metadata":{"unresolvedName":"childSessionStore.markIdle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:cb.onSessionIdle","kind":"calls","metadata":{"unresolvedName":"cb.onSessionIdle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:messageStore.handleSessionError","kind":"calls","metadata":{"unresolvedName":"messageStore.handleSessionError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:childSessionStore.markError","kind":"calls","metadata":{"unresolvedName":"childSessionStore.markError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:activeSessionStore.updateStatus","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.updateStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:activeSessionStore.getSessionMeta","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.getSessionMeta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:error.sessionID.slice","kind":"calls","metadata":{"unresolvedName":"error.sessionID.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:notificationStore.push","kind":"calls","metadata":{"unresolvedName":"notificationStore.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:isSessionDirectlyOpen","kind":"calls","metadata":{"unresolvedName":"isSessionDirectlyOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:soundStore.getSnapshot","kind":"calls","metadata":{"unresolvedName":"soundStore.getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSoundDeduped","kind":"calls","metadata":{"unresolvedName":"playNotificationSoundDeduped"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:cb.onSessionError","kind":"calls","metadata":{"unresolvedName":"cb.onSessionError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:messageStore.updateSessionMetadata","kind":"calls","metadata":{"unresolvedName":"messageStore.updateSessionMetadata"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:serverStore.applyServerConnectedTimestamp","kind":"calls","metadata":{"unresolvedName":"serverStore.applyServerConnectedTimestamp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:serverStore.getActiveServerId","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveServerId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:replyPermission(request.id, 'once', undefined, dir, request.sessionID).catch","kind":"calls","metadata":{"unresolvedName":"replyPermission(request.id, 'once', undefined, dir, request.sessionID).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:replyPermission","kind":"calls","metadata":{"unresolvedName":"replyPermission"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:request.sessionID.slice","kind":"calls","metadata":{"unresolvedName":"request.sessionID.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:latePendingRequests.set","kind":"calls","metadata":{"unresolvedName":"latePendingRequests.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:addPending","kind":"calls","metadata":{"unresolvedName":"addPending"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:removePendingByRequestId","kind":"calls","metadata":{"unresolvedName":"removePendingByRequestId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:latePendingRequests.delete","kind":"calls","metadata":{"unresolvedName":"latePendingRequests.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:activeSessionStore.resolvePendingRequest","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.resolvePendingRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:cb.onPermissionReplied","kind":"calls","metadata":{"unresolvedName":"cb.onPermissionReplied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:cb.onQuestionReplied","kind":"calls","metadata":{"unresolvedName":"cb.onQuestionReplied"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:cb.onQuestionRejected","kind":"calls","metadata":{"unresolvedName":"cb.onQuestionRejected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:activeSessionStore.getSnapshot","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:data.sessionID.slice","kind":"calls","metadata":{"unresolvedName":"data.sessionID.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchAndInitialize","kind":"calls","metadata":{"unresolvedName":"fetchAndInitialize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:sessionConsumers.values","kind":"calls","metadata":{"unresolvedName":"sessionConsumers.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:consumer.callbacks.onReconnected","kind":"calls","metadata":{"unresolvedName":"consumer.callbacks.onReconnected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:scheduleScroll","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:scheduleScroll","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:scheduleScroll","to":"external:pendingScrollSessionIds.add","kind":"calls","metadata":{"unresolvedName":"pendingScrollSessionIds.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:scheduleScroll","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:scheduleScroll","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:dispatchToConsumers","kind":"calls","metadata":{"unresolvedName":"dispatchToConsumers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:scheduleScroll","to":"external:cb.onScrollRequest","kind":"calls","metadata":{"unresolvedName":"cb.onScrollRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:scheduleScroll","to":"external:pendingScrollSessionIds.clear","kind":"calls","metadata":{"unresolvedName":"pendingScrollSessionIds.clear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:dispatchToConsumers","kind":"calls","metadata":{"unresolvedName":"dispatchToConsumers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:cb.onScrollRequest","kind":"calls","metadata":{"unresolvedName":"cb.onScrollRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:pendingScrollSessionIds.clear","kind":"calls","metadata":{"unresolvedName":"pendingScrollSessionIds.clear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchAndInitialize","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchAndInitialize","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchAndInitialize","to":"external:fetchActiveScopeData(directoriesRef.current)\n .then","kind":"calls","metadata":{"unresolvedName":"fetchActiveScopeData(directoriesRef.current)\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchAndInitialize","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchActiveScopeData","kind":"calls","metadata":{"unresolvedName":"fetchActiveScopeData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchAndInitialize","to":"external:activeSessionStore.mergeStatusRefresh","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.mergeStatusRefresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchAndInitialize","to":"external:activeSessionStore.mergePendingRequests","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.mergePendingRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchAndInitialize","to":"external:activeSessionStore.initialize","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.initialize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchAndInitialize","to":"external:activeSessionStore.initializePendingRequests","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.initializePendingRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchAndInitialize","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:getScopeKey","kind":"calls","metadata":{"unresolvedName":"getScopeKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchAndInitialize","to":"external:latePendingRequests.values","kind":"calls","metadata":{"unresolvedName":"latePendingRequests.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchAndInitialize","to":"external:currentDirectories.includes","kind":"calls","metadata":{"unresolvedName":"currentDirectories.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchAndInitialize","to":"external:activeSessionStore.addPendingRequest","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.addPendingRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchAndInitialize","to":"external:activeSessionStore.setSessionMetaBulk","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.setSessionMetaBulk"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:activeSessionStore.mergeStatusRefresh","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.mergeStatusRefresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:activeSessionStore.mergePendingRequests","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.mergePendingRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:activeSessionStore.initialize","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.initialize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:activeSessionStore.initializePendingRequests","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.initializePendingRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:getScopeKey","kind":"calls","metadata":{"unresolvedName":"getScopeKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:latePendingRequests.values","kind":"calls","metadata":{"unresolvedName":"latePendingRequests.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:currentDirectories.includes","kind":"calls","metadata":{"unresolvedName":"currentDirectories.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:activeSessionStore.addPendingRequest","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.addPendingRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:activeSessionStore.setSessionMetaBulk","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.setSessionMetaBulk"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onMessageUpdated","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onMessageUpdated","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onMessageUpdated","to":"external:messageStore.handleMessageUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handleMessageUpdated"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPartUpdated","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPartUpdated","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPartUpdated","to":"external:messageStore.handlePartUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPartUpdated","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:scheduleScroll","kind":"calls","metadata":{"unresolvedName":"scheduleScroll"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPartDelta","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPartDelta","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPartDelta","to":"external:messageStore.handlePartDelta","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartDelta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPartDelta","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:scheduleScroll","kind":"calls","metadata":{"unresolvedName":"scheduleScroll"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPartRemoved","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPartRemoved","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPartRemoved","to":"external:messageStore.handlePartRemoved","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartRemoved"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionCreated","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionCreated","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionCreated","to":"external:childSessionStore.registerChildSession","kind":"calls","metadata":{"unresolvedName":"childSessionStore.registerChildSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionCreated","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:belongsToCurrentSession","kind":"calls","metadata":{"unresolvedName":"belongsToCurrentSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionCreated","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:drainPending","kind":"calls","metadata":{"unresolvedName":"drainPending"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionCreated","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:dispatchToConsumers","kind":"calls","metadata":{"unresolvedName":"dispatchToConsumers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionCreated","to":"external:cb.onPermissionAsked","kind":"calls","metadata":{"unresolvedName":"cb.onPermissionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionCreated","to":"external:cb.onQuestionAsked","kind":"calls","metadata":{"unresolvedName":"cb.onQuestionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionCreated","to":"external:activeSessionStore.setSessionMeta","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.setSessionMeta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionCreated","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:cleanupExpired","kind":"calls","metadata":{"unresolvedName":"cleanupExpired"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionIdle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionIdle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionIdle","to":"external:messageStore.handleSessionIdle","kind":"calls","metadata":{"unresolvedName":"messageStore.handleSessionIdle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionIdle","to":"external:childSessionStore.markIdle","kind":"calls","metadata":{"unresolvedName":"childSessionStore.markIdle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionIdle","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:dispatchToConsumers","kind":"calls","metadata":{"unresolvedName":"dispatchToConsumers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionIdle","to":"external:cb.onSessionIdle","kind":"calls","metadata":{"unresolvedName":"cb.onSessionIdle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionError","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionError","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionError","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionError","to":"external:messageStore.handleSessionError","kind":"calls","metadata":{"unresolvedName":"messageStore.handleSessionError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionError","to":"external:childSessionStore.markError","kind":"calls","metadata":{"unresolvedName":"childSessionStore.markError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionError","to":"external:activeSessionStore.updateStatus","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.updateStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionError","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:belongsToCurrentSession","kind":"calls","metadata":{"unresolvedName":"belongsToCurrentSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionError","to":"external:activeSessionStore.getSessionMeta","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.getSessionMeta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionError","to":"external:error.sessionID.slice","kind":"calls","metadata":{"unresolvedName":"error.sessionID.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionError","to":"external:notificationStore.push","kind":"calls","metadata":{"unresolvedName":"notificationStore.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionError","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:isSessionDirectlyOpen","kind":"calls","metadata":{"unresolvedName":"isSessionDirectlyOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionError","to":"external:soundStore.getSnapshot","kind":"calls","metadata":{"unresolvedName":"soundStore.getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionError","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSoundDeduped","kind":"calls","metadata":{"unresolvedName":"playNotificationSoundDeduped"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionError","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:dispatchToConsumers","kind":"calls","metadata":{"unresolvedName":"dispatchToConsumers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionError","to":"external:cb.onSessionError","kind":"calls","metadata":{"unresolvedName":"cb.onSessionError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionUpdated","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionUpdated","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionUpdated","to":"external:activeSessionStore.setSessionMeta","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.setSessionMeta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionUpdated","to":"external:childSessionStore.registerChildSession","kind":"calls","metadata":{"unresolvedName":"childSessionStore.registerChildSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionUpdated","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionUpdated","to":"external:messageStore.updateSessionMetadata","kind":"calls","metadata":{"unresolvedName":"messageStore.updateSessionMetadata"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onServerConnected","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onServerConnected","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onServerConnected","to":"external:serverStore.applyServerConnectedTimestamp","kind":"calls","metadata":{"unresolvedName":"serverStore.applyServerConnectedTimestamp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onServerConnected","to":"external:serverStore.getActiveServerId","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveServerId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionAsked","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionAsked","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionAsked","to":"external:activeSessionStore.getSessionMeta","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.getSessionMeta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionAsked","to":"external:replyPermission(request.id, 'once', undefined, dir, request.sessionID).catch","kind":"calls","metadata":{"unresolvedName":"replyPermission(request.id, 'once', undefined, dir, request.sessionID).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionAsked","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:replyPermission","kind":"calls","metadata":{"unresolvedName":"replyPermission"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionAsked","to":"external:request.sessionID.slice","kind":"calls","metadata":{"unresolvedName":"request.sessionID.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionAsked","to":"external:activeSessionStore.addPendingRequest","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.addPendingRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionAsked","to":"external:latePendingRequests.set","kind":"calls","metadata":{"unresolvedName":"latePendingRequests.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionAsked","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:getScopeKey","kind":"calls","metadata":{"unresolvedName":"getScopeKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionAsked","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:belongsToCurrentSession","kind":"calls","metadata":{"unresolvedName":"belongsToCurrentSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionAsked","to":"external:notificationStore.push","kind":"calls","metadata":{"unresolvedName":"notificationStore.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionAsked","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:isSessionDirectlyOpen","kind":"calls","metadata":{"unresolvedName":"isSessionDirectlyOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionAsked","to":"external:soundStore.getSnapshot","kind":"calls","metadata":{"unresolvedName":"soundStore.getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionAsked","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSoundDeduped","kind":"calls","metadata":{"unresolvedName":"playNotificationSoundDeduped"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionAsked","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:dispatchToConsumers","kind":"calls","metadata":{"unresolvedName":"dispatchToConsumers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionAsked","to":"external:cb.onPermissionAsked","kind":"calls","metadata":{"unresolvedName":"cb.onPermissionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionAsked","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:addPending","kind":"calls","metadata":{"unresolvedName":"addPending"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionReplied","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionReplied","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionReplied","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:removePendingByRequestId","kind":"calls","metadata":{"unresolvedName":"removePendingByRequestId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionReplied","to":"external:latePendingRequests.delete","kind":"calls","metadata":{"unresolvedName":"latePendingRequests.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionReplied","to":"external:activeSessionStore.resolvePendingRequest","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.resolvePendingRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionReplied","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:belongsToCurrentSession","kind":"calls","metadata":{"unresolvedName":"belongsToCurrentSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionReplied","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:dispatchToConsumers","kind":"calls","metadata":{"unresolvedName":"dispatchToConsumers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onPermissionReplied","to":"external:cb.onPermissionReplied","kind":"calls","metadata":{"unresolvedName":"cb.onPermissionReplied"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionAsked","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionAsked","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionAsked","to":"external:activeSessionStore.getSessionMeta","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.getSessionMeta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionAsked","to":"external:request.sessionID.slice","kind":"calls","metadata":{"unresolvedName":"request.sessionID.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionAsked","to":"external:activeSessionStore.addPendingRequest","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.addPendingRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionAsked","to":"external:latePendingRequests.set","kind":"calls","metadata":{"unresolvedName":"latePendingRequests.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionAsked","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:getScopeKey","kind":"calls","metadata":{"unresolvedName":"getScopeKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionAsked","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:belongsToCurrentSession","kind":"calls","metadata":{"unresolvedName":"belongsToCurrentSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionAsked","to":"external:notificationStore.push","kind":"calls","metadata":{"unresolvedName":"notificationStore.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionAsked","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:isSessionDirectlyOpen","kind":"calls","metadata":{"unresolvedName":"isSessionDirectlyOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionAsked","to":"external:soundStore.getSnapshot","kind":"calls","metadata":{"unresolvedName":"soundStore.getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionAsked","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSoundDeduped","kind":"calls","metadata":{"unresolvedName":"playNotificationSoundDeduped"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionAsked","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:dispatchToConsumers","kind":"calls","metadata":{"unresolvedName":"dispatchToConsumers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionAsked","to":"external:cb.onQuestionAsked","kind":"calls","metadata":{"unresolvedName":"cb.onQuestionAsked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionAsked","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:addPending","kind":"calls","metadata":{"unresolvedName":"addPending"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionReplied","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionReplied","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionReplied","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:removePendingByRequestId","kind":"calls","metadata":{"unresolvedName":"removePendingByRequestId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionReplied","to":"external:latePendingRequests.delete","kind":"calls","metadata":{"unresolvedName":"latePendingRequests.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionReplied","to":"external:activeSessionStore.resolvePendingRequest","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.resolvePendingRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionReplied","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:belongsToCurrentSession","kind":"calls","metadata":{"unresolvedName":"belongsToCurrentSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionReplied","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:dispatchToConsumers","kind":"calls","metadata":{"unresolvedName":"dispatchToConsumers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionReplied","to":"external:cb.onQuestionReplied","kind":"calls","metadata":{"unresolvedName":"cb.onQuestionReplied"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionRejected","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionRejected","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionRejected","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:removePendingByRequestId","kind":"calls","metadata":{"unresolvedName":"removePendingByRequestId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionRejected","to":"external:latePendingRequests.delete","kind":"calls","metadata":{"unresolvedName":"latePendingRequests.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionRejected","to":"external:activeSessionStore.resolvePendingRequest","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.resolvePendingRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionRejected","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:belongsToCurrentSession","kind":"calls","metadata":{"unresolvedName":"belongsToCurrentSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionRejected","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:dispatchToConsumers","kind":"calls","metadata":{"unresolvedName":"dispatchToConsumers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onQuestionRejected","to":"external:cb.onQuestionRejected","kind":"calls","metadata":{"unresolvedName":"cb.onQuestionRejected"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionStatus","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionStatus","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionStatus","to":"external:activeSessionStore.getSnapshot","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionStatus","to":"external:activeSessionStore.updateStatus","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.updateStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionStatus","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:belongsToCurrentSession","kind":"calls","metadata":{"unresolvedName":"belongsToCurrentSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionStatus","to":"external:activeSessionStore.getSessionMeta","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.getSessionMeta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionStatus","to":"external:data.sessionID.slice","kind":"calls","metadata":{"unresolvedName":"data.sessionID.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionStatus","to":"external:notificationStore.push","kind":"calls","metadata":{"unresolvedName":"notificationStore.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionStatus","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:isSessionDirectlyOpen","kind":"calls","metadata":{"unresolvedName":"isSessionDirectlyOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionStatus","to":"external:soundStore.getSnapshot","kind":"calls","metadata":{"unresolvedName":"soundStore.getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onSessionStatus","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSoundDeduped","kind":"calls","metadata":{"unresolvedName":"playNotificationSoundDeduped"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onReconnected","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onReconnected","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onReconnected","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onReconnected","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:fetchAndInitialize","kind":"calls","metadata":{"unresolvedName":"fetchAndInitialize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onReconnected","to":"external:sessionConsumers.values","kind":"calls","metadata":{"unresolvedName":"sessionConsumers.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:onReconnected","to":"external:consumer.callbacks.onReconnected","kind":"calls","metadata":{"unresolvedName":"consumer.callbacks.onReconnected"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useGlobalEvents.ts:","to":"external:refreshRef.current","kind":"calls","metadata":{"unresolvedName":"refreshRef.current"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:getMatchMediaMatches","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:getMatchMediaMatches","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:getMatchMediaMatches","to":"external:window.matchMedia","kind":"calls","metadata":{"unresolvedName":"window.matchMedia"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:getInputCapabilities","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:getInputCapabilities","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:getInputCapabilities","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:getMatchMediaMatches","kind":"calls","metadata":{"unresolvedName":"getMatchMediaMatches"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","to":"external:window.matchMedia","kind":"calls","metadata":{"unresolvedName":"window.matchMedia"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","to":"symbol-name:setCapabilities","kind":"calls","metadata":{"unresolvedName":"setCapabilities"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:getInputCapabilities","kind":"calls","metadata":{"unresolvedName":"getInputCapabilities"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","to":"symbol-name:handleChange","kind":"calls","metadata":{"unresolvedName":"handleChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","to":"external:canHoverMediaQuery.addEventListener","kind":"calls","metadata":{"unresolvedName":"canHoverMediaQuery.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","to":"external:coarsePointerMediaQuery.addEventListener","kind":"calls","metadata":{"unresolvedName":"coarsePointerMediaQuery.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","to":"external:canHoverMediaQuery.addListener","kind":"calls","metadata":{"unresolvedName":"canHoverMediaQuery.addListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","to":"external:coarsePointerMediaQuery.addListener","kind":"calls","metadata":{"unresolvedName":"coarsePointerMediaQuery.addListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","to":"external:canHoverMediaQuery.removeEventListener","kind":"calls","metadata":{"unresolvedName":"canHoverMediaQuery.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","to":"external:coarsePointerMediaQuery.removeEventListener","kind":"calls","metadata":{"unresolvedName":"coarsePointerMediaQuery.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","to":"external:canHoverMediaQuery.removeListener","kind":"calls","metadata":{"unresolvedName":"canHoverMediaQuery.removeListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","to":"external:coarsePointerMediaQuery.removeListener","kind":"calls","metadata":{"unresolvedName":"coarsePointerMediaQuery.removeListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:useInputCapabilities","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","to":"external:window.matchMedia","kind":"calls","metadata":{"unresolvedName":"window.matchMedia"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","to":"symbol-name:setCapabilities","kind":"calls","metadata":{"unresolvedName":"setCapabilities"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:getInputCapabilities","kind":"calls","metadata":{"unresolvedName":"getInputCapabilities"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","to":"symbol-name:handleChange","kind":"calls","metadata":{"unresolvedName":"handleChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","to":"external:canHoverMediaQuery.addEventListener","kind":"calls","metadata":{"unresolvedName":"canHoverMediaQuery.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","to":"external:coarsePointerMediaQuery.addEventListener","kind":"calls","metadata":{"unresolvedName":"coarsePointerMediaQuery.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","to":"external:canHoverMediaQuery.addListener","kind":"calls","metadata":{"unresolvedName":"canHoverMediaQuery.addListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","to":"external:coarsePointerMediaQuery.addListener","kind":"calls","metadata":{"unresolvedName":"coarsePointerMediaQuery.addListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","to":"external:canHoverMediaQuery.removeEventListener","kind":"calls","metadata":{"unresolvedName":"canHoverMediaQuery.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","to":"external:coarsePointerMediaQuery.removeEventListener","kind":"calls","metadata":{"unresolvedName":"coarsePointerMediaQuery.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","to":"external:canHoverMediaQuery.removeListener","kind":"calls","metadata":{"unresolvedName":"canHoverMediaQuery.removeListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","to":"external:coarsePointerMediaQuery.removeListener","kind":"calls","metadata":{"unresolvedName":"coarsePointerMediaQuery.removeListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:handleChange","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:handleChange","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:handleChange","to":"symbol-name:setCapabilities","kind":"calls","metadata":{"unresolvedName":"setCapabilities"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:handleChange","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:getInputCapabilities","kind":"calls","metadata":{"unresolvedName":"getInputCapabilities"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","to":"external:canHoverMediaQuery.removeEventListener","kind":"calls","metadata":{"unresolvedName":"canHoverMediaQuery.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","to":"external:coarsePointerMediaQuery.removeEventListener","kind":"calls","metadata":{"unresolvedName":"coarsePointerMediaQuery.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","to":"external:canHoverMediaQuery.removeListener","kind":"calls","metadata":{"unresolvedName":"canHoverMediaQuery.removeListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","to":"external:coarsePointerMediaQuery.removeListener","kind":"calls","metadata":{"unresolvedName":"coarsePointerMediaQuery.removeListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInputCapabilities.ts:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:observe","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:observe","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:unobserve","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:unobserve","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:disconnect","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:disconnect","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:InViewHarness","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:InViewHarness","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:InViewHarness","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:useInView","kind":"calls","metadata":{"unresolvedName":"useInView"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:InViewHarness","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","to":"external:vi.stubGlobal","kind":"calls","metadata":{"unresolvedName":"vi.stubGlobal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","to":"external:vi.unstubAllGlobals","kind":"calls","metadata":{"unresolvedName":"vi.unstubAllGlobals"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","to":"external:IntersectionObserverMock.instance?.callback","kind":"calls","metadata":{"unresolvedName":"IntersectionObserverMock.instance?.callback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","to":"external:expect(screen.getByTestId('state')).toHaveTextContent","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByTestId('state')).toHaveTextContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","to":"external:vi.stubGlobal","kind":"calls","metadata":{"unresolvedName":"vi.stubGlobal"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","to":"external:vi.unstubAllGlobals","kind":"calls","metadata":{"unresolvedName":"vi.unstubAllGlobals"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx:render","kind":"calls","metadata":{"unresolvedName":"render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","to":"external:IntersectionObserverMock.instance?.callback","kind":"calls","metadata":{"unresolvedName":"IntersectionObserverMock.instance?.callback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","to":"external:expect(screen.getByTestId('state')).toHaveTextContent","kind":"calls","metadata":{"unresolvedName":"expect(screen.getByTestId('state')).toHaveTextContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","to":"external:screen.getByTestId","kind":"calls","metadata":{"unresolvedName":"screen.getByTestId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.test.tsx:","to":"external:IntersectionObserverMock.instance?.callback","kind":"calls","metadata":{"unresolvedName":"IntersectionObserverMock.instance?.callback"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:useInView","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:useInView","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:useInView","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:useInView","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:useInView","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:useInView","to":"symbol-name:setInView","kind":"calls","metadata":{"unresolvedName":"setInView"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:useInView","to":"symbol-name:setHasTriggered","kind":"calls","metadata":{"unresolvedName":"setHasTriggered"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:useInView","to":"external:observer.unobserve","kind":"calls","metadata":{"unresolvedName":"observer.unobserve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:useInView","to":"external:observer.observe","kind":"calls","metadata":{"unresolvedName":"observer.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:useInView","to":"external:observer.disconnect","kind":"calls","metadata":{"unresolvedName":"observer.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:","to":"symbol-name:setInView","kind":"calls","metadata":{"unresolvedName":"setInView"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:","to":"symbol-name:setHasTriggered","kind":"calls","metadata":{"unresolvedName":"setHasTriggered"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:","to":"external:observer.unobserve","kind":"calls","metadata":{"unresolvedName":"observer.unobserve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:","to":"external:observer.observe","kind":"calls","metadata":{"unresolvedName":"observer.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:","to":"external:observer.disconnect","kind":"calls","metadata":{"unresolvedName":"observer.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:","to":"symbol-name:setInView","kind":"calls","metadata":{"unresolvedName":"setInView"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:","to":"symbol-name:setHasTriggered","kind":"calls","metadata":{"unresolvedName":"setHasTriggered"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:","to":"external:observer.unobserve","kind":"calls","metadata":{"unresolvedName":"observer.unobserve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useInView.ts:","to":"external:observer.disconnect","kind":"calls","metadata":{"unresolvedName":"observer.disconnect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:useIsMobile","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:useIsMobile","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:useIsMobile","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:useIsMobile","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:useIsMobile","to":"symbol-name:setIsMobile","kind":"calls","metadata":{"unresolvedName":"setIsMobile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:useIsMobile","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:checkMobile","kind":"calls","metadata":{"unresolvedName":"checkMobile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:useIsMobile","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:useIsMobile","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:","to":"symbol-name:setIsMobile","kind":"calls","metadata":{"unresolvedName":"setIsMobile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:checkMobile","kind":"calls","metadata":{"unresolvedName":"checkMobile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:checkMobile","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:checkMobile","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:checkMobile","to":"symbol-name:setIsMobile","kind":"calls","metadata":{"unresolvedName":"setIsMobile"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingStore","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingStore","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingStore","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingStore","to":"external:keybindingStore.subscribe.bind","kind":"calls","metadata":{"unresolvedName":"keybindingStore.subscribe.bind"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingStore","to":"external:keybindingStore.getAll","kind":"calls","metadata":{"unresolvedName":"keybindingStore.getAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingStore","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingStore","to":"external:keybindingStore.setKeybinding","kind":"calls","metadata":{"unresolvedName":"keybindingStore.setKeybinding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingStore","to":"external:keybindingStore.resetKeybinding","kind":"calls","metadata":{"unresolvedName":"keybindingStore.resetKeybinding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingStore","to":"external:keybindingStore.resetAll","kind":"calls","metadata":{"unresolvedName":"keybindingStore.resetAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingStore","to":"external:keybindingStore.getKey","kind":"calls","metadata":{"unresolvedName":"keybindingStore.getKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingStore","to":"external:keybindingStore.isKeyUsed","kind":"calls","metadata":{"unresolvedName":"keybindingStore.isKeyUsed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingStore","to":"external:keybindingStore.getByCategory","kind":"calls","metadata":{"unresolvedName":"keybindingStore.getByCategory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","to":"external:keybindingStore.setKeybinding","kind":"calls","metadata":{"unresolvedName":"keybindingStore.setKeybinding"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","to":"external:keybindingStore.resetKeybinding","kind":"calls","metadata":{"unresolvedName":"keybindingStore.resetKeybinding"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","to":"external:keybindingStore.resetAll","kind":"calls","metadata":{"unresolvedName":"keybindingStore.resetAll"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","to":"external:keybindingStore.getKey","kind":"calls","metadata":{"unresolvedName":"keybindingStore.getKey"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","to":"external:keybindingStore.isKeyUsed","kind":"calls","metadata":{"unresolvedName":"keybindingStore.isKeyUsed"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","to":"external:keybindingStore.getByCategory","kind":"calls","metadata":{"unresolvedName":"keybindingStore.getByCategory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useGlobalKeybindings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useGlobalKeybindings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useGlobalKeybindings","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useGlobalKeybindings","to":"external:target.closest","kind":"calls","metadata":{"unresolvedName":"target.closest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useGlobalKeybindings","to":"external:document.querySelector","kind":"calls","metadata":{"unresolvedName":"document.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useGlobalKeybindings","to":"external:keybindingStore.getAll","kind":"calls","metadata":{"unresolvedName":"keybindingStore.getAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useGlobalKeybindings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:matchesKeybinding","kind":"calls","metadata":{"unresolvedName":"matchesKeybinding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useGlobalKeybindings","to":"external:['cancelMessage', 'sendMessage'].includes","kind":"calls","metadata":{"unresolvedName":"['cancelMessage', 'sendMessage'].includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useGlobalKeybindings","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useGlobalKeybindings","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useGlobalKeybindings","to":"symbol-name:handler","kind":"calls","metadata":{"unresolvedName":"handler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useGlobalKeybindings","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useGlobalKeybindings","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","to":"external:target.closest","kind":"calls","metadata":{"unresolvedName":"target.closest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","to":"external:document.querySelector","kind":"calls","metadata":{"unresolvedName":"document.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","to":"external:keybindingStore.getAll","kind":"calls","metadata":{"unresolvedName":"keybindingStore.getAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:matchesKeybinding","kind":"calls","metadata":{"unresolvedName":"matchesKeybinding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","to":"external:['cancelMessage', 'sendMessage'].includes","kind":"calls","metadata":{"unresolvedName":"['cancelMessage', 'sendMessage'].includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","to":"symbol-name:handler","kind":"calls","metadata":{"unresolvedName":"handler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:handleKeyDown","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:handleKeyDown","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:handleKeyDown","to":"external:target.closest","kind":"calls","metadata":{"unresolvedName":"target.closest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:handleKeyDown","to":"external:document.querySelector","kind":"calls","metadata":{"unresolvedName":"document.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:handleKeyDown","to":"external:keybindingStore.getAll","kind":"calls","metadata":{"unresolvedName":"keybindingStore.getAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:handleKeyDown","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:matchesKeybinding","kind":"calls","metadata":{"unresolvedName":"matchesKeybinding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:handleKeyDown","to":"external:['cancelMessage', 'sendMessage'].includes","kind":"calls","metadata":{"unresolvedName":"['cancelMessage', 'sendMessage'].includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:handleKeyDown","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:handleKeyDown","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:handleKeyDown","to":"symbol-name:handler","kind":"calls","metadata":{"unresolvedName":"handler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingLabel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingLabel","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingLabel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingStore","kind":"calls","metadata":{"unresolvedName":"useKeybindingStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useKeybindings.ts:useKeybindingLabel","to":"external:keybindings.find","kind":"calls","metadata":{"unresolvedName":"keybindings.find"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation","to":"external:timeouts.forEach","kind":"calls","metadata":{"unresolvedName":"timeouts.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation","to":"external:timeouts.clear","kind":"calls","metadata":{"unresolvedName":"timeouts.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation","to":"external:timeoutsRef.current.delete","kind":"calls","metadata":{"unresolvedName":"timeoutsRef.current.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation","to":"external:timeoutsRef.current.add","kind":"calls","metadata":{"unresolvedName":"timeoutsRef.current.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation","to":"external:refs.current.messageRefs.set","kind":"calls","metadata":{"unresolvedName":"refs.current.messageRefs.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation","to":"external:refs.current.messageRefs.delete","kind":"calls","metadata":{"unresolvedName":"refs.current.messageRefs.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation","to":"external:messageIds.forEach","kind":"calls","metadata":{"unresolvedName":"messageIds.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation","to":"external:refs.current.messageRefs.get","kind":"calls","metadata":{"unresolvedName":"refs.current.messageRefs.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation","to":"symbol-name:safeTimeout","kind":"calls","metadata":{"unresolvedName":"safeTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:useMessageAnimation","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"external:timeouts.forEach","kind":"calls","metadata":{"unresolvedName":"timeouts.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"external:timeouts.clear","kind":"calls","metadata":{"unresolvedName":"timeouts.clear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"external:timeouts.forEach","kind":"calls","metadata":{"unresolvedName":"timeouts.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"external:timeouts.clear","kind":"calls","metadata":{"unresolvedName":"timeouts.clear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"external:timeoutsRef.current.delete","kind":"calls","metadata":{"unresolvedName":"timeoutsRef.current.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"external:timeoutsRef.current.add","kind":"calls","metadata":{"unresolvedName":"timeoutsRef.current.add"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"external:timeoutsRef.current.delete","kind":"calls","metadata":{"unresolvedName":"timeoutsRef.current.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"external:refs.current.messageRefs.set","kind":"calls","metadata":{"unresolvedName":"refs.current.messageRefs.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"external:refs.current.messageRefs.delete","kind":"calls","metadata":{"unresolvedName":"refs.current.messageRefs.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"external:messageIds.forEach","kind":"calls","metadata":{"unresolvedName":"messageIds.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"external:refs.current.messageRefs.get","kind":"calls","metadata":{"unresolvedName":"refs.current.messageRefs.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"symbol-name:safeTimeout","kind":"calls","metadata":{"unresolvedName":"safeTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"external:messageIds.forEach","kind":"calls","metadata":{"unresolvedName":"messageIds.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"external:refs.current.messageRefs.get","kind":"calls","metadata":{"unresolvedName":"refs.current.messageRefs.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"symbol-name:safeTimeout","kind":"calls","metadata":{"unresolvedName":"safeTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"external:refs.current.messageRefs.get","kind":"calls","metadata":{"unresolvedName":"refs.current.messageRefs.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"symbol-name:safeTimeout","kind":"calls","metadata":{"unresolvedName":"safeTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"symbol-name:safeTimeout","kind":"calls","metadata":{"unresolvedName":"safeTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","to":"symbol-name:safeTimeout","kind":"calls","metadata":{"unresolvedName":"safeTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useMessageAnimation.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:useModalAnimation","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:useModalAnimation","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:useModalAnimation","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:useModalAnimation","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:useModalAnimation","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:useModalAnimation","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:useModalAnimation","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:useModalAnimation","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:useModalAnimation","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:useModalAnimation","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:useModalAnimation","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:","to":"symbol-name:setIsVisible","kind":"calls","metadata":{"unresolvedName":"setIsVisible"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:handleKeyDown","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:handleKeyDown","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModalAnimation.ts:handleKeyDown","to":"symbol-name:onClose","kind":"calls","metadata":{"unresolvedName":"onClose"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:onServerChange","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:onServerChange","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:onServerChange","to":"external:onServerChangeCallbacks.push","kind":"calls","metadata":{"unresolvedName":"onServerChangeCallbacks.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:getActiveModelsMock.mockReset","kind":"calls","metadata":{"unresolvedName":"getActiveModelsMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:getActiveModelsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getActiveModelsMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:onServerChangeCallbacks.forEach","kind":"calls","metadata":{"unresolvedName":"onServerChangeCallbacks.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:getActiveModelsMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"getActiveModelsMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:useModels","kind":"calls","metadata":{"unresolvedName":"useModels"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:expect(result.current.isLoading).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.isLoading).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:expect(result.current.models).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(result.current.models).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:resolvePromise","kind":"calls","metadata":{"unresolvedName":"resolvePromise"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:expect(result.current.models).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(result.current.models).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:result.current.refetch","kind":"calls","metadata":{"unresolvedName":"result.current.refetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:expect(result.current.models[1].id).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.models[1].id).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:expect(result.current.models[0].id).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.models[0].id).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:getActiveModelsMock.mockReset","kind":"calls","metadata":{"unresolvedName":"getActiveModelsMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:getActiveModelsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getActiveModelsMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:onServerChangeCallbacks.forEach","kind":"calls","metadata":{"unresolvedName":"onServerChangeCallbacks.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:getActiveModelsMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"getActiveModelsMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:useModels","kind":"calls","metadata":{"unresolvedName":"useModels"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:expect(result.current.isLoading).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.isLoading).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:expect(result.current.models).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(result.current.models).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:resolvePromise","kind":"calls","metadata":{"unresolvedName":"resolvePromise"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:resolvePromise","kind":"calls","metadata":{"unresolvedName":"resolvePromise"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:getActiveModelsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getActiveModelsMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:useModels","kind":"calls","metadata":{"unresolvedName":"useModels"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:expect(result.current.models).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(result.current.models).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:result.current.refetch","kind":"calls","metadata":{"unresolvedName":"result.current.refetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:expect(result.current.models[1].id).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.models[1].id).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:result.current.refetch","kind":"calls","metadata":{"unresolvedName":"result.current.refetch"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:getActiveModelsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getActiveModelsMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:useModels","kind":"calls","metadata":{"unresolvedName":"useModels"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:expect(result.current.models).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(result.current.models).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:onServerChangeCallbacks.forEach","kind":"calls","metadata":{"unresolvedName":"onServerChangeCallbacks.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:expect(result.current.models[0].id).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.models[0].id).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:onServerChangeCallbacks.forEach","kind":"calls","metadata":{"unresolvedName":"onServerChangeCallbacks.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_notify","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_notify","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_notify","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_setState","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_setState","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_setState","to":"symbol-name:_notify","kind":"calls","metadata":{"unresolvedName":"_notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_fetchModels","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_fetchModels","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_fetchModels","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_setState","kind":"calls","metadata":{"unresolvedName":"_setState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_fetchModels","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getActiveModels","kind":"calls","metadata":{"unresolvedName":"getActiveModels"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_setState","kind":"calls","metadata":{"unresolvedName":"_setState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getActiveModels","kind":"calls","metadata":{"unresolvedName":"getActiveModels"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_setState","kind":"calls","metadata":{"unresolvedName":"_setState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_fetchModels","kind":"calls","metadata":{"unresolvedName":"_fetchModels"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_subscribe","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_subscribe","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_subscribe","to":"external:_listeners.add","kind":"calls","metadata":{"unresolvedName":"_listeners.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_subscribe","to":"external:_listeners.delete","kind":"calls","metadata":{"unresolvedName":"_listeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_getSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_getSnapshot","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:useModels","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:useModels","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:useModels","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:useModels","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:useModels","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_fetchModels","kind":"calls","metadata":{"unresolvedName":"_fetchModels"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:useModels","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModels.ts:_fetchModels","kind":"calls","metadata":{"unresolvedName":"_fetchModels"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:set","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:set","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:set","to":"external:storage.set","kind":"calls","metadata":{"unresolvedName":"storage.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:remove","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:remove","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:remove","to":"external:storage.delete","kind":"calls","metadata":{"unresolvedName":"storage.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:saveModelVariantPref","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:saveModelVariantPref","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:saveModelVariantPref","to":"external:variantPrefs.set","kind":"calls","metadata":{"unresolvedName":"variantPrefs.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:saveSessionModelSelection","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:saveSessionModelSelection","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:saveSessionModelSelection","to":"external:sessionSelections.set","kind":"calls","metadata":{"unresolvedName":"sessionSelections.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:storage.clear","kind":"calls","metadata":{"unresolvedName":"storage.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:variantPrefs.clear","kind":"calls","metadata":{"unresolvedName":"variantPrefs.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:sessionSelections.clear","kind":"calls","metadata":{"unresolvedName":"sessionSelections.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","kind":"calls","metadata":{"unresolvedName":"useModelSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(result.current.selectedModelKey).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.selectedModelKey).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(result.current.currentModel?.name).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.currentModel?.name).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:storage.set","kind":"calls","metadata":{"unresolvedName":"storage.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:variantPrefs.set","kind":"calls","metadata":{"unresolvedName":"variantPrefs.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(result.current.selectedVariant).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.selectedVariant).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:result.current.handleVariantChange","kind":"calls","metadata":{"unresolvedName":"result.current.handleVariantChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:result.current.handleModelChange","kind":"calls","metadata":{"unresolvedName":"result.current.handleModelChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(storage.get(STORAGE_KEY_SELECTED_MODEL)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(storage.get(STORAGE_KEY_SELECTED_MODEL)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:storage.get","kind":"calls","metadata":{"unresolvedName":"storage.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(variantPrefs.get('openai:gpt-4.1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(variantPrefs.get('openai:gpt-4.1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:variantPrefs.get","kind":"calls","metadata":{"unresolvedName":"variantPrefs.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(variantPrefs.get('openai:gpt-4o-mini')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(variantPrefs.get('openai:gpt-4o-mini')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:result.current.restoreFromMessage","kind":"calls","metadata":{"unresolvedName":"result.current.restoreFromMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(sessionSelections.get('session-1')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(sessionSelections.get('session-1')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:sessionSelections.get","kind":"calls","metadata":{"unresolvedName":"sessionSelections.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:sessionSelections.set","kind":"calls","metadata":{"unresolvedName":"sessionSelections.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(sessionSelections.get('session-2')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(sessionSelections.get('session-2')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(result.current.selectedModelKey).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(result.current.selectedModelKey).toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:storage.clear","kind":"calls","metadata":{"unresolvedName":"storage.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:variantPrefs.clear","kind":"calls","metadata":{"unresolvedName":"variantPrefs.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:sessionSelections.clear","kind":"calls","metadata":{"unresolvedName":"sessionSelections.clear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","kind":"calls","metadata":{"unresolvedName":"useModelSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(result.current.selectedModelKey).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.selectedModelKey).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(result.current.currentModel?.name).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.currentModel?.name).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:storage.set","kind":"calls","metadata":{"unresolvedName":"storage.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:variantPrefs.set","kind":"calls","metadata":{"unresolvedName":"variantPrefs.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","kind":"calls","metadata":{"unresolvedName":"useModelSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(result.current.selectedModelKey).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.selectedModelKey).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(result.current.selectedVariant).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.selectedVariant).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:result.current.handleVariantChange","kind":"calls","metadata":{"unresolvedName":"result.current.handleVariantChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:result.current.handleModelChange","kind":"calls","metadata":{"unresolvedName":"result.current.handleModelChange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:result.current.handleVariantChange","kind":"calls","metadata":{"unresolvedName":"result.current.handleVariantChange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:result.current.handleModelChange","kind":"calls","metadata":{"unresolvedName":"result.current.handleModelChange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:storage.set","kind":"calls","metadata":{"unresolvedName":"storage.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","kind":"calls","metadata":{"unresolvedName":"useModelSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(result.current.selectedModelKey).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.selectedModelKey).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(storage.get(STORAGE_KEY_SELECTED_MODEL)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(storage.get(STORAGE_KEY_SELECTED_MODEL)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:storage.get","kind":"calls","metadata":{"unresolvedName":"storage.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:storage.set","kind":"calls","metadata":{"unresolvedName":"storage.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:variantPrefs.set","kind":"calls","metadata":{"unresolvedName":"variantPrefs.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","kind":"calls","metadata":{"unresolvedName":"useModelSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:result.current.handleModelChange","kind":"calls","metadata":{"unresolvedName":"result.current.handleModelChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(variantPrefs.get('openai:gpt-4.1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(variantPrefs.get('openai:gpt-4.1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:variantPrefs.get","kind":"calls","metadata":{"unresolvedName":"variantPrefs.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(variantPrefs.get('openai:gpt-4o-mini')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(variantPrefs.get('openai:gpt-4o-mini')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:result.current.handleModelChange","kind":"calls","metadata":{"unresolvedName":"result.current.handleModelChange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:storage.set","kind":"calls","metadata":{"unresolvedName":"storage.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","kind":"calls","metadata":{"unresolvedName":"useModelSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:result.current.restoreFromMessage","kind":"calls","metadata":{"unresolvedName":"result.current.restoreFromMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(result.current.selectedModelKey).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.selectedModelKey).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(result.current.selectedVariant).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.selectedVariant).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(storage.get(STORAGE_KEY_SELECTED_MODEL)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(storage.get(STORAGE_KEY_SELECTED_MODEL)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:storage.get","kind":"calls","metadata":{"unresolvedName":"storage.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(sessionSelections.get('session-1')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(sessionSelections.get('session-1')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:sessionSelections.get","kind":"calls","metadata":{"unresolvedName":"sessionSelections.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:result.current.restoreFromMessage","kind":"calls","metadata":{"unresolvedName":"result.current.restoreFromMessage"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","kind":"calls","metadata":{"unresolvedName":"useModelSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:result.current.handleModelChange","kind":"calls","metadata":{"unresolvedName":"result.current.handleModelChange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(result.current.selectedModelKey).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.selectedModelKey).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(sessionSelections.get('session-1')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(sessionSelections.get('session-1')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:sessionSelections.get","kind":"calls","metadata":{"unresolvedName":"sessionSelections.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:result.current.handleModelChange","kind":"calls","metadata":{"unresolvedName":"result.current.handleModelChange"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:sessionSelections.set","kind":"calls","metadata":{"unresolvedName":"sessionSelections.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","kind":"calls","metadata":{"unresolvedName":"useModelSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(sessionSelections.get('session-2')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(sessionSelections.get('session-2')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:sessionSelections.get","kind":"calls","metadata":{"unresolvedName":"sessionSelections.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:sessionSelections.set","kind":"calls","metadata":{"unresolvedName":"sessionSelections.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","kind":"calls","metadata":{"unresolvedName":"useModelSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(result.current.selectedModelKey).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.selectedModelKey).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:sessionSelections.set","kind":"calls","metadata":{"unresolvedName":"sessionSelections.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","kind":"calls","metadata":{"unresolvedName":"useModelSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(result.current.selectedModelKey).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(result.current.selectedModelKey).toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.test.tsx:","to":"external:expect(result.current.selectedModelKey).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.selectedModelKey).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getSessionModelSelection","kind":"calls","metadata":{"unresolvedName":"getSessionModelSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:findModelByKey","kind":"calls","metadata":{"unresolvedName":"findModelByKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelVariantPref","kind":"calls","metadata":{"unresolvedName":"getModelVariantPref"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","to":"external:serverStorage.get","kind":"calls","metadata":{"unresolvedName":"serverStorage.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","to":"symbol-name:setSelection","kind":"calls","metadata":{"unresolvedName":"setSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","to":"symbol-name:useLayoutEffect","kind":"calls","metadata":{"unresolvedName":"useLayoutEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","to":"external:serverStorage.set","kind":"calls","metadata":{"unresolvedName":"serverStorage.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","to":"symbol-name:saveSessionModelSelection","kind":"calls","metadata":{"unresolvedName":"saveSessionModelSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","to":"external:serverStorage.remove","kind":"calls","metadata":{"unresolvedName":"serverStorage.remove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:useModelSelection","to":"symbol-name:saveModelVariantPref","kind":"calls","metadata":{"unresolvedName":"saveModelVariantPref"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelVariantPref","kind":"calls","metadata":{"unresolvedName":"getModelVariantPref"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","to":"external:serverStorage.get","kind":"calls","metadata":{"unresolvedName":"serverStorage.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelVariantPref","kind":"calls","metadata":{"unresolvedName":"getModelVariantPref"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:findModelByKey","kind":"calls","metadata":{"unresolvedName":"findModelByKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelVariantPref","kind":"calls","metadata":{"unresolvedName":"getModelVariantPref"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","to":"symbol-name:setSelection","kind":"calls","metadata":{"unresolvedName":"setSelection"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","to":"external:serverStorage.set","kind":"calls","metadata":{"unresolvedName":"serverStorage.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","to":"symbol-name:saveSessionModelSelection","kind":"calls","metadata":{"unresolvedName":"saveSessionModelSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","to":"external:serverStorage.remove","kind":"calls","metadata":{"unresolvedName":"serverStorage.remove"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","to":"symbol-name:saveModelVariantPref","kind":"calls","metadata":{"unresolvedName":"saveModelVariantPref"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","to":"symbol-name:setSelection","kind":"calls","metadata":{"unresolvedName":"setSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelVariantPref","kind":"calls","metadata":{"unresolvedName":"getModelVariantPref"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","to":"symbol-name:setSelection","kind":"calls","metadata":{"unresolvedName":"setSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","to":"symbol-name:saveModelVariantPref","kind":"calls","metadata":{"unresolvedName":"saveModelVariantPref"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:findModelByKey","kind":"calls","metadata":{"unresolvedName":"findModelByKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","to":"symbol-name:setSelection","kind":"calls","metadata":{"unresolvedName":"setSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useModelSelection.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelVariantPref","kind":"calls","metadata":{"unresolvedName":"getModelVariantPref"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/storage.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:ensureServiceWorker","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:ensureServiceWorker","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:ensureServiceWorker","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:ensureServiceWorker","to":"external:navigator.serviceWorker.register","kind":"calls","metadata":{"unresolvedName":"navigator.serviceWorker.register"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:sendTauriNotification","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:sendTauriNotification","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:sendTauriNotification","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:sendTauriNotification","to":"symbol-name:isPermissionGranted","kind":"calls","metadata":{"unresolvedName":"isPermissionGranted"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:sendTauriNotification","to":"symbol-name:requestPermission","kind":"calls","metadata":{"unresolvedName":"requestPermission"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:sendTauriNotification","to":"symbol-name:sendNotification","kind":"calls","metadata":{"unresolvedName":"sendNotification"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:sendTauriNotification","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:checkTauriPermission","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:checkTauriPermission","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:checkTauriPermission","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:checkTauriPermission","to":"symbol-name:isPermissionGranted","kind":"calls","metadata":{"unresolvedName":"isPermissionGranted"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:requestTauriPermission","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:requestTauriPermission","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:requestTauriPermission","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:requestTauriPermission","to":"symbol-name:requestPermission","kind":"calls","metadata":{"unresolvedName":"requestPermission"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"external:checkTauriPermission().then","kind":"calls","metadata":{"unresolvedName":"checkTauriPermission().then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:checkTauriPermission","kind":"calls","metadata":{"unresolvedName":"checkTauriPermission"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:ensureServiceWorker","kind":"calls","metadata":{"unresolvedName":"ensureServiceWorker"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"external:window.focus","kind":"calls","metadata":{"unresolvedName":"window.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"external:navigator.serviceWorker.addEventListener","kind":"calls","metadata":{"unresolvedName":"navigator.serviceWorker.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"external:navigator.serviceWorker.removeEventListener","kind":"calls","metadata":{"unresolvedName":"navigator.serviceWorker.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:requestTauriPermission","kind":"calls","metadata":{"unresolvedName":"requestTauriPermission"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"symbol-name:setPermission","kind":"calls","metadata":{"unresolvedName":"setPermission"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"external:Notification.requestPermission","kind":"calls","metadata":{"unresolvedName":"Notification.requestPermission"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"symbol-name:setEnabledState","kind":"calls","metadata":{"unresolvedName":"setEnabledState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"external:localStorage.removeItem","kind":"calls","metadata":{"unresolvedName":"localStorage.removeItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:sendTauriNotification","kind":"calls","metadata":{"unresolvedName":"sendTauriNotification"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"external:reg.showNotification","kind":"calls","metadata":{"unresolvedName":"reg.showNotification"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:useNotification","to":"external:notification.close","kind":"calls","metadata":{"unresolvedName":"notification.close"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"external:checkTauriPermission().then","kind":"calls","metadata":{"unresolvedName":"checkTauriPermission().then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:checkTauriPermission","kind":"calls","metadata":{"unresolvedName":"checkTauriPermission"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:ensureServiceWorker","kind":"calls","metadata":{"unresolvedName":"ensureServiceWorker"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"external:window.focus","kind":"calls","metadata":{"unresolvedName":"window.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"external:navigator.serviceWorker.addEventListener","kind":"calls","metadata":{"unresolvedName":"navigator.serviceWorker.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"external:navigator.serviceWorker.removeEventListener","kind":"calls","metadata":{"unresolvedName":"navigator.serviceWorker.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:handler","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:handler","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:handler","to":"external:window.focus","kind":"calls","metadata":{"unresolvedName":"window.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:requestTauriPermission","kind":"calls","metadata":{"unresolvedName":"requestTauriPermission"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"symbol-name:setPermission","kind":"calls","metadata":{"unresolvedName":"setPermission"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"external:Notification.requestPermission","kind":"calls","metadata":{"unresolvedName":"Notification.requestPermission"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"symbol-name:setEnabledState","kind":"calls","metadata":{"unresolvedName":"setEnabledState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"external:localStorage.removeItem","kind":"calls","metadata":{"unresolvedName":"localStorage.removeItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:ensureServiceWorker","kind":"calls","metadata":{"unresolvedName":"ensureServiceWorker"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:sendTauriNotification","kind":"calls","metadata":{"unresolvedName":"sendTauriNotification"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:ensureServiceWorker","kind":"calls","metadata":{"unresolvedName":"ensureServiceWorker"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"external:reg.showNotification","kind":"calls","metadata":{"unresolvedName":"reg.showNotification"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"external:window.focus","kind":"calls","metadata":{"unresolvedName":"window.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"external:notification.close","kind":"calls","metadata":{"unresolvedName":"notification.close"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"external:window.focus","kind":"calls","metadata":{"unresolvedName":"window.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNotification.ts:","to":"external:notification.close","kind":"calls","metadata":{"unresolvedName":"notification.close"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:useNow","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:useNow","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:useNow","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:useNow","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:useNow","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:useNow","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:useNow","to":"symbol-name:setNow","kind":"calls","metadata":{"unresolvedName":"setNow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:useNow","to":"external:window.setInterval","kind":"calls","metadata":{"unresolvedName":"window.setInterval"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:useNow","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:useNow","to":"external:window.clearInterval","kind":"calls","metadata":{"unresolvedName":"window.clearInterval"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:","to":"symbol-name:setNow","kind":"calls","metadata":{"unresolvedName":"setNow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:","to":"external:window.setInterval","kind":"calls","metadata":{"unresolvedName":"window.setInterval"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:","to":"external:window.clearInterval","kind":"calls","metadata":{"unresolvedName":"window.clearInterval"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useNow.ts:","to":"external:window.clearInterval","kind":"calls","metadata":{"unresolvedName":"window.clearInterval"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts","to":"external:react-dom","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:usePanelResizeStatus","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:usePanelResizeStatus","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:usePanelResizeStatus","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:usePanelResizeStatus","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:usePanelResizeStatus","to":"symbol-name:flushSync","kind":"calls","metadata":{"unresolvedName":"flushSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:usePanelResizeStatus","to":"symbol-name:setIsResizing","kind":"calls","metadata":{"unresolvedName":"setIsResizing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:usePanelResizeStatus","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:usePanelResizeStatus","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:","to":"symbol-name:flushSync","kind":"calls","metadata":{"unresolvedName":"flushSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:","to":"symbol-name:setIsResizing","kind":"calls","metadata":{"unresolvedName":"setIsResizing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePanelResizeStatus.ts:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:usePathMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:usePathMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:usePathMode","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:usePathMode","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:usePathMode","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:subscribePathMode","kind":"calls","metadata":{"unresolvedName":"subscribePathMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:usePathMode","to":"symbol-name:setPathModeState","kind":"calls","metadata":{"unresolvedName":"setPathModeState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:usePathMode","to":"symbol-name:setEffectiveStyle","kind":"calls","metadata":{"unresolvedName":"setEffectiveStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:usePathMode","to":"symbol-name:setDetectedStyle","kind":"calls","metadata":{"unresolvedName":"setDetectedStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:usePathMode","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDetectedPathStyle","kind":"calls","metadata":{"unresolvedName":"getDetectedPathStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:usePathMode","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:usePathMode","to":"symbol-name:setPathModeUtil","kind":"calls","metadata":{"unresolvedName":"setPathModeUtil"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:usePathMode","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getEffectivePathStyle","kind":"calls","metadata":{"unresolvedName":"getEffectivePathStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:subscribePathMode","kind":"calls","metadata":{"unresolvedName":"subscribePathMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:","to":"symbol-name:setPathModeState","kind":"calls","metadata":{"unresolvedName":"setPathModeState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:","to":"symbol-name:setEffectiveStyle","kind":"calls","metadata":{"unresolvedName":"setEffectiveStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:","to":"symbol-name:setDetectedStyle","kind":"calls","metadata":{"unresolvedName":"setDetectedStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDetectedPathStyle","kind":"calls","metadata":{"unresolvedName":"getDetectedPathStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:","to":"symbol-name:setPathModeState","kind":"calls","metadata":{"unresolvedName":"setPathModeState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:","to":"symbol-name:setEffectiveStyle","kind":"calls","metadata":{"unresolvedName":"setEffectiveStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:","to":"symbol-name:setDetectedStyle","kind":"calls","metadata":{"unresolvedName":"setDetectedStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDetectedPathStyle","kind":"calls","metadata":{"unresolvedName":"getDetectedPathStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:","to":"symbol-name:setPathModeUtil","kind":"calls","metadata":{"unresolvedName":"setPathModeUtil"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:","to":"symbol-name:setPathModeState","kind":"calls","metadata":{"unresolvedName":"setPathModeState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:","to":"symbol-name:setEffectiveStyle","kind":"calls","metadata":{"unresolvedName":"setEffectiveStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePathMode.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getEffectivePathStyle","kind":"calls","metadata":{"unresolvedName":"getEffectivePathStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:withRetry","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:withRetry","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:withRetry","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:withRetry","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:withRetry","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:withRetry","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"external:replyingIdsRef.current.has","kind":"calls","metadata":{"unresolvedName":"replyingIdsRef.current.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"external:replyingIdsRef.current.add","kind":"calls","metadata":{"unresolvedName":"replyingIdsRef.current.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"symbol-name:setIsReplying","kind":"calls","metadata":{"unresolvedName":"setIsReplying"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:withRetry","kind":"calls","metadata":{"unresolvedName":"withRetry"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:replyPermission","kind":"calls","metadata":{"unresolvedName":"replyPermission"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"symbol-name:permissionErrorHandler","kind":"calls","metadata":{"unresolvedName":"permissionErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"external:replyingIdsRef.current.delete","kind":"calls","metadata":{"unresolvedName":"replyingIdsRef.current.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:replyQuestion","kind":"calls","metadata":{"unresolvedName":"replyQuestion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"symbol-name:setPendingQuestionRequests","kind":"calls","metadata":{"unresolvedName":"setPendingQuestionRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"external:activeSessionStore.resolvePendingRequest","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.resolvePendingRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:rejectQuestion","kind":"calls","metadata":{"unresolvedName":"rejectQuestion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"external:Promise.all","kind":"calls","metadata":{"unresolvedName":"Promise.all"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"external:getPendingPermissions(undefined, directory).catch","kind":"calls","metadata":{"unresolvedName":"getPendingPermissions(undefined, directory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingPermissions","kind":"calls","metadata":{"unresolvedName":"getPendingPermissions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"external:getPendingQuestions(undefined, directory).catch","kind":"calls","metadata":{"unresolvedName":"getPendingQuestions(undefined, directory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingQuestions","kind":"calls","metadata":{"unresolvedName":"getPendingQuestions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"external:allPermissions.filter","kind":"calls","metadata":{"unresolvedName":"allPermissions.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"external:familySet.has","kind":"calls","metadata":{"unresolvedName":"familySet.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"symbol-name:setPendingPermissionRequests","kind":"calls","metadata":{"unresolvedName":"setPendingPermissionRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"external:nextPermissions.map","kind":"calls","metadata":{"unresolvedName":"nextPermissions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"external:merged.has","kind":"calls","metadata":{"unresolvedName":"merged.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"external:merged.set","kind":"calls","metadata":{"unresolvedName":"merged.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"external:merged.values","kind":"calls","metadata":{"unresolvedName":"merged.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"external:allQuestions.filter","kind":"calls","metadata":{"unresolvedName":"allQuestions.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:usePermissionHandler","to":"external:replyingIdsRef.current.clear","kind":"calls","metadata":{"unresolvedName":"replyingIdsRef.current.clear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:replyingIdsRef.current.has","kind":"calls","metadata":{"unresolvedName":"replyingIdsRef.current.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:replyingIdsRef.current.add","kind":"calls","metadata":{"unresolvedName":"replyingIdsRef.current.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"symbol-name:setIsReplying","kind":"calls","metadata":{"unresolvedName":"setIsReplying"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:withRetry","kind":"calls","metadata":{"unresolvedName":"withRetry"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:replyPermission","kind":"calls","metadata":{"unresolvedName":"replyPermission"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"symbol-name:permissionErrorHandler","kind":"calls","metadata":{"unresolvedName":"permissionErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:replyingIdsRef.current.delete","kind":"calls","metadata":{"unresolvedName":"replyingIdsRef.current.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:replyingIdsRef.current.has","kind":"calls","metadata":{"unresolvedName":"replyingIdsRef.current.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:replyingIdsRef.current.add","kind":"calls","metadata":{"unresolvedName":"replyingIdsRef.current.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"symbol-name:setIsReplying","kind":"calls","metadata":{"unresolvedName":"setIsReplying"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:withRetry","kind":"calls","metadata":{"unresolvedName":"withRetry"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:replyQuestion","kind":"calls","metadata":{"unresolvedName":"replyQuestion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"symbol-name:setPendingQuestionRequests","kind":"calls","metadata":{"unresolvedName":"setPendingQuestionRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:activeSessionStore.resolvePendingRequest","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.resolvePendingRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"symbol-name:permissionErrorHandler","kind":"calls","metadata":{"unresolvedName":"permissionErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:replyingIdsRef.current.delete","kind":"calls","metadata":{"unresolvedName":"replyingIdsRef.current.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:replyingIdsRef.current.has","kind":"calls","metadata":{"unresolvedName":"replyingIdsRef.current.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:replyingIdsRef.current.add","kind":"calls","metadata":{"unresolvedName":"replyingIdsRef.current.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"symbol-name:setIsReplying","kind":"calls","metadata":{"unresolvedName":"setIsReplying"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:withRetry","kind":"calls","metadata":{"unresolvedName":"withRetry"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:rejectQuestion","kind":"calls","metadata":{"unresolvedName":"rejectQuestion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"symbol-name:setPendingQuestionRequests","kind":"calls","metadata":{"unresolvedName":"setPendingQuestionRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:activeSessionStore.resolvePendingRequest","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.resolvePendingRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"symbol-name:permissionErrorHandler","kind":"calls","metadata":{"unresolvedName":"permissionErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:replyingIdsRef.current.delete","kind":"calls","metadata":{"unresolvedName":"replyingIdsRef.current.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:Promise.all","kind":"calls","metadata":{"unresolvedName":"Promise.all"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:getPendingPermissions(undefined, directory).catch","kind":"calls","metadata":{"unresolvedName":"getPendingPermissions(undefined, directory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingPermissions","kind":"calls","metadata":{"unresolvedName":"getPendingPermissions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:getPendingQuestions(undefined, directory).catch","kind":"calls","metadata":{"unresolvedName":"getPendingQuestions(undefined, directory).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/permission.ts:getPendingQuestions","kind":"calls","metadata":{"unresolvedName":"getPendingQuestions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:allPermissions.filter","kind":"calls","metadata":{"unresolvedName":"allPermissions.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:familySet.has","kind":"calls","metadata":{"unresolvedName":"familySet.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:replyingIdsRef.current.has","kind":"calls","metadata":{"unresolvedName":"replyingIdsRef.current.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"symbol-name:setPendingPermissionRequests","kind":"calls","metadata":{"unresolvedName":"setPendingPermissionRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:nextPermissions.map","kind":"calls","metadata":{"unresolvedName":"nextPermissions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:merged.has","kind":"calls","metadata":{"unresolvedName":"merged.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:merged.set","kind":"calls","metadata":{"unresolvedName":"merged.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:merged.values","kind":"calls","metadata":{"unresolvedName":"merged.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"symbol-name:setPendingQuestionRequests","kind":"calls","metadata":{"unresolvedName":"setPendingQuestionRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:allQuestions.filter","kind":"calls","metadata":{"unresolvedName":"allQuestions.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"symbol-name:permissionErrorHandler","kind":"calls","metadata":{"unresolvedName":"permissionErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:nextPermissions.map","kind":"calls","metadata":{"unresolvedName":"nextPermissions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:replyingIdsRef.current.has","kind":"calls","metadata":{"unresolvedName":"replyingIdsRef.current.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:familySet.has","kind":"calls","metadata":{"unresolvedName":"familySet.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:merged.has","kind":"calls","metadata":{"unresolvedName":"merged.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:merged.set","kind":"calls","metadata":{"unresolvedName":"merged.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:merged.values","kind":"calls","metadata":{"unresolvedName":"merged.values"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"symbol-name:setPendingPermissionRequests","kind":"calls","metadata":{"unresolvedName":"setPendingPermissionRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"symbol-name:setPendingQuestionRequests","kind":"calls","metadata":{"unresolvedName":"setPendingQuestionRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissionHandler.ts:","to":"external:replyingIdsRef.current.clear","kind":"calls","metadata":{"unresolvedName":"replyingIdsRef.current.clear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:usePermissions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:usePermissions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:usePermissions","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:usePermissions","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:usePermissions","to":"external:sessionApprovedTools.has","kind":"calls","metadata":{"unresolvedName":"sessionApprovedTools.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:usePermissions","to":"symbol-name:setSessionApprovedTools","kind":"calls","metadata":{"unresolvedName":"setSessionApprovedTools"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:","to":"external:sessionApprovedTools.has","kind":"calls","metadata":{"unresolvedName":"sessionApprovedTools.has"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:","to":"symbol-name:setSessionApprovedTools","kind":"calls","metadata":{"unresolvedName":"setSessionApprovedTools"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePermissions.ts:","to":"symbol-name:setSessionApprovedTools","kind":"calls","metadata":{"unresolvedName":"setSessionApprovedTools"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts","to":"external:motion/mini","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:usePresence","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:usePresence","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:usePresence","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:usePresence","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:usePresence","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useDelayedRender.ts:useDelayedRender","kind":"calls","metadata":{"unresolvedName":"useDelayedRender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:usePresence","to":"symbol-name:useLayoutEffect","kind":"calls","metadata":{"unresolvedName":"useLayoutEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:usePresence","to":"external:animRef.current?.stop","kind":"calls","metadata":{"unresolvedName":"animRef.current?.stop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:usePresence","to":"external:Object.assign","kind":"calls","metadata":{"unresolvedName":"Object.assign"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:usePresence","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:stringifyStyle","kind":"calls","metadata":{"unresolvedName":"stringifyStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:usePresence","to":"symbol-name:animate","kind":"calls","metadata":{"unresolvedName":"animate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:","to":"external:animRef.current?.stop","kind":"calls","metadata":{"unresolvedName":"animRef.current?.stop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:","to":"external:Object.assign","kind":"calls","metadata":{"unresolvedName":"Object.assign"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:stringifyStyle","kind":"calls","metadata":{"unresolvedName":"stringifyStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:","to":"symbol-name:animate","kind":"calls","metadata":{"unresolvedName":"animate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:stringifyStyle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:stringifyStyle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/usePresence.ts:stringifyStyle","to":"external:Object.entries","kind":"calls","metadata":{"unresolvedName":"Object.entries"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","to":"symbol-name:useTranslation","kind":"calls","metadata":{"unresolvedName":"useTranslation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","to":"external:Promise.all","kind":"calls","metadata":{"unresolvedName":"Promise.all"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getCurrentProject","kind":"calls","metadata":{"unresolvedName":"getCurrentProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getProjects","kind":"calls","metadata":{"unresolvedName":"getProjects"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","to":"symbol-name:setProjects","kind":"calls","metadata":{"unresolvedName":"setProjects"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","to":"external:serverStorage.get","kind":"calls","metadata":{"unresolvedName":"serverStorage.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","to":"external:all.find","kind":"calls","metadata":{"unresolvedName":"all.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","to":"symbol-name:setCurrentProject","kind":"calls","metadata":{"unresolvedName":"setCurrentProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","to":"external:serverStorage.remove","kind":"calls","metadata":{"unresolvedName":"serverStorage.remove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","to":"symbol-name:loadProjects","kind":"calls","metadata":{"unresolvedName":"loadProjects"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","to":"external:projects.find","kind":"calls","metadata":{"unresolvedName":"projects.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:useProject","to":"external:serverStorage.set","kind":"calls","metadata":{"unresolvedName":"serverStorage.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","to":"external:Promise.all","kind":"calls","metadata":{"unresolvedName":"Promise.all"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getCurrentProject","kind":"calls","metadata":{"unresolvedName":"getCurrentProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/client.ts:getProjects","kind":"calls","metadata":{"unresolvedName":"getProjects"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","to":"symbol-name:setProjects","kind":"calls","metadata":{"unresolvedName":"setProjects"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","to":"external:serverStorage.get","kind":"calls","metadata":{"unresolvedName":"serverStorage.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","to":"external:all.find","kind":"calls","metadata":{"unresolvedName":"all.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","to":"symbol-name:setCurrentProject","kind":"calls","metadata":{"unresolvedName":"setCurrentProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","to":"external:serverStorage.remove","kind":"calls","metadata":{"unresolvedName":"serverStorage.remove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/parts/ToolPartView.test.tsx:t","kind":"calls","metadata":{"unresolvedName":"t"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","to":"symbol-name:loadProjects","kind":"calls","metadata":{"unresolvedName":"loadProjects"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","to":"external:projects.find","kind":"calls","metadata":{"unresolvedName":"projects.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","to":"symbol-name:setCurrentProject","kind":"calls","metadata":{"unresolvedName":"setCurrentProject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useProject.ts:","to":"external:serverStorage.set","kind":"calls","metadata":{"unresolvedName":"serverStorage.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:","to":"external:listeners.forEach","kind":"calls","metadata":{"unresolvedName":"listeners.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:subscribe","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:subscribe","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:subscribe","to":"external:listeners.add","kind":"calls","metadata":{"unresolvedName":"listeners.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:subscribe","to":"external:listeners.delete","kind":"calls","metadata":{"unresolvedName":"listeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:getSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:getSnapshot","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:getServerSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:getServerSnapshot","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:useResponsiveMaxHeight","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:useResponsiveMaxHeight","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:useResponsiveMaxHeight","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:useResponsiveMaxHeight","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:useResponsiveMaxHeight","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useResponsiveMaxHeight.ts:useResponsiveMaxHeight","to":"external:Math.floor","kind":"calls","metadata":{"unresolvedName":"Math.floor"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"external:messages.some","kind":"calls","metadata":{"unresolvedName":"messages.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"external:messages.findIndex","kind":"calls","metadata":{"unresolvedName":"messages.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"symbol-name:revertErrorHandler","kind":"calls","metadata":{"unresolvedName":"revertErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"external:messages.slice(targetUIIndex).map","kind":"calls","metadata":{"unresolvedName":"messages.slice(targetUIIndex).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"external:messages.slice","kind":"calls","metadata":{"unresolvedName":"messages.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"symbol-name:animateUndo","kind":"calls","metadata":{"unresolvedName":"animateUndo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessages","kind":"calls","metadata":{"unresolvedName":"getSessionMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"external:apiMessages.findIndex","kind":"calls","metadata":{"unresolvedName":"apiMessages.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:revertMessage","kind":"calls","metadata":{"unresolvedName":"revertMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"symbol-name:setSessionRevertState","kind":"calls","metadata":{"unresolvedName":"setSessionRevertState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"external:apiMessages.slice(targetIndex).filter","kind":"calls","metadata":{"unresolvedName":"apiMessages.slice(targetIndex).filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"external:apiMessages.slice","kind":"calls","metadata":{"unresolvedName":"apiMessages.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"external:revertedUserMessages.map","kind":"calls","metadata":{"unresolvedName":"revertedUserMessages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:extractUserMessageContent","kind":"calls","metadata":{"unresolvedName":"extractUserMessageContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"symbol-name:setRevertHistory","kind":"calls","metadata":{"unresolvedName":"setRevertHistory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"symbol-name:setRevertedMessage","kind":"calls","metadata":{"unresolvedName":"setRevertedMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setMessages","kind":"calls","metadata":{"unresolvedName":"setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"external:filteredApiMessages.map","kind":"calls","metadata":{"unresolvedName":"filteredApiMessages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"symbol-name:scrollToEnd","kind":"calls","metadata":{"unresolvedName":"scrollToEnd"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"symbol-name:animateRedo","kind":"calls","metadata":{"unresolvedName":"animateRedo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"external:revertHistory.slice","kind":"calls","metadata":{"unresolvedName":"revertHistory.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unrevertSession","kind":"calls","metadata":{"unresolvedName":"unrevertSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:useRevertState","to":"external:apiMessages.map","kind":"calls","metadata":{"unresolvedName":"apiMessages.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"external:messages.findIndex","kind":"calls","metadata":{"unresolvedName":"messages.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"symbol-name:revertErrorHandler","kind":"calls","metadata":{"unresolvedName":"revertErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"external:messages.slice(targetUIIndex).map","kind":"calls","metadata":{"unresolvedName":"messages.slice(targetUIIndex).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"external:messages.slice","kind":"calls","metadata":{"unresolvedName":"messages.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"symbol-name:animateUndo","kind":"calls","metadata":{"unresolvedName":"animateUndo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessages","kind":"calls","metadata":{"unresolvedName":"getSessionMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"external:apiMessages.findIndex","kind":"calls","metadata":{"unresolvedName":"apiMessages.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:revertMessage","kind":"calls","metadata":{"unresolvedName":"revertMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"symbol-name:setSessionRevertState","kind":"calls","metadata":{"unresolvedName":"setSessionRevertState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"external:apiMessages.slice(targetIndex).filter","kind":"calls","metadata":{"unresolvedName":"apiMessages.slice(targetIndex).filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"external:apiMessages.slice","kind":"calls","metadata":{"unresolvedName":"apiMessages.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"external:revertedUserMessages.map","kind":"calls","metadata":{"unresolvedName":"revertedUserMessages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:extractUserMessageContent","kind":"calls","metadata":{"unresolvedName":"extractUserMessageContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"symbol-name:setRevertHistory","kind":"calls","metadata":{"unresolvedName":"setRevertHistory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"symbol-name:setRevertedMessage","kind":"calls","metadata":{"unresolvedName":"setRevertedMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setMessages","kind":"calls","metadata":{"unresolvedName":"setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"external:filteredApiMessages.map","kind":"calls","metadata":{"unresolvedName":"filteredApiMessages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"symbol-name:scrollToEnd","kind":"calls","metadata":{"unresolvedName":"scrollToEnd"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"symbol-name:animateRedo","kind":"calls","metadata":{"unresolvedName":"animateRedo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"external:revertHistory.slice","kind":"calls","metadata":{"unresolvedName":"revertHistory.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:revertMessage","kind":"calls","metadata":{"unresolvedName":"revertMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"symbol-name:setRevertedMessage","kind":"calls","metadata":{"unresolvedName":"setRevertedMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unrevertSession","kind":"calls","metadata":{"unresolvedName":"unrevertSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"symbol-name:setSessionRevertState","kind":"calls","metadata":{"unresolvedName":"setSessionRevertState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"symbol-name:setRevertHistory","kind":"calls","metadata":{"unresolvedName":"setRevertHistory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessages","kind":"calls","metadata":{"unresolvedName":"getSessionMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"external:apiMessages.findIndex","kind":"calls","metadata":{"unresolvedName":"apiMessages.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"external:apiMessages.slice","kind":"calls","metadata":{"unresolvedName":"apiMessages.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setMessages","kind":"calls","metadata":{"unresolvedName":"setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"external:filteredApiMessages.map","kind":"calls","metadata":{"unresolvedName":"filteredApiMessages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"external:apiMessages.map","kind":"calls","metadata":{"unresolvedName":"apiMessages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"symbol-name:revertErrorHandler","kind":"calls","metadata":{"unresolvedName":"revertErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unrevertSession","kind":"calls","metadata":{"unresolvedName":"unrevertSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"symbol-name:setSessionRevertState","kind":"calls","metadata":{"unresolvedName":"setSessionRevertState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"symbol-name:setRevertHistory","kind":"calls","metadata":{"unresolvedName":"setRevertHistory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"symbol-name:setRevertedMessage","kind":"calls","metadata":{"unresolvedName":"setRevertedMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessages","kind":"calls","metadata":{"unresolvedName":"getSessionMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setMessages","kind":"calls","metadata":{"unresolvedName":"setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"external:apiMessages.map","kind":"calls","metadata":{"unresolvedName":"apiMessages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"symbol-name:revertErrorHandler","kind":"calls","metadata":{"unresolvedName":"revertErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"symbol-name:setRevertedMessage","kind":"calls","metadata":{"unresolvedName":"setRevertedMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRevertState.ts:","to":"symbol-name:setRevertHistory","kind":"calls","metadata":{"unresolvedName":"setRevertHistory"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/storage.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:decodeDirectoryParam","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:decodeDirectoryParam","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:decodeDirectoryParam","to":"symbol-name:decodeURIComponent","kind":"calls","metadata":{"unresolvedName":"decodeURIComponent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:parseHash","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:parseHash","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:parseHash","to":"external:hash.split","kind":"calls","metadata":{"unresolvedName":"hash.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:parseHash","to":"external:queryString.match","kind":"calls","metadata":{"unresolvedName":"queryString.match"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:parseHash","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:parseHash","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:decodeDirectoryParam","kind":"calls","metadata":{"unresolvedName":"decodeDirectoryParam"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:parseHash","to":"external:serverStorage.get","kind":"calls","metadata":{"unresolvedName":"serverStorage.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:parseHash","to":"external:path.match","kind":"calls","metadata":{"unresolvedName":"path.match"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:buildHash","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:buildHash","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:buildHash","to":"symbol-name:encodeURIComponent","kind":"calls","metadata":{"unresolvedName":"encodeURIComponent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:isSameRoute","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:isSameRoute","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:ensureSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:ensureSnapshot","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:ensureSnapshot","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:parseHash","kind":"calls","metadata":{"unresolvedName":"parseHash"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:emitRoute","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:emitRoute","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:emitRoute","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:ensureSnapshot","kind":"calls","metadata":{"unresolvedName":"ensureSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:emitRoute","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:isSameRoute","kind":"calls","metadata":{"unresolvedName":"isSameRoute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:emitRoute","to":"symbol-name:listener","kind":"calls","metadata":{"unresolvedName":"listener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:syncRouteFromHash","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:syncRouteFromHash","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:syncRouteFromHash","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:emitRoute","kind":"calls","metadata":{"unresolvedName":"emitRoute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:syncRouteFromHash","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:parseHash","kind":"calls","metadata":{"unresolvedName":"parseHash"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:ensureWindowListener","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:ensureWindowListener","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:ensureWindowListener","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:parseHash","kind":"calls","metadata":{"unresolvedName":"parseHash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:ensureWindowListener","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:subscribe","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:subscribe","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:subscribe","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:ensureWindowListener","kind":"calls","metadata":{"unresolvedName":"ensureWindowListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:subscribe","to":"external:listeners.add","kind":"calls","metadata":{"unresolvedName":"listeners.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:subscribe","to":"external:listeners.delete","kind":"calls","metadata":{"unresolvedName":"listeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"external:listeners.delete","kind":"calls","metadata":{"unresolvedName":"listeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:getSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:getSnapshot","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:getSnapshot","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:ensureWindowListener","kind":"calls","metadata":{"unresolvedName":"ensureWindowListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:getSnapshot","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:ensureSnapshot","kind":"calls","metadata":{"unresolvedName":"ensureSnapshot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:useRouter","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:useRouter","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:useRouter","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:useRouter","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useIsMobile.ts:useIsMobile","kind":"calls","metadata":{"unresolvedName":"useIsMobile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:useRouter","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:useRouter","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:useRouter","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:useRouter","to":"symbol-name:getSnapshot","kind":"calls","metadata":{"unresolvedName":"getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:useRouter","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:useRouter","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:buildHash","kind":"calls","metadata":{"unresolvedName":"buildHash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:useRouter","to":"external:window.history.replaceState","kind":"calls","metadata":{"unresolvedName":"window.history.replaceState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:useRouter","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:emitRoute","kind":"calls","metadata":{"unresolvedName":"emitRoute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:useRouter","to":"external:serverStorage.set","kind":"calls","metadata":{"unresolvedName":"serverStorage.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:useRouter","to":"external:serverStorage.remove","kind":"calls","metadata":{"unresolvedName":"serverStorage.remove"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"symbol-name:getSnapshot","kind":"calls","metadata":{"unresolvedName":"getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:buildHash","kind":"calls","metadata":{"unresolvedName":"buildHash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"external:window.history.replaceState","kind":"calls","metadata":{"unresolvedName":"window.history.replaceState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:emitRoute","kind":"calls","metadata":{"unresolvedName":"emitRoute"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"symbol-name:getSnapshot","kind":"calls","metadata":{"unresolvedName":"getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:buildHash","kind":"calls","metadata":{"unresolvedName":"buildHash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"external:window.history.replaceState","kind":"calls","metadata":{"unresolvedName":"window.history.replaceState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:emitRoute","kind":"calls","metadata":{"unresolvedName":"emitRoute"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"symbol-name:getSnapshot","kind":"calls","metadata":{"unresolvedName":"getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:buildHash","kind":"calls","metadata":{"unresolvedName":"buildHash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"external:window.history.replaceState","kind":"calls","metadata":{"unresolvedName":"window.history.replaceState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:emitRoute","kind":"calls","metadata":{"unresolvedName":"emitRoute"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:buildHash","kind":"calls","metadata":{"unresolvedName":"buildHash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"external:serverStorage.set","kind":"calls","metadata":{"unresolvedName":"serverStorage.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"external:serverStorage.remove","kind":"calls","metadata":{"unresolvedName":"serverStorage.remove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:emitRoute","kind":"calls","metadata":{"unresolvedName":"emitRoute"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"symbol-name:getSnapshot","kind":"calls","metadata":{"unresolvedName":"getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:buildHash","kind":"calls","metadata":{"unresolvedName":"buildHash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"external:serverStorage.set","kind":"calls","metadata":{"unresolvedName":"serverStorage.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"external:serverStorage.remove","kind":"calls","metadata":{"unresolvedName":"serverStorage.remove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"external:window.history.replaceState","kind":"calls","metadata":{"unresolvedName":"window.history.replaceState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useRouter.ts:emitRoute","kind":"calls","metadata":{"unresolvedName":"emitRoute"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:useServerStore","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:useServerStore","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:useServerStore","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:useServerStore","to":"external:serverStore.subscribe.bind","kind":"calls","metadata":{"unresolvedName":"serverStore.subscribe.bind"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:useServerStore","to":"external:serverStore.getServers","kind":"calls","metadata":{"unresolvedName":"serverStore.getServers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:useServerStore","to":"external:serverStore.getActiveServer","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:useServerStore","to":"external:serverStore.getAllHealth","kind":"calls","metadata":{"unresolvedName":"serverStore.getAllHealth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:useServerStore","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:useServerStore","to":"external:serverStore.addServer","kind":"calls","metadata":{"unresolvedName":"serverStore.addServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:useServerStore","to":"external:serverStore.updateServer","kind":"calls","metadata":{"unresolvedName":"serverStore.updateServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:useServerStore","to":"external:serverStore.removeServer","kind":"calls","metadata":{"unresolvedName":"serverStore.removeServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:useServerStore","to":"external:serverStore.setActiveServer","kind":"calls","metadata":{"unresolvedName":"serverStore.setActiveServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:useServerStore","to":"external:serverStore.checkHealth","kind":"calls","metadata":{"unresolvedName":"serverStore.checkHealth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:useServerStore","to":"external:serverStore.checkAllHealth","kind":"calls","metadata":{"unresolvedName":"serverStore.checkAllHealth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:useServerStore","to":"external:healthMap.get","kind":"calls","metadata":{"unresolvedName":"healthMap.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","to":"external:serverStore.addServer","kind":"calls","metadata":{"unresolvedName":"serverStore.addServer"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","to":"external:serverStore.updateServer","kind":"calls","metadata":{"unresolvedName":"serverStore.updateServer"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","to":"external:serverStore.removeServer","kind":"calls","metadata":{"unresolvedName":"serverStore.removeServer"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","to":"external:serverStore.setActiveServer","kind":"calls","metadata":{"unresolvedName":"serverStore.setActiveServer"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","to":"external:serverStore.checkHealth","kind":"calls","metadata":{"unresolvedName":"serverStore.checkHealth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","to":"external:serverStore.checkAllHealth","kind":"calls","metadata":{"unresolvedName":"serverStore.checkAllHealth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useServerStore.ts:","to":"external:healthMap.get","kind":"calls","metadata":{"unresolvedName":"healthMap.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:useSessionContextUsage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:useSessionContextUsage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:useSessionContextUsage","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:useSessionContextUsage","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:useSessionContextUsage","to":"symbol-name:setUsage","kind":"calls","metadata":{"unresolvedName":"setUsage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:useSessionContextUsage","to":"external:getSessionContextUsage(sessionId)\n .then","kind":"calls","metadata":{"unresolvedName":"getSessionContextUsage(sessionId)\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:useSessionContextUsage","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionContextUsage","kind":"calls","metadata":{"unresolvedName":"getSessionContextUsage"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:","to":"symbol-name:setUsage","kind":"calls","metadata":{"unresolvedName":"setUsage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:","to":"external:getSessionContextUsage(sessionId)\n .then","kind":"calls","metadata":{"unresolvedName":"getSessionContextUsage(sessionId)\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessionContextUsage","kind":"calls","metadata":{"unresolvedName":"getSessionContextUsage"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:","to":"symbol-name:setUsage","kind":"calls","metadata":{"unresolvedName":"setUsage"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:","to":"symbol-name:setUsage","kind":"calls","metadata":{"unresolvedName":"setUsage"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionContextUsage.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/logger.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:mergeWithLocalStreamingMessages","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:mergeWithLocalStreamingMessages","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:mergeWithLocalStreamingMessages","to":"external:apiMessages.map","kind":"calls","metadata":{"unresolvedName":"apiMessages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:mergeWithLocalStreamingMessages","to":"external:localState.messages.filter(m => !apiIds.has(m.info.id)).map","kind":"calls","metadata":{"unresolvedName":"localState.messages.filter(m => !apiIds.has(m.info.id)).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:mergeWithLocalStreamingMessages","to":"external:localState.messages.filter","kind":"calls","metadata":{"unresolvedName":"localState.messages.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:mergeWithLocalStreamingMessages","to":"external:apiIds.has","kind":"calls","metadata":{"unresolvedName":"apiIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:mergeWithLocalStreamingMessages","to":"external:[...apiMessages, ...localOnly].sort","kind":"calls","metadata":{"unresolvedName":"[...apiMessages, ...localOnly].sort"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:loadSequenceRef.current.get","kind":"calls","metadata":{"unresolvedName":"loadSequenceRef.current.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:loadSequenceRef.current.set","kind":"calls","metadata":{"unresolvedName":"loadSequenceRef.current.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:Promise.all","kind":"calls","metadata":{"unresolvedName":"Promise.all"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:getSession(sid, dir).catch","kind":"calls","metadata":{"unresolvedName":"getSession(sid, dir).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSession","kind":"calls","metadata":{"unresolvedName":"getSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:getSessionMessages(sid, INITIAL_MESSAGE_LIMIT, dir)\r\n .then","kind":"calls","metadata":{"unresolvedName":"getSessionMessages(sid, INITIAL_MESSAGE_LIMIT, dir)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessages","kind":"calls","metadata":{"unresolvedName":"getSessionMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"symbol-name:isStale","kind":"calls","metadata":{"unresolvedName":"isStale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:cursorRef.current.set","kind":"calls","metadata":{"unresolvedName":"cursorRef.current.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:messageStore.updateSessionMetadata","kind":"calls","metadata":{"unresolvedName":"messageStore.updateSessionMetadata"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"symbol-name:onLoadComplete","kind":"calls","metadata":{"unresolvedName":"onLoadComplete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:messageStore.setLoadState","kind":"calls","metadata":{"unresolvedName":"messageStore.setLoadState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:mergeWithLocalStreamingMessages","kind":"calls","metadata":{"unresolvedName":"mergeWithLocalStreamingMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:messageStore.setMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"symbol-name:sessionErrorHandler","kind":"calls","metadata":{"unresolvedName":"sessionErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"symbol-name:onError","kind":"calls","metadata":{"unresolvedName":"onError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:cursorRef.current.get","kind":"calls","metadata":{"unresolvedName":"cursorRef.current.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:latestState.messages.map","kind":"calls","metadata":{"unresolvedName":"latestState.messages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:apiMessages\r\n .filter(m => !existingIds.has(m.info.id))\r\n .sort","kind":"calls","metadata":{"unresolvedName":"apiMessages\r\n .filter(m => !existingIds.has(m.info.id))\r\n .sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:apiMessages\r\n .filter","kind":"calls","metadata":{"unresolvedName":"apiMessages\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:existingIds.has","kind":"calls","metadata":{"unresolvedName":"existingIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:messageStore.prependMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.prependMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:revertMessage","kind":"calls","metadata":{"unresolvedName":"revertMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:state.messages.findIndex","kind":"calls","metadata":{"unresolvedName":"state.messages.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:state.messages.slice(revertIndex).filter","kind":"calls","metadata":{"unresolvedName":"state.messages.slice(revertIndex).filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:state.messages.slice","kind":"calls","metadata":{"unresolvedName":"state.messages.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:revertedUserMessages.map","kind":"calls","metadata":{"unresolvedName":"revertedUserMessages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:extractUserMessageContent","kind":"calls","metadata":{"unresolvedName":"extractUserMessageContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:messageStore.setRevertState","kind":"calls","metadata":{"unresolvedName":"messageStore.setRevertState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:history.slice","kind":"calls","metadata":{"unresolvedName":"history.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unrevertSession","kind":"calls","metadata":{"unresolvedName":"unrevertSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:logger.log","kind":"calls","metadata":{"unresolvedName":"logger.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:useSessionManager","to":"external:loadSessionRef.current","kind":"calls","metadata":{"unresolvedName":"loadSessionRef.current"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:loadSequenceRef.current.get","kind":"calls","metadata":{"unresolvedName":"loadSequenceRef.current.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:loadSequenceRef.current.set","kind":"calls","metadata":{"unresolvedName":"loadSequenceRef.current.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:Promise.all","kind":"calls","metadata":{"unresolvedName":"Promise.all"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:getSession(sid, dir).catch","kind":"calls","metadata":{"unresolvedName":"getSession(sid, dir).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSession","kind":"calls","metadata":{"unresolvedName":"getSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:getSessionMessages(sid, INITIAL_MESSAGE_LIMIT, dir)\r\n .then","kind":"calls","metadata":{"unresolvedName":"getSessionMessages(sid, INITIAL_MESSAGE_LIMIT, dir)\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessages","kind":"calls","metadata":{"unresolvedName":"getSessionMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"symbol-name:isStale","kind":"calls","metadata":{"unresolvedName":"isStale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:cursorRef.current.set","kind":"calls","metadata":{"unresolvedName":"cursorRef.current.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:messageStore.updateSessionMetadata","kind":"calls","metadata":{"unresolvedName":"messageStore.updateSessionMetadata"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"symbol-name:onLoadComplete","kind":"calls","metadata":{"unresolvedName":"onLoadComplete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:messageStore.setLoadState","kind":"calls","metadata":{"unresolvedName":"messageStore.setLoadState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:mergeWithLocalStreamingMessages","kind":"calls","metadata":{"unresolvedName":"mergeWithLocalStreamingMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:messageStore.setMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"symbol-name:sessionErrorHandler","kind":"calls","metadata":{"unresolvedName":"sessionErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"symbol-name:onError","kind":"calls","metadata":{"unresolvedName":"onError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"symbol-name:isStale","kind":"calls","metadata":{"unresolvedName":"isStale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:cursorRef.current.set","kind":"calls","metadata":{"unresolvedName":"cursorRef.current.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:messageStore.updateSessionMetadata","kind":"calls","metadata":{"unresolvedName":"messageStore.updateSessionMetadata"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:cursorRef.current.get","kind":"calls","metadata":{"unresolvedName":"cursorRef.current.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:getSessionMessages","kind":"calls","metadata":{"unresolvedName":"getSessionMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:cursorRef.current.set","kind":"calls","metadata":{"unresolvedName":"cursorRef.current.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:latestState.messages.map","kind":"calls","metadata":{"unresolvedName":"latestState.messages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:apiMessages\r\n .filter(m => !existingIds.has(m.info.id))\r\n .sort","kind":"calls","metadata":{"unresolvedName":"apiMessages\r\n .filter(m => !existingIds.has(m.info.id))\r\n .sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:apiMessages\r\n .filter","kind":"calls","metadata":{"unresolvedName":"apiMessages\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:existingIds.has","kind":"calls","metadata":{"unresolvedName":"existingIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:messageStore.prependMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.prependMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"symbol-name:sessionErrorHandler","kind":"calls","metadata":{"unresolvedName":"sessionErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:revertMessage","kind":"calls","metadata":{"unresolvedName":"revertMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:state.messages.findIndex","kind":"calls","metadata":{"unresolvedName":"state.messages.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:state.messages.slice(revertIndex).filter","kind":"calls","metadata":{"unresolvedName":"state.messages.slice(revertIndex).filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:state.messages.slice","kind":"calls","metadata":{"unresolvedName":"state.messages.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:revertedUserMessages.map","kind":"calls","metadata":{"unresolvedName":"revertedUserMessages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:extractUserMessageContent","kind":"calls","metadata":{"unresolvedName":"extractUserMessageContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:messageStore.setRevertState","kind":"calls","metadata":{"unresolvedName":"messageStore.setRevertState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"symbol-name:sessionErrorHandler","kind":"calls","metadata":{"unresolvedName":"sessionErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/message.ts:extractUserMessageContent","kind":"calls","metadata":{"unresolvedName":"extractUserMessageContent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:history.slice","kind":"calls","metadata":{"unresolvedName":"history.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:revertMessage","kind":"calls","metadata":{"unresolvedName":"revertMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:messageStore.setRevertState","kind":"calls","metadata":{"unresolvedName":"messageStore.setRevertState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unrevertSession","kind":"calls","metadata":{"unresolvedName":"unrevertSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"symbol-name:sessionErrorHandler","kind":"calls","metadata":{"unresolvedName":"sessionErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:unrevertSession","kind":"calls","metadata":{"unresolvedName":"unrevertSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:messageStore.setRevertState","kind":"calls","metadata":{"unresolvedName":"messageStore.setRevertState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"symbol-name:sessionErrorHandler","kind":"calls","metadata":{"unresolvedName":"sessionErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:messageStore.setRevertState","kind":"calls","metadata":{"unresolvedName":"messageStore.setRevertState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:cursorRef.current.get","kind":"calls","metadata":{"unresolvedName":"cursorRef.current.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:cursorRef.current.set","kind":"calls","metadata":{"unresolvedName":"cursorRef.current.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:logger.log","kind":"calls","metadata":{"unresolvedName":"logger.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionManager.ts:","to":"external:loadSessionRef.current","kind":"calls","metadata":{"unresolvedName":"loadSessionRef.current"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/event.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:createDeferred","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:createDeferred","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:makeSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:makeSession","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:getSessionsMock.mockReset","kind":"calls","metadata":{"unresolvedName":"getSessionsMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:createSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"createSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:deleteSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"deleteSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:subscribeToEventsMock.mockReset","kind":"calls","metadata":{"unresolvedName":"subscribeToEventsMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:getSessionsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getSessionsMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:createSessionMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"createSessionMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:makeSession","kind":"calls","metadata":{"unresolvedName":"makeSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:deleteSessionMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"deleteSessionMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:subscribeToEventsMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"subscribeToEventsMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","kind":"calls","metadata":{"unresolvedName":"useSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:expect(getSessionsMock).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(getSessionsMock).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:expect(getSessionsMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(getSessionsMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:expect(result.current.sessions).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(result.current.sessions).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:result.current.remove","kind":"calls","metadata":{"unresolvedName":"result.current.remove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:expect(deleteSessionMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(deleteSessionMock).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:latestEventCallbacks.onSessionCreated","kind":"calls","metadata":{"unresolvedName":"latestEventCallbacks.onSessionCreated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:expect(result.current.sessions.map(session => session.id)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(result.current.sessions.map(session => session.id)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:result.current.sessions.map","kind":"calls","metadata":{"unresolvedName":"result.current.sessions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:createDeferred","kind":"calls","metadata":{"unresolvedName":"createDeferred"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:getSessionsMock\r\n .mockImplementationOnce","kind":"calls","metadata":{"unresolvedName":"getSessionsMock\r\n .mockImplementationOnce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:result.current.setSearch","kind":"calls","metadata":{"unresolvedName":"result.current.setSearch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:firstRequest.resolve","kind":"calls","metadata":{"unresolvedName":"firstRequest.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:latestEventCallbacks.onReconnected","kind":"calls","metadata":{"unresolvedName":"latestEventCallbacks.onReconnected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:expect(getSessionsMock).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(getSessionsMock).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:secondRequest.resolve","kind":"calls","metadata":{"unresolvedName":"secondRequest.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:vi.useFakeTimers","kind":"calls","metadata":{"unresolvedName":"vi.useFakeTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:getSessionsMock.mockReset","kind":"calls","metadata":{"unresolvedName":"getSessionsMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:createSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"createSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:deleteSessionMock.mockReset","kind":"calls","metadata":{"unresolvedName":"deleteSessionMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:subscribeToEventsMock.mockReset","kind":"calls","metadata":{"unresolvedName":"subscribeToEventsMock.mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:getSessionsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getSessionsMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:createSessionMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"createSessionMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:makeSession","kind":"calls","metadata":{"unresolvedName":"makeSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:deleteSessionMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"deleteSessionMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:subscribeToEventsMock.mockImplementation","kind":"calls","metadata":{"unresolvedName":"subscribeToEventsMock.mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:vi.useRealTimers","kind":"calls","metadata":{"unresolvedName":"vi.useRealTimers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","kind":"calls","metadata":{"unresolvedName":"useSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:expect(getSessionsMock).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(getSessionsMock).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:rerender","kind":"calls","metadata":{"unresolvedName":"rerender"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:expect(getSessionsMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(getSessionsMock).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:getSessionsMock.mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"getSessionsMock.mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:makeSession","kind":"calls","metadata":{"unresolvedName":"makeSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","kind":"calls","metadata":{"unresolvedName":"useSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:expect(result.current.sessions).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(result.current.sessions).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:result.current.remove","kind":"calls","metadata":{"unresolvedName":"result.current.remove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:expect(deleteSessionMock).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(deleteSessionMock).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:result.current.remove","kind":"calls","metadata":{"unresolvedName":"result.current.remove"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","kind":"calls","metadata":{"unresolvedName":"useSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:latestEventCallbacks.onSessionCreated","kind":"calls","metadata":{"unresolvedName":"latestEventCallbacks.onSessionCreated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:makeSession","kind":"calls","metadata":{"unresolvedName":"makeSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:expect(result.current.sessions.map(session => session.id)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(result.current.sessions.map(session => session.id)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:result.current.sessions.map","kind":"calls","metadata":{"unresolvedName":"result.current.sessions.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:latestEventCallbacks.onSessionCreated","kind":"calls","metadata":{"unresolvedName":"latestEventCallbacks.onSessionCreated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:makeSession","kind":"calls","metadata":{"unresolvedName":"makeSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:createDeferred","kind":"calls","metadata":{"unresolvedName":"createDeferred"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:getSessionsMock\r\n .mockImplementationOnce","kind":"calls","metadata":{"unresolvedName":"getSessionsMock\r\n .mockImplementationOnce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","kind":"calls","metadata":{"unresolvedName":"useSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:result.current.setSearch","kind":"calls","metadata":{"unresolvedName":"result.current.setSearch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:firstRequest.resolve","kind":"calls","metadata":{"unresolvedName":"firstRequest.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:makeSession","kind":"calls","metadata":{"unresolvedName":"makeSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:latestEventCallbacks.onReconnected","kind":"calls","metadata":{"unresolvedName":"latestEventCallbacks.onReconnected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:expect(getSessionsMock).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(getSessionsMock).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:secondRequest.resolve","kind":"calls","metadata":{"unresolvedName":"secondRequest.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:vi.runAllTimers","kind":"calls","metadata":{"unresolvedName":"vi.runAllTimers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:result.current.setSearch","kind":"calls","metadata":{"unresolvedName":"result.current.setSearch"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:vi.advanceTimersByTime","kind":"calls","metadata":{"unresolvedName":"vi.advanceTimersByTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:firstRequest.resolve","kind":"calls","metadata":{"unresolvedName":"firstRequest.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:makeSession","kind":"calls","metadata":{"unresolvedName":"makeSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:latestEventCallbacks.onReconnected","kind":"calls","metadata":{"unresolvedName":"latestEventCallbacks.onReconnected"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:secondRequest.resolve","kind":"calls","metadata":{"unresolvedName":"secondRequest.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:makeSession","kind":"calls","metadata":{"unresolvedName":"makeSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.test.tsx:","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"external:directory.replace(/\\\\/g, '/').replace","kind":"calls","metadata":{"unresolvedName":"directory.replace(/\\\\/g, '/').replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"external:directory.replace","kind":"calls","metadata":{"unresolvedName":"directory.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"symbol-name:setIsLoadingMore","kind":"calls","metadata":{"unresolvedName":"setIsLoadingMore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessions","kind":"calls","metadata":{"unresolvedName":"getSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:autoDetectPathStyle","kind":"calls","metadata":{"unresolvedName":"autoDetectPathStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"symbol-name:setSessions","kind":"calls","metadata":{"unresolvedName":"setSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"symbol-name:setHasMore","kind":"calls","metadata":{"unresolvedName":"setHasMore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"symbol-name:fetchSessions","kind":"calls","metadata":{"unresolvedName":"fetchSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"symbol-name:matchesDirectory","kind":"calls","metadata":{"unresolvedName":"matchesDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"external:fetchSessionsRef.current","kind":"calls","metadata":{"unresolvedName":"fetchSessionsRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"external:prev.some","kind":"calls","metadata":{"unresolvedName":"prev.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"external:prev.findIndex","kind":"calls","metadata":{"unresolvedName":"prev.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:createSession","kind":"calls","metadata":{"unresolvedName":"createSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:deleteSession","kind":"calls","metadata":{"unresolvedName":"deleteSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:useSessions","to":"external:prev.map","kind":"calls","metadata":{"unresolvedName":"prev.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"symbol-name:setIsLoadingMore","kind":"calls","metadata":{"unresolvedName":"setIsLoadingMore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:getSessions","kind":"calls","metadata":{"unresolvedName":"getSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:autoDetectPathStyle","kind":"calls","metadata":{"unresolvedName":"autoDetectPathStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"symbol-name:setSessions","kind":"calls","metadata":{"unresolvedName":"setSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"symbol-name:setHasMore","kind":"calls","metadata":{"unresolvedName":"setHasMore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"symbol-name:setIsLoadingMore","kind":"calls","metadata":{"unresolvedName":"setIsLoadingMore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"symbol-name:fetchSessions","kind":"calls","metadata":{"unresolvedName":"fetchSessions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"symbol-name:fetchSessions","kind":"calls","metadata":{"unresolvedName":"fetchSessions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:subscribeToEvents","kind":"calls","metadata":{"unresolvedName":"subscribeToEvents"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"symbol-name:matchesDirectory","kind":"calls","metadata":{"unresolvedName":"matchesDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"external:fetchSessionsRef.current","kind":"calls","metadata":{"unresolvedName":"fetchSessionsRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"symbol-name:setSessions","kind":"calls","metadata":{"unresolvedName":"setSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"external:prev.some","kind":"calls","metadata":{"unresolvedName":"prev.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"external:prev.findIndex","kind":"calls","metadata":{"unresolvedName":"prev.findIndex"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionCreated","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionCreated","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionCreated","to":"symbol-name:matchesDirectory","kind":"calls","metadata":{"unresolvedName":"matchesDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionCreated","to":"external:fetchSessionsRef.current","kind":"calls","metadata":{"unresolvedName":"fetchSessionsRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionCreated","to":"symbol-name:setSessions","kind":"calls","metadata":{"unresolvedName":"setSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionCreated","to":"external:prev.some","kind":"calls","metadata":{"unresolvedName":"prev.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"external:prev.some","kind":"calls","metadata":{"unresolvedName":"prev.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionUpdated","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionUpdated","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionUpdated","to":"symbol-name:matchesDirectory","kind":"calls","metadata":{"unresolvedName":"matchesDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionUpdated","to":"external:fetchSessionsRef.current","kind":"calls","metadata":{"unresolvedName":"fetchSessionsRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionUpdated","to":"symbol-name:setSessions","kind":"calls","metadata":{"unresolvedName":"setSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionUpdated","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionUpdated","to":"external:prev.findIndex","kind":"calls","metadata":{"unresolvedName":"prev.findIndex"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"external:prev.findIndex","kind":"calls","metadata":{"unresolvedName":"prev.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"symbol-name:matchesDirectory","kind":"calls","metadata":{"unresolvedName":"matchesDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionDeleted","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionDeleted","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionDeleted","to":"symbol-name:setSessions","kind":"calls","metadata":{"unresolvedName":"setSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onSessionDeleted","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onReconnected","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onReconnected","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onReconnected","to":"symbol-name:setSessions","kind":"calls","metadata":{"unresolvedName":"setSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:onReconnected","to":"external:fetchSessionsRef.current","kind":"calls","metadata":{"unresolvedName":"fetchSessionsRef.current"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"symbol-name:fetchSessions","kind":"calls","metadata":{"unresolvedName":"fetchSessions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"symbol-name:fetchSessions","kind":"calls","metadata":{"unresolvedName":"fetchSessions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:createSession","kind":"calls","metadata":{"unresolvedName":"createSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"external:fetchSessionsRef.current","kind":"calls","metadata":{"unresolvedName":"fetchSessionsRef.current"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"symbol-name:setSessions","kind":"calls","metadata":{"unresolvedName":"setSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"external:prev.some","kind":"calls","metadata":{"unresolvedName":"prev.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"external:prev.some","kind":"calls","metadata":{"unresolvedName":"prev.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/session.ts:deleteSession","kind":"calls","metadata":{"unresolvedName":"deleteSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"symbol-name:setSessions","kind":"calls","metadata":{"unresolvedName":"setSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"symbol-name:setSessions","kind":"calls","metadata":{"unresolvedName":"setSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"external:prev.map","kind":"calls","metadata":{"unresolvedName":"prev.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"symbol-name:setSessions","kind":"calls","metadata":{"unresolvedName":"setSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessions.ts:","to":"external:prev.filter","kind":"calls","metadata":{"unresolvedName":"prev.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/sessionStatsUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"external:expect(formatTokens(999)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatTokens(999)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatTokens","kind":"calls","metadata":{"unresolvedName":"formatTokens"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"external:expect(formatTokens(1200)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatTokens(1200)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"external:expect(formatTokens(15000)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatTokens(15000)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"external:expect(formatTokens(1500000)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatTokens(1500000)).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"external:expect(formatTokens(999)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatTokens(999)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatTokens","kind":"calls","metadata":{"unresolvedName":"formatTokens"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"external:expect(formatTokens(1200)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatTokens(1200)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatTokens","kind":"calls","metadata":{"unresolvedName":"formatTokens"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"external:expect(formatTokens(15000)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatTokens(15000)).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"external:expect(formatTokens(1500000)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatTokens(1500000)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/message/MessageRenderer.tsx:formatTokens","kind":"calls","metadata":{"unresolvedName":"formatTokens"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"external:expect(formatCost(0)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatCost(0)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCost","kind":"calls","metadata":{"unresolvedName":"formatCost"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"external:expect(formatCost(0.0004)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatCost(0.0004)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"external:expect(formatCost(0.009)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatCost(0.009)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"external:expect(formatCost(0.5)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatCost(0.5)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"external:expect(formatCost(2.345)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatCost(2.345)).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"external:expect(formatCost(0)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatCost(0)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCost","kind":"calls","metadata":{"unresolvedName":"formatCost"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"external:expect(formatCost(0.0004)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatCost(0.0004)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCost","kind":"calls","metadata":{"unresolvedName":"formatCost"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"external:expect(formatCost(0.009)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatCost(0.009)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCost","kind":"calls","metadata":{"unresolvedName":"formatCost"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"external:expect(formatCost(0.5)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatCost(0.5)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.ts:","to":"external:expect(formatCost(2.345)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatCost(2.345)).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:useMessageStoreMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useMessageStoreMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:useSessionStats","kind":"calls","metadata":{"unresolvedName":"useSessionStats"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextEstimated).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextEstimated).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextUsed).toBeLessThan","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextUsed).toBeLessThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextUsed).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextUsed).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextUsed).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextUsed).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextLimit).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextLimit).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextPercent).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextPercent).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextKnown).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextKnown).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextSource).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextSource).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.providerID).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.providerID).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.modelID).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.modelID).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.modelName).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.modelName).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.outputLimit).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.outputLimit).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextStatus).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextStatus).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextNotice).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextNotice).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(warning.result.current.contextStatus).toBe","kind":"calls","metadata":{"unresolvedName":"expect(warning.result.current.contextStatus).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(warning.result.current.contextNotice).toBe","kind":"calls","metadata":{"unresolvedName":"expect(warning.result.current.contextNotice).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(danger.result.current.contextStatus).toBe","kind":"calls","metadata":{"unresolvedName":"expect(danger.result.current.contextStatus).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(danger.result.current.contextNotice).toBe","kind":"calls","metadata":{"unresolvedName":"expect(danger.result.current.contextNotice).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:useMessageStoreMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useMessageStoreMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:useSessionStats","kind":"calls","metadata":{"unresolvedName":"useSessionStats"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextEstimated).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextEstimated).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextUsed).toBeLessThan","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextUsed).toBeLessThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextUsed).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextUsed).toBeGreaterThan"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:useMessageStoreMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useMessageStoreMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:useSessionStats","kind":"calls","metadata":{"unresolvedName":"useSessionStats"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextUsed).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextUsed).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextLimit).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextLimit).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextPercent).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextPercent).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextEstimated).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextEstimated).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextKnown).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextKnown).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextSource).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextSource).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.providerID).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.providerID).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.modelID).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.modelID).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.modelName).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.modelName).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.outputLimit).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.outputLimit).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:useMessageStoreMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useMessageStoreMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:useSessionStats","kind":"calls","metadata":{"unresolvedName":"useSessionStats"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextUsed).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextUsed).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextLimit).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextLimit).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextPercent).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextPercent).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextEstimated).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextEstimated).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextKnown).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextKnown).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextSource).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextSource).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextStatus).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextStatus).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(result.current.contextNotice).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.contextNotice).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:useMessageStoreMock.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"useMessageStoreMock.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:useSessionStats","kind":"calls","metadata":{"unresolvedName":"useSessionStats"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(warning.result.current.contextStatus).toBe","kind":"calls","metadata":{"unresolvedName":"expect(warning.result.current.contextStatus).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(warning.result.current.contextNotice).toBe","kind":"calls","metadata":{"unresolvedName":"expect(warning.result.current.contextNotice).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(danger.result.current.contextStatus).toBe","kind":"calls","metadata":{"unresolvedName":"expect(danger.result.current.contextStatus).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.test.tsx:","to":"external:expect(danger.result.current.contextNotice).toBe","kind":"calls","metadata":{"unresolvedName":"expect(danger.result.current.contextNotice).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:estimateTokens","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:estimateTokens","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:estimateTokens","to":"external:Math.ceil","kind":"calls","metadata":{"unresolvedName":"Math.ceil"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:charsFromUserPart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:charsFromUserPart","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:charsFromAssistantPart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:charsFromAssistantPart","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:charsFromAssistantPart","to":"external:Object.keys","kind":"calls","metadata":{"unresolvedName":"Object.keys"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:estimateCurrentContext","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:estimateCurrentContext","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:estimateCurrentContext","to":"external:[...messages].reverse().find","kind":"calls","metadata":{"unresolvedName":"[...messages].reverse().find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:estimateCurrentContext","to":"external:[...messages].reverse","kind":"calls","metadata":{"unresolvedName":"[...messages].reverse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:estimateCurrentContext","to":"external:((system.info as { system?: string }).system ?? '').trim","kind":"calls","metadata":{"unresolvedName":"((system.info as { system?: string }).system ?? '').trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:estimateCurrentContext","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:charsFromUserPart","kind":"calls","metadata":{"unresolvedName":"charsFromUserPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:estimateCurrentContext","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:charsFromAssistantPart","kind":"calls","metadata":{"unresolvedName":"charsFromAssistantPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:estimateCurrentContext","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:estimateTokens","kind":"calls","metadata":{"unresolvedName":"estimateTokens"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:shouldUseEstimatedContext","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:shouldUseEstimatedContext","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:shouldUseEstimatedContext","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:shouldUseEstimatedContext","to":"external:msg.parts.some","kind":"calls","metadata":{"unresolvedName":"msg.parts.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:getContextStatus","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:getContextStatus","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:useSessionStats","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:useSessionStats","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:useSessionStats","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStore","kind":"calls","metadata":{"unresolvedName":"useMessageStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:useSessionStats","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:useSessionStats","to":"symbol-name:tokenTotal","kind":"calls","metadata":{"unresolvedName":"tokenTotal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:useSessionStats","to":"external:Number.isFinite","kind":"calls","metadata":{"unresolvedName":"Number.isFinite"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:useSessionStats","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:useSessionStats","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:useSessionStats","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:getContextStatus","kind":"calls","metadata":{"unresolvedName":"getContextStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:useSessionStats","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:estimateCurrentContext","kind":"calls","metadata":{"unresolvedName":"estimateCurrentContext"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:useSessionStats","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:shouldUseEstimatedContext","kind":"calls","metadata":{"unresolvedName":"shouldUseEstimatedContext"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:","to":"symbol-name:tokenTotal","kind":"calls","metadata":{"unresolvedName":"tokenTotal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:","to":"external:Number.isFinite","kind":"calls","metadata":{"unresolvedName":"Number.isFinite"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:getContextStatus","kind":"calls","metadata":{"unresolvedName":"getContextStatus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:estimateCurrentContext","kind":"calls","metadata":{"unresolvedName":"estimateCurrentContext"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:shouldUseEstimatedContext","kind":"calls","metadata":{"unresolvedName":"shouldUseEstimatedContext"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:tokenTotal","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSessionStats.ts:tokenTotal","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","to":"external:expect(getShikiTheme(true).theme).toBe","kind":"calls","metadata":{"unresolvedName":"expect(getShikiTheme(true).theme).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getShikiTheme","kind":"calls","metadata":{"unresolvedName":"getShikiTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","to":"external:expect(getShikiTheme(false).theme).toBe","kind":"calls","metadata":{"unresolvedName":"expect(getShikiTheme(false).theme).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","to":"external:expect(getShikiTheme(true).key).toBe","kind":"calls","metadata":{"unresolvedName":"expect(getShikiTheme(true).key).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","to":"external:expect(getShikiTheme(false).key).toBe","kind":"calls","metadata":{"unresolvedName":"expect(getShikiTheme(false).key).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","to":"external:expect(getShikiTheme(true).theme).toBe","kind":"calls","metadata":{"unresolvedName":"expect(getShikiTheme(true).theme).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getShikiTheme","kind":"calls","metadata":{"unresolvedName":"getShikiTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","to":"external:expect(getShikiTheme(false).theme).toBe","kind":"calls","metadata":{"unresolvedName":"expect(getShikiTheme(false).theme).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","to":"external:expect(getShikiTheme(true).key).toBe","kind":"calls","metadata":{"unresolvedName":"expect(getShikiTheme(true).key).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getShikiTheme","kind":"calls","metadata":{"unresolvedName":"getShikiTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.test.ts:","to":"external:expect(getShikiTheme(false).key).toBe","kind":"calls","metadata":{"unresolvedName":"expect(getShikiTheme(false).key).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:get","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:get","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:get","to":"external:this.cache.get","kind":"calls","metadata":{"unresolvedName":"this.cache.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:get","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:set","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:set","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:set","to":"external:this.cache.has","kind":"calls","metadata":{"unresolvedName":"this.cache.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:set","to":"external:this.cache.get","kind":"calls","metadata":{"unresolvedName":"this.cache.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:set","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:set","to":"external:this.cache.delete","kind":"calls","metadata":{"unresolvedName":"this.cache.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:set","to":"external:this.cache.set","kind":"calls","metadata":{"unresolvedName":"this.cache.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:clear","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:clear","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:clear","to":"external:this.cache.clear","kind":"calls","metadata":{"unresolvedName":"this.cache.clear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:scheduleQueuedHighlight","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:scheduleQueuedHighlight","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:scheduleQueuedHighlight","to":"external:highlightQueue.push","kind":"calls","metadata":{"unresolvedName":"highlightQueue.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:scheduleQueuedHighlight","to":"symbol-name:task","kind":"calls","metadata":{"unresolvedName":"task"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:scheduleQueuedHighlight","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:runHighlightQueue","kind":"calls","metadata":{"unresolvedName":"runHighlightQueue"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"symbol-name:task","kind":"calls","metadata":{"unresolvedName":"task"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:runHighlightQueue","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:runHighlightQueue","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:runHighlightQueue","to":"external:highlightQueue.shift","kind":"calls","metadata":{"unresolvedName":"highlightQueue.shift"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:runHighlightQueue","to":"symbol-name:task","kind":"calls","metadata":{"unresolvedName":"task"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:runHighlightQueue","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:yieldToMainThread","kind":"calls","metadata":{"unresolvedName":"yieldToMainThread"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:yieldToMainThread","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:yieldToMainThread","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:yieldToMainThread","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getCacheKey","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getCacheKey","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getCacheKey","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:simpleHash","kind":"calls","metadata":{"unresolvedName":"simpleHash"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:simpleHash","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:simpleHash","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:simpleHash","to":"external:str.charCodeAt","kind":"calls","metadata":{"unresolvedName":"str.charCodeAt"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlightWithCache","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlightWithCache","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlightWithCache","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getCacheKey","kind":"calls","metadata":{"unresolvedName":"getCacheKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlightWithCache","to":"external:htmlCache.get","kind":"calls","metadata":{"unresolvedName":"htmlCache.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlightWithCache","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:codeToHtml","kind":"calls","metadata":{"unresolvedName":"codeToHtml"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlightWithCache","to":"external:htmlCache.set","kind":"calls","metadata":{"unresolvedName":"htmlCache.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlightWithCache","to":"external:tokensCache.get","kind":"calls","metadata":{"unresolvedName":"tokensCache.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlightWithCache","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:codeToTokens","kind":"calls","metadata":{"unresolvedName":"codeToTokens"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlightWithCache","to":"external:tokensCache.set","kind":"calls","metadata":{"unresolvedName":"tokensCache.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getHighlightCacheStats","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getHighlightCacheStats","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:clearHighlightCache","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:clearHighlightCache","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:clearHighlightCache","to":"external:htmlCache.clear","kind":"calls","metadata":{"unresolvedName":"htmlCache.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:clearHighlightCache","to":"external:tokensCache.clear","kind":"calls","metadata":{"unresolvedName":"tokensCache.clear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getShikiTheme","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getShikiTheme","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:detectTheme","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:detectTheme","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:detectTheme","to":"external:document.documentElement.getAttribute","kind":"calls","metadata":{"unresolvedName":"document.documentElement.getAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:detectTheme","to":"external:window.matchMedia","kind":"calls","metadata":{"unresolvedName":"window.matchMedia"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:setupListeners","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:setupListeners","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:setupListeners","to":"external:this.detectTheme","kind":"calls","metadata":{"unresolvedName":"this.detectTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:setupListeners","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:setupListeners","to":"external:this.observer.observe","kind":"calls","metadata":{"unresolvedName":"this.observer.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:setupListeners","to":"external:window.matchMedia","kind":"calls","metadata":{"unresolvedName":"window.matchMedia"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:setupListeners","to":"external:document.documentElement.getAttribute","kind":"calls","metadata":{"unresolvedName":"document.documentElement.getAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:setupListeners","to":"external:this.mediaQuery.addEventListener","kind":"calls","metadata":{"unresolvedName":"this.mediaQuery.addEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"external:this.detectTheme","kind":"calls","metadata":{"unresolvedName":"this.detectTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:handleChange","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:handleChange","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:handleChange","to":"external:document.documentElement.getAttribute","kind":"calls","metadata":{"unresolvedName":"document.documentElement.getAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:handleChange","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:notify","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:notify","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:notify","to":"external:this.subscribers.forEach","kind":"calls","metadata":{"unresolvedName":"this.subscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:notify","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getIsDark","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getIsDark","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:subscribe","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:subscribe","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:subscribe","to":"external:this.subscribers.add","kind":"calls","metadata":{"unresolvedName":"this.subscribers.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:subscribe","to":"external:this.subscribers.delete","kind":"calls","metadata":{"unresolvedName":"this.subscribers.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getThemeStateManager","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getThemeStateManager","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useIsDarkMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useIsDarkMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useIsDarkMode","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getThemeStateManager","kind":"calls","metadata":{"unresolvedName":"getThemeStateManager"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useIsDarkMode","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useIsDarkMode","to":"external:manager.getIsDark","kind":"calls","metadata":{"unresolvedName":"manager.getIsDark"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useIsDarkMode","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useIsDarkMode","to":"external:manager.subscribe","kind":"calls","metadata":{"unresolvedName":"manager.subscribe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"external:manager.subscribe","kind":"calls","metadata":{"unresolvedName":"manager.subscribe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:normalizeLanguage","kind":"calls","metadata":{"unresolvedName":"normalizeLanguage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useIsDarkMode","kind":"calls","metadata":{"unresolvedName":"useIsDarkMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getShikiTheme","kind":"calls","metadata":{"unresolvedName":"getShikiTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getCacheKey","kind":"calls","metadata":{"unresolvedName":"getCacheKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"external:htmlCache.get","kind":"calls","metadata":{"unresolvedName":"htmlCache.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"external:tokensCache.get","kind":"calls","metadata":{"unresolvedName":"tokensCache.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"symbol-name:setOutput","kind":"calls","metadata":{"unresolvedName":"setOutput"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlightWithCache","kind":"calls","metadata":{"unresolvedName":"highlightWithCache"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"external:idleWindow.requestIdleCallback","kind":"calls","metadata":{"unresolvedName":"idleWindow.requestIdleCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight","kind":"calls","metadata":{"unresolvedName":"highlight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"external:idleWindow.cancelIdleCallback","kind":"calls","metadata":{"unresolvedName":"idleWindow.cancelIdleCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:scheduleQueuedHighlight","kind":"calls","metadata":{"unresolvedName":"scheduleQueuedHighlight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","kind":"calls","metadata":{"unresolvedName":"schedule"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlight","to":"symbol-name:cancelSchedule","kind":"calls","metadata":{"unresolvedName":"cancelSchedule"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getShikiTheme","kind":"calls","metadata":{"unresolvedName":"getShikiTheme"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getCacheKey","kind":"calls","metadata":{"unresolvedName":"getCacheKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"external:htmlCache.get","kind":"calls","metadata":{"unresolvedName":"htmlCache.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"external:tokensCache.get","kind":"calls","metadata":{"unresolvedName":"tokensCache.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"symbol-name:setOutput","kind":"calls","metadata":{"unresolvedName":"setOutput"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlightWithCache","kind":"calls","metadata":{"unresolvedName":"highlightWithCache"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"external:idleWindow.requestIdleCallback","kind":"calls","metadata":{"unresolvedName":"idleWindow.requestIdleCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight","kind":"calls","metadata":{"unresolvedName":"highlight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"external:idleWindow.cancelIdleCallback","kind":"calls","metadata":{"unresolvedName":"idleWindow.cancelIdleCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:scheduleQueuedHighlight","kind":"calls","metadata":{"unresolvedName":"scheduleQueuedHighlight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","kind":"calls","metadata":{"unresolvedName":"schedule"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"symbol-name:cancelSchedule","kind":"calls","metadata":{"unresolvedName":"cancelSchedule"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlightWithCache","kind":"calls","metadata":{"unresolvedName":"highlightWithCache"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight","to":"symbol-name:setOutput","kind":"calls","metadata":{"unresolvedName":"setOutput"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","to":"external:idleWindow.requestIdleCallback","kind":"calls","metadata":{"unresolvedName":"idleWindow.requestIdleCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight","kind":"calls","metadata":{"unresolvedName":"highlight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","to":"external:idleWindow.cancelIdleCallback","kind":"calls","metadata":{"unresolvedName":"idleWindow.cancelIdleCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:scheduleQueuedHighlight","kind":"calls","metadata":{"unresolvedName":"scheduleQueuedHighlight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight","kind":"calls","metadata":{"unresolvedName":"highlight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"symbol-name:cancelSchedule","kind":"calls","metadata":{"unresolvedName":"cancelSchedule"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:normalizeLanguage","kind":"calls","metadata":{"unresolvedName":"normalizeLanguage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useIsDarkMode","kind":"calls","metadata":{"unresolvedName":"useIsDarkMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getShikiTheme","kind":"calls","metadata":{"unresolvedName":"getShikiTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getCacheKey","kind":"calls","metadata":{"unresolvedName":"getCacheKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","to":"external:tokensCache.get","kind":"calls","metadata":{"unresolvedName":"tokensCache.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","to":"symbol-name:setVersion","kind":"calls","metadata":{"unresolvedName":"setVersion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlightWithCache","kind":"calls","metadata":{"unresolvedName":"highlightWithCache"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","to":"external:idleWindow.requestIdleCallback","kind":"calls","metadata":{"unresolvedName":"idleWindow.requestIdleCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight","kind":"calls","metadata":{"unresolvedName":"highlight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","to":"external:idleWindow.cancelIdleCallback","kind":"calls","metadata":{"unresolvedName":"idleWindow.cancelIdleCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:scheduleQueuedHighlight","kind":"calls","metadata":{"unresolvedName":"scheduleQueuedHighlight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","kind":"calls","metadata":{"unresolvedName":"schedule"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:useSyntaxHighlightRef","to":"symbol-name:cancelSchedule","kind":"calls","metadata":{"unresolvedName":"cancelSchedule"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getShikiTheme","kind":"calls","metadata":{"unresolvedName":"getShikiTheme"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:getCacheKey","kind":"calls","metadata":{"unresolvedName":"getCacheKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"external:tokensCache.get","kind":"calls","metadata":{"unresolvedName":"tokensCache.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"symbol-name:setVersion","kind":"calls","metadata":{"unresolvedName":"setVersion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlightWithCache","kind":"calls","metadata":{"unresolvedName":"highlightWithCache"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"external:idleWindow.requestIdleCallback","kind":"calls","metadata":{"unresolvedName":"idleWindow.requestIdleCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight","kind":"calls","metadata":{"unresolvedName":"highlight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"external:idleWindow.cancelIdleCallback","kind":"calls","metadata":{"unresolvedName":"idleWindow.cancelIdleCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:scheduleQueuedHighlight","kind":"calls","metadata":{"unresolvedName":"scheduleQueuedHighlight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","kind":"calls","metadata":{"unresolvedName":"schedule"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"symbol-name:cancelSchedule","kind":"calls","metadata":{"unresolvedName":"cancelSchedule"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlightWithCache","kind":"calls","metadata":{"unresolvedName":"highlightWithCache"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight","to":"symbol-name:setVersion","kind":"calls","metadata":{"unresolvedName":"setVersion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","to":"external:idleWindow.requestIdleCallback","kind":"calls","metadata":{"unresolvedName":"idleWindow.requestIdleCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight","kind":"calls","metadata":{"unresolvedName":"highlight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","to":"external:idleWindow.cancelIdleCallback","kind":"calls","metadata":{"unresolvedName":"idleWindow.cancelIdleCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","to":"external:window.setTimeout","kind":"calls","metadata":{"unresolvedName":"window.setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:schedule","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:scheduleQueuedHighlight","kind":"calls","metadata":{"unresolvedName":"scheduleQueuedHighlight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:highlight","kind":"calls","metadata":{"unresolvedName":"highlight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useSyntaxHighlight.ts:","to":"symbol-name:cancelSchedule","kind":"calls","metadata":{"unresolvedName":"cancelSchedule"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"external:react-dom","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.getResolvedMode","kind":"calls","metadata":{"unresolvedName":"themeStore.getResolvedMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.setColorMode","kind":"calls","metadata":{"unresolvedName":"themeStore.setColorMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:Math.hypot","kind":"calls","metadata":{"unresolvedName":"Math.hypot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:root.setAttribute","kind":"calls","metadata":{"unresolvedName":"root.setAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:document.startViewTransition","kind":"calls","metadata":{"unresolvedName":"document.startViewTransition"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"symbol-name:flushSync","kind":"calls","metadata":{"unresolvedName":"flushSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:transition.ready\r\n .then","kind":"calls","metadata":{"unresolvedName":"transition.ready\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:document.documentElement.animate","kind":"calls","metadata":{"unresolvedName":"document.documentElement.animate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:root.removeAttribute","kind":"calls","metadata":{"unresolvedName":"root.removeAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.setPreset","kind":"calls","metadata":{"unresolvedName":"themeStore.setPreset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.setCustomCSS","kind":"calls","metadata":{"unresolvedName":"themeStore.setCustomCSS"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.saveCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"themeStore.saveCustomCSSSnippet"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.updateCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"themeStore.updateCustomCSSSnippet"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.deleteCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"themeStore.deleteCustomCSSSnippet"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.applyCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"themeStore.applyCustomCSSSnippet"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.clearActiveCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"themeStore.clearActiveCustomCSSSnippet"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.setCollapseUserMessages","kind":"calls","metadata":{"unresolvedName":"themeStore.setCollapseUserMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.setStepFinishDisplay","kind":"calls","metadata":{"unresolvedName":"themeStore.setStepFinishDisplay"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.setCompletedAtFormat","kind":"calls","metadata":{"unresolvedName":"themeStore.setCompletedAtFormat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.setReasoningDisplayMode","kind":"calls","metadata":{"unresolvedName":"themeStore.setReasoningDisplayMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.setDiffStyle","kind":"calls","metadata":{"unresolvedName":"themeStore.setDiffStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.setDescriptiveToolSteps","kind":"calls","metadata":{"unresolvedName":"themeStore.setDescriptiveToolSteps"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.setInlineToolRequests","kind":"calls","metadata":{"unresolvedName":"themeStore.setInlineToolRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.setCodeWordWrap","kind":"calls","metadata":{"unresolvedName":"themeStore.setCodeWordWrap"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.setUIFontScale","kind":"calls","metadata":{"unresolvedName":"themeStore.setUIFontScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.setCodeFontScale","kind":"calls","metadata":{"unresolvedName":"themeStore.setCodeFontScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.setToolCardStyle","kind":"calls","metadata":{"unresolvedName":"themeStore.setToolCardStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.setImmersiveMode","kind":"calls","metadata":{"unresolvedName":"themeStore.setImmersiveMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.setManualTerminalTitles","kind":"calls","metadata":{"unresolvedName":"themeStore.setManualTerminalTitles"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.getAvailablePresets","kind":"calls","metadata":{"unresolvedName":"themeStore.getAvailablePresets"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.toggleWideMode.bind","kind":"calls","metadata":{"unresolvedName":"themeStore.toggleWideMode.bind"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.setCompactInlinePermission","kind":"calls","metadata":{"unresolvedName":"themeStore.setCompactInlinePermission"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:useTheme","to":"external:themeStore.setGlassEffect","kind":"calls","metadata":{"unresolvedName":"themeStore.setGlassEffect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setColorMode","kind":"calls","metadata":{"unresolvedName":"themeStore.setColorMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setColorMode","kind":"calls","metadata":{"unresolvedName":"themeStore.setColorMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setColorMode","kind":"calls","metadata":{"unresolvedName":"themeStore.setColorMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:Math.hypot","kind":"calls","metadata":{"unresolvedName":"Math.hypot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:root.setAttribute","kind":"calls","metadata":{"unresolvedName":"root.setAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:document.startViewTransition","kind":"calls","metadata":{"unresolvedName":"document.startViewTransition"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"symbol-name:flushSync","kind":"calls","metadata":{"unresolvedName":"flushSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:transition.ready\r\n .then","kind":"calls","metadata":{"unresolvedName":"transition.ready\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:document.documentElement.animate","kind":"calls","metadata":{"unresolvedName":"document.documentElement.animate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:root.removeAttribute","kind":"calls","metadata":{"unresolvedName":"root.removeAttribute"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"symbol-name:flushSync","kind":"calls","metadata":{"unresolvedName":"flushSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setColorMode","kind":"calls","metadata":{"unresolvedName":"themeStore.setColorMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setColorMode","kind":"calls","metadata":{"unresolvedName":"themeStore.setColorMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:document.documentElement.animate","kind":"calls","metadata":{"unresolvedName":"document.documentElement.animate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:root.removeAttribute","kind":"calls","metadata":{"unresolvedName":"root.removeAttribute"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:root.removeAttribute","kind":"calls","metadata":{"unresolvedName":"root.removeAttribute"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setPreset","kind":"calls","metadata":{"unresolvedName":"themeStore.setPreset"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setPreset","kind":"calls","metadata":{"unresolvedName":"themeStore.setPreset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:Math.hypot","kind":"calls","metadata":{"unresolvedName":"Math.hypot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:root.setAttribute","kind":"calls","metadata":{"unresolvedName":"root.setAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:document.startViewTransition","kind":"calls","metadata":{"unresolvedName":"document.startViewTransition"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"symbol-name:flushSync","kind":"calls","metadata":{"unresolvedName":"flushSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:transition.ready\r\n .then","kind":"calls","metadata":{"unresolvedName":"transition.ready\r\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:document.documentElement.animate","kind":"calls","metadata":{"unresolvedName":"document.documentElement.animate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:root.removeAttribute","kind":"calls","metadata":{"unresolvedName":"root.removeAttribute"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"symbol-name:flushSync","kind":"calls","metadata":{"unresolvedName":"flushSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setPreset","kind":"calls","metadata":{"unresolvedName":"themeStore.setPreset"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setPreset","kind":"calls","metadata":{"unresolvedName":"themeStore.setPreset"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:document.documentElement.animate","kind":"calls","metadata":{"unresolvedName":"document.documentElement.animate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:root.removeAttribute","kind":"calls","metadata":{"unresolvedName":"root.removeAttribute"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:root.removeAttribute","kind":"calls","metadata":{"unresolvedName":"root.removeAttribute"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setCustomCSS","kind":"calls","metadata":{"unresolvedName":"themeStore.setCustomCSS"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.saveCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"themeStore.saveCustomCSSSnippet"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.updateCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"themeStore.updateCustomCSSSnippet"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.deleteCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"themeStore.deleteCustomCSSSnippet"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.applyCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"themeStore.applyCustomCSSSnippet"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.clearActiveCustomCSSSnippet","kind":"calls","metadata":{"unresolvedName":"themeStore.clearActiveCustomCSSSnippet"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setCollapseUserMessages","kind":"calls","metadata":{"unresolvedName":"themeStore.setCollapseUserMessages"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setStepFinishDisplay","kind":"calls","metadata":{"unresolvedName":"themeStore.setStepFinishDisplay"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setCompletedAtFormat","kind":"calls","metadata":{"unresolvedName":"themeStore.setCompletedAtFormat"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setReasoningDisplayMode","kind":"calls","metadata":{"unresolvedName":"themeStore.setReasoningDisplayMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setDiffStyle","kind":"calls","metadata":{"unresolvedName":"themeStore.setDiffStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setDescriptiveToolSteps","kind":"calls","metadata":{"unresolvedName":"themeStore.setDescriptiveToolSteps"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setInlineToolRequests","kind":"calls","metadata":{"unresolvedName":"themeStore.setInlineToolRequests"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setCodeWordWrap","kind":"calls","metadata":{"unresolvedName":"themeStore.setCodeWordWrap"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setUIFontScale","kind":"calls","metadata":{"unresolvedName":"themeStore.setUIFontScale"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setCodeFontScale","kind":"calls","metadata":{"unresolvedName":"themeStore.setCodeFontScale"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setToolCardStyle","kind":"calls","metadata":{"unresolvedName":"themeStore.setToolCardStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setImmersiveMode","kind":"calls","metadata":{"unresolvedName":"themeStore.setImmersiveMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setManualTerminalTitles","kind":"calls","metadata":{"unresolvedName":"themeStore.setManualTerminalTitles"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setCompactInlinePermission","kind":"calls","metadata":{"unresolvedName":"themeStore.setCompactInlinePermission"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useTheme.ts:","to":"external:themeStore.setGlassEffect","kind":"calls","metadata":{"unresolvedName":"themeStore.setGlassEffect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/vcs.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:useVcsInfo","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:useVcsInfo","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:useVcsInfo","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:useVcsInfo","to":"symbol-name:Boolean","kind":"calls","metadata":{"unresolvedName":"Boolean"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:useVcsInfo","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:useVcsInfo","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:useVcsInfo","to":"symbol-name:setVcsInfo","kind":"calls","metadata":{"unresolvedName":"setVcsInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:useVcsInfo","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:useVcsInfo","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:useVcsInfo","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsInfo","kind":"calls","metadata":{"unresolvedName":"getVcsInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:useVcsInfo","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:useVcsInfo","to":"symbol-name:fetchVcs","kind":"calls","metadata":{"unresolvedName":"fetchVcs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:useVcsInfo","to":"symbol-name:setInterval","kind":"calls","metadata":{"unresolvedName":"setInterval"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:useVcsInfo","to":"symbol-name:clearInterval","kind":"calls","metadata":{"unresolvedName":"clearInterval"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:","to":"symbol-name:setVcsInfo","kind":"calls","metadata":{"unresolvedName":"setVcsInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/vcs.ts:getVcsInfo","kind":"calls","metadata":{"unresolvedName":"getVcsInfo"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:","to":"symbol-name:setVcsInfo","kind":"calls","metadata":{"unresolvedName":"setVcsInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:","to":"symbol-name:setIsLoading","kind":"calls","metadata":{"unresolvedName":"setIsLoading"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:","to":"symbol-name:Boolean","kind":"calls","metadata":{"unresolvedName":"Boolean"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:","to":"symbol-name:fetchVcs","kind":"calls","metadata":{"unresolvedName":"fetchVcs"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:","to":"symbol-name:setInterval","kind":"calls","metadata":{"unresolvedName":"setInterval"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVcsInfo.ts:","to":"symbol-name:clearInterval","kind":"calls","metadata":{"unresolvedName":"clearInterval"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","to":"symbol-name:useLayoutEffect","kind":"calls","metadata":{"unresolvedName":"useLayoutEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","to":"external:primaryRef.current.style.setProperty","kind":"calls","metadata":{"unresolvedName":"primaryRef.current.style.setProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","to":"symbol-name:setSplitHeight","kind":"calls","metadata":{"unresolvedName":"setSplitHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","to":"external:primaryEl.style.setProperty","kind":"calls","metadata":{"unresolvedName":"primaryEl.style.setProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","to":"symbol-name:setIsResizing","kind":"calls","metadata":{"unresolvedName":"setIsResizing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","to":"external:container.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"container.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","to":"symbol-name:applyHeight","kind":"calls","metadata":{"unresolvedName":"applyHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","to":"symbol-name:finishResize","kind":"calls","metadata":{"unresolvedName":"finishResize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:useVerticalSplitResize","to":"external:moveEvent.preventDefault","kind":"calls","metadata":{"unresolvedName":"moveEvent.preventDefault"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"external:primaryRef.current.style.setProperty","kind":"calls","metadata":{"unresolvedName":"primaryRef.current.style.setProperty"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"symbol-name:setSplitHeight","kind":"calls","metadata":{"unresolvedName":"setSplitHeight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"external:primaryEl.style.setProperty","kind":"calls","metadata":{"unresolvedName":"primaryEl.style.setProperty"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"symbol-name:setIsResizing","kind":"calls","metadata":{"unresolvedName":"setIsResizing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"symbol-name:setSplitHeight","kind":"calls","metadata":{"unresolvedName":"setSplitHeight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"symbol-name:setIsResizing","kind":"calls","metadata":{"unresolvedName":"setIsResizing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"external:container.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"container.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"symbol-name:applyHeight","kind":"calls","metadata":{"unresolvedName":"applyHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"symbol-name:finishResize","kind":"calls","metadata":{"unresolvedName":"finishResize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleMouseMove","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleMouseMove","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleMouseMove","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleMouseMove","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleMouseMove","to":"symbol-name:applyHeight","kind":"calls","metadata":{"unresolvedName":"applyHeight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"symbol-name:applyHeight","kind":"calls","metadata":{"unresolvedName":"applyHeight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleMouseUp","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleMouseUp","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleMouseUp","to":"symbol-name:finishResize","kind":"calls","metadata":{"unresolvedName":"finishResize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleMouseUp","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"symbol-name:setIsResizing","kind":"calls","metadata":{"unresolvedName":"setIsResizing"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"external:container.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"container.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"external:moveEvent.preventDefault","kind":"calls","metadata":{"unresolvedName":"moveEvent.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"symbol-name:applyHeight","kind":"calls","metadata":{"unresolvedName":"applyHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"symbol-name:finishResize","kind":"calls","metadata":{"unresolvedName":"finishResize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleTouchMove","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleTouchMove","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleTouchMove","to":"external:moveEvent.preventDefault","kind":"calls","metadata":{"unresolvedName":"moveEvent.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleTouchMove","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleTouchMove","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleTouchMove","to":"symbol-name:applyHeight","kind":"calls","metadata":{"unresolvedName":"applyHeight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:","to":"symbol-name:applyHeight","kind":"calls","metadata":{"unresolvedName":"applyHeight"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleTouchEnd","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleTouchEnd","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleTouchEnd","to":"symbol-name:finishResize","kind":"calls","metadata":{"unresolvedName":"finishResize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVerticalSplitResize.ts:handleTouchEnd","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight","to":"external:root.classList.contains","kind":"calls","metadata":{"unresolvedName":"root.classList.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight","to":"external:root.style.setProperty","kind":"calls","metadata":{"unresolvedName":"root.style.setProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:updateAppHeight","kind":"calls","metadata":{"unresolvedName":"updateAppHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight","to":"external:document.createElement","kind":"calls","metadata":{"unresolvedName":"document.createElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight","to":"external:document.body.appendChild","kind":"calls","metadata":{"unresolvedName":"document.body.appendChild"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight","to":"symbol-name:parseFloat","kind":"calls","metadata":{"unresolvedName":"parseFloat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight","to":"symbol-name:getComputedStyle","kind":"calls","metadata":{"unresolvedName":"getComputedStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight","to":"external:document.body.removeChild","kind":"calls","metadata":{"unresolvedName":"document.body.removeChild"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:measureSafeAreaBottom","kind":"calls","metadata":{"unresolvedName":"measureSafeAreaBottom"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:updateViewport","kind":"calls","metadata":{"unresolvedName":"updateViewport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight","to":"external:window.visualViewport.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.visualViewport.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:useViewportHeight","to":"external:window.visualViewport.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.visualViewport.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","to":"external:root.classList.contains","kind":"calls","metadata":{"unresolvedName":"root.classList.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","to":"external:root.style.setProperty","kind":"calls","metadata":{"unresolvedName":"root.style.setProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:updateAppHeight","kind":"calls","metadata":{"unresolvedName":"updateAppHeight"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","to":"external:document.createElement","kind":"calls","metadata":{"unresolvedName":"document.createElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","to":"external:document.body.appendChild","kind":"calls","metadata":{"unresolvedName":"document.body.appendChild"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","to":"symbol-name:parseFloat","kind":"calls","metadata":{"unresolvedName":"parseFloat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","to":"symbol-name:getComputedStyle","kind":"calls","metadata":{"unresolvedName":"getComputedStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","to":"external:document.body.removeChild","kind":"calls","metadata":{"unresolvedName":"document.body.removeChild"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:measureSafeAreaBottom","kind":"calls","metadata":{"unresolvedName":"measureSafeAreaBottom"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:updateViewport","kind":"calls","metadata":{"unresolvedName":"updateViewport"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","to":"external:window.visualViewport.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.visualViewport.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","to":"external:window.visualViewport.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.visualViewport.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:updateAppHeight","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:updateAppHeight","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:updateAppHeight","to":"external:root.style.setProperty","kind":"calls","metadata":{"unresolvedName":"root.style.setProperty"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:measureSafeAreaBottom","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:measureSafeAreaBottom","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:measureSafeAreaBottom","to":"external:document.createElement","kind":"calls","metadata":{"unresolvedName":"document.createElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:measureSafeAreaBottom","to":"external:document.body.appendChild","kind":"calls","metadata":{"unresolvedName":"document.body.appendChild"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:measureSafeAreaBottom","to":"symbol-name:parseFloat","kind":"calls","metadata":{"unresolvedName":"parseFloat"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:measureSafeAreaBottom","to":"symbol-name:getComputedStyle","kind":"calls","metadata":{"unresolvedName":"getComputedStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:measureSafeAreaBottom","to":"external:document.body.removeChild","kind":"calls","metadata":{"unresolvedName":"document.body.removeChild"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:updateViewport","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:updateViewport","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:updateViewport","to":"external:root.style.setProperty","kind":"calls","metadata":{"unresolvedName":"root.style.setProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:updateViewport","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:handleWindowResize","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:handleWindowResize","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:handleWindowResize","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:measureSafeAreaBottom","kind":"calls","metadata":{"unresolvedName":"measureSafeAreaBottom"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:handleWindowResize","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:updateViewport","kind":"calls","metadata":{"unresolvedName":"updateViewport"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","to":"external:window.visualViewport.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.visualViewport.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useViewportHeight.ts:","to":"external:window.removeEventListener","kind":"calls","metadata":{"unresolvedName":"window.removeEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:start","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:start","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:stop","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:stop","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:stop","to":"external:this.ondataavailable","kind":"calls","metadata":{"unresolvedName":"this.ondataavailable"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:stop","to":"external:Promise.resolve().then","kind":"calls","metadata":{"unresolvedName":"Promise.resolve().then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:stop","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:stop","to":"external:this.onstop","kind":"calls","metadata":{"unresolvedName":"this.onstop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked(getSttSettings).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getSttSettings).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked(transcribeAudio).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(transcribeAudio).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked(getSttSettings).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getSttSettings).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked(transcribeAudio).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(transcribeAudio).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:Object.defineProperty","kind":"calls","metadata":{"unresolvedName":"Object.defineProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","kind":"calls","metadata":{"unresolvedName":"useVoiceTranscription"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(result.current.settings?.enabled).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.settings?.enabled).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:result.current.startRecording","kind":"calls","metadata":{"unresolvedName":"result.current.startRecording"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(result.current.state).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.state).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:result.current.stopRecording","kind":"calls","metadata":{"unresolvedName":"result.current.stopRecording"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(onTranscription).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onTranscription).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(result.current.isAvailable).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.isAvailable).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(result.current.error).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.error).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked(getSttSettings).mockResolvedValueOnce","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getSttSettings).mockResolvedValueOnce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(result.current.settings?.apiKeyRequired).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.settings?.apiKeyRequired).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(navigator.mediaDevices.getUserMedia).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(navigator.mediaDevices.getUserMedia).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked(getSttSettings).mockRejectedValueOnce","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getSttSettings).mockRejectedValueOnce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(result.current.error).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(result.current.error).toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(getSttSettings).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(getSttSettings).toHaveBeenCalledTimes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked(navigator.mediaDevices.getUserMedia).mockRejectedValueOnce","kind":"calls","metadata":{"unresolvedName":"vi.mocked(navigator.mediaDevices.getUserMedia).mockRejectedValueOnce"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked(getSttSettings).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getSttSettings).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked(transcribeAudio).mockReset","kind":"calls","metadata":{"unresolvedName":"vi.mocked(transcribeAudio).mockReset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked(getSttSettings).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getSttSettings).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked(transcribeAudio).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(transcribeAudio).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:Object.defineProperty","kind":"calls","metadata":{"unresolvedName":"Object.defineProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","kind":"calls","metadata":{"unresolvedName":"useVoiceTranscription"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(result.current.settings?.enabled).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.settings?.enabled).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:result.current.startRecording","kind":"calls","metadata":{"unresolvedName":"result.current.startRecording"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(result.current.state).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.state).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:result.current.stopRecording","kind":"calls","metadata":{"unresolvedName":"result.current.stopRecording"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(onTranscription).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(onTranscription).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:result.current.startRecording","kind":"calls","metadata":{"unresolvedName":"result.current.startRecording"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:result.current.stopRecording","kind":"calls","metadata":{"unresolvedName":"result.current.stopRecording"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked(getSttSettings).mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getSttSettings).mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","kind":"calls","metadata":{"unresolvedName":"useVoiceTranscription"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(result.current.settings?.enabled).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.settings?.enabled).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(result.current.isAvailable).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.isAvailable).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:result.current.startRecording","kind":"calls","metadata":{"unresolvedName":"result.current.startRecording"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(result.current.state).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.state).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(result.current.error).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.error).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:result.current.startRecording","kind":"calls","metadata":{"unresolvedName":"result.current.startRecording"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked(getSttSettings).mockResolvedValueOnce","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getSttSettings).mockResolvedValueOnce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","kind":"calls","metadata":{"unresolvedName":"useVoiceTranscription"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(result.current.settings?.apiKeyRequired).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.settings?.apiKeyRequired).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:result.current.startRecording","kind":"calls","metadata":{"unresolvedName":"result.current.startRecording"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(result.current.state).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.state).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(navigator.mediaDevices.getUserMedia).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(navigator.mediaDevices.getUserMedia).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:result.current.startRecording","kind":"calls","metadata":{"unresolvedName":"result.current.startRecording"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked(getSttSettings).mockRejectedValueOnce","kind":"calls","metadata":{"unresolvedName":"vi.mocked(getSttSettings).mockRejectedValueOnce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","kind":"calls","metadata":{"unresolvedName":"useVoiceTranscription"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(result.current.error).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.error).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:result.current.startRecording","kind":"calls","metadata":{"unresolvedName":"result.current.startRecording"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(result.current.state).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.state).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(result.current.error).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(result.current.error).toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(getSttSettings).toHaveBeenCalledTimes","kind":"calls","metadata":{"unresolvedName":"expect(getSttSettings).toHaveBeenCalledTimes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:result.current.startRecording","kind":"calls","metadata":{"unresolvedName":"result.current.startRecording"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked(navigator.mediaDevices.getUserMedia).mockRejectedValueOnce","kind":"calls","metadata":{"unresolvedName":"vi.mocked(navigator.mediaDevices.getUserMedia).mockRejectedValueOnce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.mocked","kind":"calls","metadata":{"unresolvedName":"vi.mocked"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","kind":"calls","metadata":{"unresolvedName":"useVoiceTranscription"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:waitFor","kind":"calls","metadata":{"unresolvedName":"waitFor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(result.current.settings?.enabled).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.settings?.enabled).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"symbol-name:act","kind":"calls","metadata":{"unresolvedName":"act"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:result.current.startRecording","kind":"calls","metadata":{"unresolvedName":"result.current.startRecording"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(result.current.state).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.state).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:expect(result.current.error).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current.error).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.test.tsx:","to":"external:result.current.startRecording","kind":"calls","metadata":{"unresolvedName":"result.current.startRecording"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/stt.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:isRecordingSupported","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:isRecordingSupported","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"symbol-name:useState","kind":"calls","metadata":{"unresolvedName":"useState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:getSttSettings","kind":"calls","metadata":{"unresolvedName":"getSttSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"symbol-name:setSettings","kind":"calls","metadata":{"unresolvedName":"setSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"external:getSttSettings()\n .then","kind":"calls","metadata":{"unresolvedName":"getSttSettings()\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"external:streamRef.current?.getTracks().forEach","kind":"calls","metadata":{"unresolvedName":"streamRef.current?.getTracks().forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"external:streamRef.current?.getTracks","kind":"calls","metadata":{"unresolvedName":"streamRef.current?.getTracks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"external:track.stop","kind":"calls","metadata":{"unresolvedName":"track.stop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"symbol-name:setState","kind":"calls","metadata":{"unresolvedName":"setState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"symbol-name:loadSettings","kind":"calls","metadata":{"unresolvedName":"loadSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:isRecordingSupported","kind":"calls","metadata":{"unresolvedName":"isRecordingSupported"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"external:navigator.mediaDevices.getUserMedia","kind":"calls","metadata":{"unresolvedName":"navigator.mediaDevices.getUserMedia"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"external:MediaRecorder.isTypeSupported","kind":"calls","metadata":{"unresolvedName":"MediaRecorder.isTypeSupported"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"external:chunksRef.current.push","kind":"calls","metadata":{"unresolvedName":"chunksRef.current.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"symbol-name:cleanupStream","kind":"calls","metadata":{"unresolvedName":"cleanupStream"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"symbol-name:transcribeAudio","kind":"calls","metadata":{"unresolvedName":"transcribeAudio"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"external:result.text.trim","kind":"calls","metadata":{"unresolvedName":"result.text.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"symbol-name:onTranscription","kind":"calls","metadata":{"unresolvedName":"onTranscription"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"external:recorder.start","kind":"calls","metadata":{"unresolvedName":"recorder.start"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:useVoiceTranscription","to":"external:recorder.stop","kind":"calls","metadata":{"unresolvedName":"recorder.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:getSttSettings","kind":"calls","metadata":{"unresolvedName":"getSttSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"symbol-name:setSettings","kind":"calls","metadata":{"unresolvedName":"setSettings"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"external:getSttSettings()\n .then","kind":"calls","metadata":{"unresolvedName":"getSttSettings()\n .then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/stt.ts:getSttSettings","kind":"calls","metadata":{"unresolvedName":"getSttSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"symbol-name:setSettings","kind":"calls","metadata":{"unresolvedName":"setSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"symbol-name:setSettings","kind":"calls","metadata":{"unresolvedName":"setSettings"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"symbol-name:setSettings","kind":"calls","metadata":{"unresolvedName":"setSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"external:streamRef.current?.getTracks().forEach","kind":"calls","metadata":{"unresolvedName":"streamRef.current?.getTracks().forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"external:streamRef.current?.getTracks","kind":"calls","metadata":{"unresolvedName":"streamRef.current?.getTracks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"external:track.stop","kind":"calls","metadata":{"unresolvedName":"track.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"symbol-name:setState","kind":"calls","metadata":{"unresolvedName":"setState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"symbol-name:loadSettings","kind":"calls","metadata":{"unresolvedName":"loadSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"symbol-name:setSettings","kind":"calls","metadata":{"unresolvedName":"setSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:isRecordingSupported","kind":"calls","metadata":{"unresolvedName":"isRecordingSupported"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"external:navigator.mediaDevices.getUserMedia","kind":"calls","metadata":{"unresolvedName":"navigator.mediaDevices.getUserMedia"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"external:MediaRecorder.isTypeSupported","kind":"calls","metadata":{"unresolvedName":"MediaRecorder.isTypeSupported"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"external:chunksRef.current.push","kind":"calls","metadata":{"unresolvedName":"chunksRef.current.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"symbol-name:cleanupStream","kind":"calls","metadata":{"unresolvedName":"cleanupStream"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"symbol-name:transcribeAudio","kind":"calls","metadata":{"unresolvedName":"transcribeAudio"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"external:result.text.trim","kind":"calls","metadata":{"unresolvedName":"result.text.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"symbol-name:onTranscription","kind":"calls","metadata":{"unresolvedName":"onTranscription"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"external:recorder.start","kind":"calls","metadata":{"unresolvedName":"recorder.start"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"external:chunksRef.current.push","kind":"calls","metadata":{"unresolvedName":"chunksRef.current.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"symbol-name:setState","kind":"calls","metadata":{"unresolvedName":"setState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"symbol-name:cleanupStream","kind":"calls","metadata":{"unresolvedName":"cleanupStream"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"symbol-name:transcribeAudio","kind":"calls","metadata":{"unresolvedName":"transcribeAudio"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"external:result.text.trim","kind":"calls","metadata":{"unresolvedName":"result.text.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"symbol-name:onTranscription","kind":"calls","metadata":{"unresolvedName":"onTranscription"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"external:recorder.stop","kind":"calls","metadata":{"unresolvedName":"recorder.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"symbol-name:setError","kind":"calls","metadata":{"unresolvedName":"setError"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useVoiceTranscription.ts:","to":"symbol-name:setState","kind":"calls","metadata":{"unresolvedName":"setState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:useWakeLock","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:useWakeLock","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:useWakeLock","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:useWakeLock","to":"symbol-name:useEffect","kind":"calls","metadata":{"unresolvedName":"useEffect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:useWakeLock","to":"external:navigator.wakeLock.request","kind":"calls","metadata":{"unresolvedName":"navigator.wakeLock.request"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:useWakeLock","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:request","kind":"calls","metadata":{"unresolvedName":"request"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:useWakeLock","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:useWakeLock","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:useWakeLock","to":"external:wakeLockRef.current?.release().catch","kind":"calls","metadata":{"unresolvedName":"wakeLockRef.current?.release().catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:useWakeLock","to":"external:wakeLockRef.current?.release","kind":"calls","metadata":{"unresolvedName":"wakeLockRef.current?.release"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:","to":"external:navigator.wakeLock.request","kind":"calls","metadata":{"unresolvedName":"navigator.wakeLock.request"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:request","kind":"calls","metadata":{"unresolvedName":"request"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:","to":"external:wakeLockRef.current?.release().catch","kind":"calls","metadata":{"unresolvedName":"wakeLockRef.current?.release().catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:","to":"external:wakeLockRef.current?.release","kind":"calls","metadata":{"unresolvedName":"wakeLockRef.current?.release"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:request","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:request","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:request","to":"external:navigator.wakeLock.request","kind":"calls","metadata":{"unresolvedName":"navigator.wakeLock.request"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:onVisibilityChange","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:onVisibilityChange","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:onVisibilityChange","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:request","kind":"calls","metadata":{"unresolvedName":"request"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:","to":"external:document.removeEventListener","kind":"calls","metadata":{"unresolvedName":"document.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:","to":"external:wakeLockRef.current?.release().catch","kind":"calls","metadata":{"unresolvedName":"wakeLockRef.current?.release().catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:","to":"external:wakeLockRef.current?.release","kind":"calls","metadata":{"unresolvedName":"wakeLockRef.current?.release"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/hooks/useWakeLock.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/i18n.ts","to":"external:i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/i18n.ts","to":"external:react-i18next","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/i18n.ts","to":"external:i18next-browser-languagedetector","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:wantsNoScrollbar","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:wantsNoScrollbar","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:wantsNoScrollbar","to":"external:el.classList.contains","kind":"calls","metadata":{"unresolvedName":"el.classList.contains"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollableY","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollableY","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollableY","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:wantsNoScrollbar","kind":"calls","metadata":{"unresolvedName":"wantsNoScrollbar"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollableY","to":"symbol-name:getComputedStyle","kind":"calls","metadata":{"unresolvedName":"getComputedStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollableX","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollableX","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollableX","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:wantsNoScrollbar","kind":"calls","metadata":{"unresolvedName":"wantsNoScrollbar"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollableX","to":"symbol-name:getComputedStyle","kind":"calls","metadata":{"unresolvedName":"getComputedStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollable","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollable","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollable","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollableY","kind":"calls","metadata":{"unresolvedName":"isScrollableY"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollable","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollableX","kind":"calls","metadata":{"unresolvedName":"isScrollableX"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","to":"external:document.createElement","kind":"calls","metadata":{"unresolvedName":"document.createElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","to":"external:parent.appendChild","kind":"calls","metadata":{"unresolvedName":"parent.appendChild"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","to":"external:thumb.classList.remove","kind":"calls","metadata":{"unresolvedName":"thumb.classList.remove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","to":"external:thumb.classList.add","kind":"calls","metadata":{"unresolvedName":"thumb.classList.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scheduleFade","kind":"calls","metadata":{"unresolvedName":"scheduleFade"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","to":"external:vp.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"vp.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","to":"external:parent.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"parent.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","to":"symbol-name:getComputedStyle","kind":"calls","metadata":{"unresolvedName":"getComputedStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","to":"external:thumb.setPointerCapture","kind":"calls","metadata":{"unresolvedName":"thumb.setPointerCapture"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","to":"external:thumb.releasePointerCapture","kind":"calls","metadata":{"unresolvedName":"thumb.releasePointerCapture"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","to":"external:thumb.removeEventListener","kind":"calls","metadata":{"unresolvedName":"thumb.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","to":"external:thumb.addEventListener","kind":"calls","metadata":{"unresolvedName":"thumb.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","to":"external:thumb.remove","kind":"calls","metadata":{"unresolvedName":"thumb.remove"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scheduleFade","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scheduleFade","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scheduleFade","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scheduleFade","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scheduleFade","to":"external:thumb.classList.remove","kind":"calls","metadata":{"unresolvedName":"thumb.classList.remove"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:","to":"external:thumb.classList.remove","kind":"calls","metadata":{"unresolvedName":"thumb.classList.remove"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:reveal","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:reveal","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:reveal","to":"external:thumb.classList.add","kind":"calls","metadata":{"unresolvedName":"thumb.classList.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:reveal","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scheduleFade","kind":"calls","metadata":{"unresolvedName":"scheduleFade"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:update","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:update","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:update","to":"external:vp.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"vp.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:update","to":"external:parent.getBoundingClientRect","kind":"calls","metadata":{"unresolvedName":"parent.getBoundingClientRect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:update","to":"external:thumb.classList.remove","kind":"calls","metadata":{"unresolvedName":"thumb.classList.remove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:update","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:update","to":"symbol-name:getComputedStyle","kind":"calls","metadata":{"unresolvedName":"getComputedStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbDown","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbDown","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbDown","to":"external:e.preventDefault","kind":"calls","metadata":{"unresolvedName":"e.preventDefault"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbDown","to":"external:e.stopPropagation","kind":"calls","metadata":{"unresolvedName":"e.stopPropagation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbDown","to":"external:thumb.classList.add","kind":"calls","metadata":{"unresolvedName":"thumb.classList.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbDown","to":"external:thumb.setPointerCapture","kind":"calls","metadata":{"unresolvedName":"thumb.setPointerCapture"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbDown","to":"external:thumb.classList.remove","kind":"calls","metadata":{"unresolvedName":"thumb.classList.remove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbDown","to":"external:thumb.releasePointerCapture","kind":"calls","metadata":{"unresolvedName":"thumb.releasePointerCapture"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbDown","to":"external:thumb.removeEventListener","kind":"calls","metadata":{"unresolvedName":"thumb.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbDown","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scheduleFade","kind":"calls","metadata":{"unresolvedName":"scheduleFade"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbDown","to":"external:thumb.addEventListener","kind":"calls","metadata":{"unresolvedName":"thumb.addEventListener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onMove","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onMove","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onUp","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onUp","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onUp","to":"external:thumb.classList.remove","kind":"calls","metadata":{"unresolvedName":"thumb.classList.remove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onUp","to":"external:thumb.releasePointerCapture","kind":"calls","metadata":{"unresolvedName":"thumb.releasePointerCapture"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onUp","to":"external:thumb.removeEventListener","kind":"calls","metadata":{"unresolvedName":"thumb.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onUp","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scheduleFade","kind":"calls","metadata":{"unresolvedName":"scheduleFade"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbEnter","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbEnter","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbEnter","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbLeave","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbLeave","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onThumbLeave","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scheduleFade","kind":"calls","metadata":{"unresolvedName":"scheduleFade"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:destroy","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:destroy","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:destroy","to":"external:thumb.removeEventListener","kind":"calls","metadata":{"unresolvedName":"thumb.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:destroy","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:destroy","to":"external:thumb.remove","kind":"calls","metadata":{"unresolvedName":"thumb.remove"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:ensurePositioned","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:ensurePositioned","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:ensurePositioned","to":"symbol-name:getComputedStyle","kind":"calls","metadata":{"unresolvedName":"getComputedStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"external:entries.has","kind":"calls","metadata":{"unresolvedName":"entries.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:ensurePositioned","kind":"calls","metadata":{"unresolvedName":"ensurePositioned"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollableY","kind":"calls","metadata":{"unresolvedName":"isScrollableY"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollableX","kind":"calls","metadata":{"unresolvedName":"isScrollableX"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","kind":"calls","metadata":{"unresolvedName":"createAxisThumb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"external:vp.setAttribute","kind":"calls","metadata":{"unresolvedName":"vp.setAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"external:v?.update","kind":"calls","metadata":{"unresolvedName":"v?.update"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"external:h?.update","kind":"calls","metadata":{"unresolvedName":"h?.update"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"symbol-name:update","kind":"calls","metadata":{"unresolvedName":"update"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"external:v?.reveal","kind":"calls","metadata":{"unresolvedName":"v?.reveal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"external:h?.reveal","kind":"calls","metadata":{"unresolvedName":"h?.reveal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"external:e.v.update","kind":"calls","metadata":{"unresolvedName":"e.v.update"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"external:e.v.thumb.classList.add","kind":"calls","metadata":{"unresolvedName":"e.v.thumb.classList.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"external:e.h.update","kind":"calls","metadata":{"unresolvedName":"e.h.update"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"external:e.h.thumb.classList.add","kind":"calls","metadata":{"unresolvedName":"e.h.thumb.classList.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"external:e.v!.thumb.classList.remove","kind":"calls","metadata":{"unresolvedName":"e.v!.thumb.classList.remove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"external:e.h!.thumb.classList.remove","kind":"calls","metadata":{"unresolvedName":"e.h!.thumb.classList.remove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"external:entries.values","kind":"calls","metadata":{"unresolvedName":"entries.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"external:vp.contains","kind":"calls","metadata":{"unresolvedName":"vp.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:revealEntry","kind":"calls","metadata":{"unresolvedName":"revealEntry"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:fadeEntry","kind":"calls","metadata":{"unresolvedName":"fadeEntry"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"external:vp.addEventListener","kind":"calls","metadata":{"unresolvedName":"vp.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"external:ro.observe","kind":"calls","metadata":{"unresolvedName":"ro.observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","to":"external:entries.set","kind":"calls","metadata":{"unresolvedName":"entries.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:update","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:update","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:update","to":"external:v?.update","kind":"calls","metadata":{"unresolvedName":"v?.update"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:update","to":"external:h?.update","kind":"calls","metadata":{"unresolvedName":"h?.update"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onScroll","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onScroll","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onScroll","to":"symbol-name:update","kind":"calls","metadata":{"unresolvedName":"update"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onScroll","to":"external:v?.reveal","kind":"calls","metadata":{"unresolvedName":"v?.reveal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onScroll","to":"external:h?.reveal","kind":"calls","metadata":{"unresolvedName":"h?.reveal"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:revealEntry","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:revealEntry","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:revealEntry","to":"external:e.v.update","kind":"calls","metadata":{"unresolvedName":"e.v.update"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:revealEntry","to":"external:e.v.thumb.classList.add","kind":"calls","metadata":{"unresolvedName":"e.v.thumb.classList.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:revealEntry","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:revealEntry","to":"external:e.h.update","kind":"calls","metadata":{"unresolvedName":"e.h.update"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:revealEntry","to":"external:e.h.thumb.classList.add","kind":"calls","metadata":{"unresolvedName":"e.h.thumb.classList.add"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:fadeEntry","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:fadeEntry","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:fadeEntry","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:fadeEntry","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:fadeEntry","to":"external:e.v!.thumb.classList.remove","kind":"calls","metadata":{"unresolvedName":"e.v!.thumb.classList.remove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:fadeEntry","to":"external:e.h!.thumb.classList.remove","kind":"calls","metadata":{"unresolvedName":"e.h!.thumb.classList.remove"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onEnter","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onEnter","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onEnter","to":"external:entries.values","kind":"calls","metadata":{"unresolvedName":"entries.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onEnter","to":"external:vp.contains","kind":"calls","metadata":{"unresolvedName":"vp.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onEnter","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:revealEntry","kind":"calls","metadata":{"unresolvedName":"revealEntry"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onLeave","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onLeave","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onLeave","to":"external:entries.values","kind":"calls","metadata":{"unresolvedName":"entries.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onLeave","to":"external:vp.contains","kind":"calls","metadata":{"unresolvedName":"vp.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:onLeave","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:fadeEntry","kind":"calls","metadata":{"unresolvedName":"fadeEntry"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:detach","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:detach","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:detach","to":"external:entries.get","kind":"calls","metadata":{"unresolvedName":"entries.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:detach","to":"external:vp.removeEventListener","kind":"calls","metadata":{"unresolvedName":"vp.removeEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:detach","to":"external:e.v?.destroy","kind":"calls","metadata":{"unresolvedName":"e.v?.destroy"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:detach","to":"external:e.h?.destroy","kind":"calls","metadata":{"unresolvedName":"e.h?.destroy"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:detach","to":"external:e.ro.disconnect","kind":"calls","metadata":{"unresolvedName":"e.ro.disconnect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:detach","to":"external:vp.removeAttribute","kind":"calls","metadata":{"unresolvedName":"vp.removeAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:detach","to":"external:entries.delete","kind":"calls","metadata":{"unresolvedName":"entries.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:reconcile","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:reconcile","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:reconcile","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollableY","kind":"calls","metadata":{"unresolvedName":"isScrollableY"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:reconcile","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollableX","kind":"calls","metadata":{"unresolvedName":"isScrollableX"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:reconcile","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:ensurePositioned","kind":"calls","metadata":{"unresolvedName":"ensurePositioned"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:reconcile","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:createAxisThumb","kind":"calls","metadata":{"unresolvedName":"createAxisThumb"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:reconcile","to":"external:entry.v!.destroy","kind":"calls","metadata":{"unresolvedName":"entry.v!.destroy"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:reconcile","to":"external:entry.h!.destroy","kind":"calls","metadata":{"unresolvedName":"entry.h!.destroy"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scan","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scan","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scan","to":"external:document.contains","kind":"calls","metadata":{"unresolvedName":"document.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scan","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:isScrollable","kind":"calls","metadata":{"unresolvedName":"isScrollable"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scan","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:detach","kind":"calls","metadata":{"unresolvedName":"detach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scan","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:reconcile","kind":"calls","metadata":{"unresolvedName":"reconcile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scan","to":"external:document.createTreeWalker","kind":"calls","metadata":{"unresolvedName":"document.createTreeWalker"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scan","to":"external:entries.has","kind":"calls","metadata":{"unresolvedName":"entries.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scan","to":"external:el.hasAttribute","kind":"calls","metadata":{"unresolvedName":"el.hasAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scan","to":"external:el.classList.contains","kind":"calls","metadata":{"unresolvedName":"el.classList.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scan","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:attach","kind":"calls","metadata":{"unresolvedName":"attach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scan","to":"external:walker.nextNode","kind":"calls","metadata":{"unresolvedName":"walker.nextNode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:initOverlayScrollbars","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:initOverlayScrollbars","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:initOverlayScrollbars","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scan","kind":"calls","metadata":{"unresolvedName":"scan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:initOverlayScrollbars","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:initOverlayScrollbars","to":"external:new MutationObserver(debounceScan).observe","kind":"calls","metadata":{"unresolvedName":"new MutationObserver(debounceScan).observe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:initOverlayScrollbars","to":"external:window.addEventListener","kind":"calls","metadata":{"unresolvedName":"window.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:initOverlayScrollbars","to":"external:document.addEventListener","kind":"calls","metadata":{"unresolvedName":"document.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:initOverlayScrollbars","to":"external:entries.values","kind":"calls","metadata":{"unresolvedName":"entries.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:initOverlayScrollbars","to":"external:e.v?.update","kind":"calls","metadata":{"unresolvedName":"e.v?.update"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:initOverlayScrollbars","to":"external:e.h?.update","kind":"calls","metadata":{"unresolvedName":"e.h?.update"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:debounceScan","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:debounceScan","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:debounceScan","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:debounceScan","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scan","kind":"calls","metadata":{"unresolvedName":"scan"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:scan","kind":"calls","metadata":{"unresolvedName":"scan"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:","to":"external:entries.values","kind":"calls","metadata":{"unresolvedName":"entries.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:","to":"external:e.v?.update","kind":"calls","metadata":{"unresolvedName":"e.v?.update"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts:","to":"external:e.h?.update","kind":"calls","metadata":{"unresolvedName":"e.h?.update"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"external:shiki/core","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"external:shiki/engine/oniguruma","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"external:shiki/onig.wasm?url","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"external:shiki/langs","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"external:shiki/themes","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:loadOnigWasm","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:loadOnigWasm","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:loadOnigWasm","to":"external:fetch(onigWasmUrl).then","kind":"calls","metadata":{"unresolvedName":"fetch(onigWasmUrl).then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:loadOnigWasm","to":"symbol-name:fetch","kind":"calls","metadata":{"unresolvedName":"fetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:loadOnigWasm","to":"external:response.arrayBuffer","kind":"calls","metadata":{"unresolvedName":"response.arrayBuffer"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:","to":"external:response.arrayBuffer","kind":"calls","metadata":{"unresolvedName":"response.arrayBuffer"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:getHighlighter","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:getHighlighter","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:getHighlighter","to":"external:Promise.resolve","kind":"calls","metadata":{"unresolvedName":"Promise.resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:getHighlighter","to":"symbol-name:createHighlighterCore","kind":"calls","metadata":{"unresolvedName":"createHighlighterCore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:getHighlighter","to":"symbol-name:createOnigurumaEngine","kind":"calls","metadata":{"unresolvedName":"createOnigurumaEngine"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:getHighlighter","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:ensureLang","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:ensureLang","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:ensureLang","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:getHighlighter","kind":"calls","metadata":{"unresolvedName":"getHighlighter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:ensureLang","to":"external:h.getLoadedLanguages","kind":"calls","metadata":{"unresolvedName":"h.getLoadedLanguages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:ensureLang","to":"external:loaded.includes","kind":"calls","metadata":{"unresolvedName":"loaded.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:ensureLang","to":"external:loadingLangs.get","kind":"calls","metadata":{"unresolvedName":"loadingLangs.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:ensureLang","to":"external:h.loadLanguage(loader as Parameters[0]).then","kind":"calls","metadata":{"unresolvedName":"h.loadLanguage(loader as Parameters[0]).then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:ensureLang","to":"external:h.loadLanguage","kind":"calls","metadata":{"unresolvedName":"h.loadLanguage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:ensureLang","to":"external:loadingLangs.delete","kind":"calls","metadata":{"unresolvedName":"loadingLangs.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:ensureLang","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:ensureLang","to":"external:loadingLangs.set","kind":"calls","metadata":{"unresolvedName":"loadingLangs.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:ensureLang","to":"external:h.getLoadedLanguages().includes","kind":"calls","metadata":{"unresolvedName":"h.getLoadedLanguages().includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:","to":"external:loadingLangs.delete","kind":"calls","metadata":{"unresolvedName":"loadingLangs.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:","to":"external:loadingLangs.delete","kind":"calls","metadata":{"unresolvedName":"loadingLangs.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:codeToHtml","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:codeToHtml","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:codeToHtml","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:getHighlighter","kind":"calls","metadata":{"unresolvedName":"getHighlighter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:codeToHtml","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:ensureLang","kind":"calls","metadata":{"unresolvedName":"ensureLang"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:codeToHtml","to":"external:h.codeToHtml","kind":"calls","metadata":{"unresolvedName":"h.codeToHtml"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:codeToTokens","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:codeToTokens","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:codeToTokens","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:getHighlighter","kind":"calls","metadata":{"unresolvedName":"getHighlighter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:codeToTokens","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:ensureLang","kind":"calls","metadata":{"unresolvedName":"ensureLang"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:codeToTokens","to":"external:h.codeToTokens","kind":"calls","metadata":{"unresolvedName":"h.codeToTokens"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:isSupportedLanguage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:isSupportedLanguage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts:isSupportedLanguage","to":"external:supportedLangs.has","kind":"calls","metadata":{"unresolvedName":"supportedLangs.has"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts","to":"external:node:fs","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts","to":"external:node:path","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts","to":"external:node:url","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:readLocaleFile","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:readLocaleFile","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:readLocaleFile","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:readLocaleFile","to":"symbol-name:readFileSync","kind":"calls","metadata":{"unresolvedName":"readFileSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:readLocaleFile","to":"symbol-name:join","kind":"calls","metadata":{"unresolvedName":"join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:flattenKeys","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:flattenKeys","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:flattenKeys","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:flattenKeys","to":"external:Object.entries(value).flatMap","kind":"calls","metadata":{"unresolvedName":"Object.entries(value).flatMap"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:flattenKeys","to":"external:Object.entries","kind":"calls","metadata":{"unresolvedName":"Object.entries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:flattenKeys","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:flattenKeys","kind":"calls","metadata":{"unresolvedName":"flattenKeys"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:readdirSync(join(LOCALES_DIR, BASE_LOCALE))\n .filter","kind":"calls","metadata":{"unresolvedName":"readdirSync(join(LOCALES_DIR, BASE_LOCALE))\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"symbol-name:readdirSync","kind":"calls","metadata":{"unresolvedName":"readdirSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"symbol-name:join","kind":"calls","metadata":{"unresolvedName":"join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:file.endsWith","kind":"calls","metadata":{"unresolvedName":"file.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:readdirSync(LOCALES_DIR)\n .filter","kind":"calls","metadata":{"unresolvedName":"readdirSync(LOCALES_DIR)\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:entry.endsWith","kind":"calls","metadata":{"unresolvedName":"entry.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:expect(locales).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(locales).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:[...EXPECTED_LOCALES].sort","kind":"calls","metadata":{"unresolvedName":"[...EXPECTED_LOCALES].sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:readdirSync(join(LOCALES_DIR, locale))\n .filter","kind":"calls","metadata":{"unresolvedName":"readdirSync(join(LOCALES_DIR, locale))\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:expect(localeNamespaces).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(localeNamespaces).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:expect(flattenKeys(readLocaleFile(locale, namespace)).sort()).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(flattenKeys(readLocaleFile(locale, namespace)).sort()).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:flattenKeys(readLocaleFile(locale, namespace)).sort","kind":"calls","metadata":{"unresolvedName":"flattenKeys(readLocaleFile(locale, namespace)).sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:flattenKeys","kind":"calls","metadata":{"unresolvedName":"flattenKeys"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:readLocaleFile","kind":"calls","metadata":{"unresolvedName":"readLocaleFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:flattenKeys(readLocaleFile(BASE_LOCALE, namespace)).sort","kind":"calls","metadata":{"unresolvedName":"flattenKeys(readLocaleFile(BASE_LOCALE, namespace)).sort"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:readdirSync(LOCALES_DIR)\n .filter","kind":"calls","metadata":{"unresolvedName":"readdirSync(LOCALES_DIR)\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"symbol-name:readdirSync","kind":"calls","metadata":{"unresolvedName":"readdirSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:entry.endsWith","kind":"calls","metadata":{"unresolvedName":"entry.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:expect(locales).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(locales).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:[...EXPECTED_LOCALES].sort","kind":"calls","metadata":{"unresolvedName":"[...EXPECTED_LOCALES].sort"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:readdirSync(join(LOCALES_DIR, locale))\n .filter","kind":"calls","metadata":{"unresolvedName":"readdirSync(join(LOCALES_DIR, locale))\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"symbol-name:readdirSync","kind":"calls","metadata":{"unresolvedName":"readdirSync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"symbol-name:join","kind":"calls","metadata":{"unresolvedName":"join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:file.endsWith","kind":"calls","metadata":{"unresolvedName":"file.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:expect(localeNamespaces).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(localeNamespaces).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:expect(flattenKeys(readLocaleFile(locale, namespace)).sort()).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(flattenKeys(readLocaleFile(locale, namespace)).sort()).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:flattenKeys(readLocaleFile(locale, namespace)).sort","kind":"calls","metadata":{"unresolvedName":"flattenKeys(readLocaleFile(locale, namespace)).sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:flattenKeys","kind":"calls","metadata":{"unresolvedName":"flattenKeys"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:readLocaleFile","kind":"calls","metadata":{"unresolvedName":"readLocaleFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/locales/locales.test.ts:","to":"external:flattenKeys(readLocaleFile(BASE_LOCALE, namespace)).sort","kind":"calls","metadata":{"unresolvedName":"flattenKeys(readLocaleFile(BASE_LOCALE, namespace)).sort"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"external:react-dom/client","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"external:katex/dist/katex.min.css","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/index.css","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/i18n.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/overlayScrollbar.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/App.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/ErrorBoundary.tsx","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/contexts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:ensureRandomUUID","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:ensureRandomUUID","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:ensureRandomUUID","to":"external:cryptoObj.getRandomValues","kind":"calls","metadata":{"unresolvedName":"cryptoObj.getRandomValues"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:ensureRandomUUID","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:ensureRandomUUID","to":"external:b.toString(16).padStart","kind":"calls","metadata":{"unresolvedName":"b.toString(16).padStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:ensureRandomUUID","to":"external:b.toString","kind":"calls","metadata":{"unresolvedName":"b.toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:ensureRandomUUID","to":"external:hex.slice(0, 4).join","kind":"calls","metadata":{"unresolvedName":"hex.slice(0, 4).join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:ensureRandomUUID","to":"external:hex.slice","kind":"calls","metadata":{"unresolvedName":"hex.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:ensureRandomUUID","to":"external:hex.slice(4, 6).join","kind":"calls","metadata":{"unresolvedName":"hex.slice(4, 6).join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:ensureRandomUUID","to":"external:hex.slice(6, 8).join","kind":"calls","metadata":{"unresolvedName":"hex.slice(6, 8).join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:ensureRandomUUID","to":"external:hex.slice(8, 10).join","kind":"calls","metadata":{"unresolvedName":"hex.slice(8, 10).join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:ensureRandomUUID","to":"external:hex.slice(10).join","kind":"calls","metadata":{"unresolvedName":"hex.slice(10).join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:cryptoObj.getRandomValues","kind":"calls","metadata":{"unresolvedName":"cryptoObj.getRandomValues"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:b.toString(16).padStart","kind":"calls","metadata":{"unresolvedName":"b.toString(16).padStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:b.toString","kind":"calls","metadata":{"unresolvedName":"b.toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:hex.slice(0, 4).join","kind":"calls","metadata":{"unresolvedName":"hex.slice(0, 4).join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:hex.slice","kind":"calls","metadata":{"unresolvedName":"hex.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:hex.slice(4, 6).join","kind":"calls","metadata":{"unresolvedName":"hex.slice(4, 6).join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:hex.slice(6, 8).join","kind":"calls","metadata":{"unresolvedName":"hex.slice(6, 8).join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:hex.slice(8, 10).join","kind":"calls","metadata":{"unresolvedName":"hex.slice(8, 10).join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:hex.slice(10).join","kind":"calls","metadata":{"unresolvedName":"hex.slice(10).join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:messageStore.clearAll","kind":"calls","metadata":{"unresolvedName":"messageStore.clearAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:childSessionStore.clearAll","kind":"calls","metadata":{"unresolvedName":"childSessionStore.clearAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:todoStore.clearAll","kind":"calls","metadata":{"unresolvedName":"todoStore.clearAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:resetPathModeCache","kind":"calls","metadata":{"unresolvedName":"resetPathModeCache"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:autoApproveStore.reloadFromStorage","kind":"calls","metadata":{"unresolvedName":"autoApproveStore.reloadFromStorage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/events.ts:reconnectSSE","kind":"calls","metadata":{"unresolvedName":"reconnectSSE"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:serviceStore.setStarting","kind":"calls","metadata":{"unresolvedName":"serviceStore.setStarting"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"symbol-name:invoke","kind":"calls","metadata":{"unresolvedName":"invoke"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:serviceStore.setStartedByUs","kind":"calls","metadata":{"unresolvedName":"serviceStore.setStartedByUs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:serviceStore.setRunning","kind":"calls","metadata":{"unresolvedName":"serviceStore.setRunning"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:console.info","kind":"calls","metadata":{"unresolvedName":"console.info"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:serviceStore.setStartedByUs","kind":"calls","metadata":{"unresolvedName":"serviceStore.setStartedByUs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:serviceStore.setRunning","kind":"calls","metadata":{"unresolvedName":"serviceStore.setRunning"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:serviceStore.setStarting","kind":"calls","metadata":{"unresolvedName":"serviceStore.setStarting"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:console.info","kind":"calls","metadata":{"unresolvedName":"console.info"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:serviceStore.setStarting","kind":"calls","metadata":{"unresolvedName":"serviceStore.setStarting"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"symbol-name:apiErrorHandler","kind":"calls","metadata":{"unresolvedName":"apiErrorHandler"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"symbol-name:globalErrorHandler","kind":"calls","metadata":{"unresolvedName":"globalErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"symbol-name:globalErrorHandler","kind":"calls","metadata":{"unresolvedName":"globalErrorHandler"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:","to":"external:event.preventDefault","kind":"calls","metadata":{"unresolvedName":"event.preventDefault"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:bootstrap","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:bootstrap","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:bootstrap","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:bootstrap","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:bootstrap","to":"symbol-name:invoke","kind":"calls","metadata":{"unresolvedName":"invoke"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:bootstrap","to":"external:console.log","kind":"calls","metadata":{"unresolvedName":"console.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:bootstrap","to":"external:console.error","kind":"calls","metadata":{"unresolvedName":"console.error"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:bootstrap","to":"external:createRoot(document.getElementById('root')!).render","kind":"calls","metadata":{"unresolvedName":"createRoot(document.getElementById('root')!).render"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:bootstrap","to":"symbol-name:createRoot","kind":"calls","metadata":{"unresolvedName":"createRoot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/main.tsx:bootstrap","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:activeSessionStore.initialize","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.initialize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:activeSessionStore.initializePendingRequests","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.initializePendingRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:activeSessionStore.mergeStatusRefresh","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.mergeStatusRefresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:activeSessionStore.getBusySessions().map","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.getBusySessions().map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:activeSessionStore.getBusySessions","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.getBusySessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:activeSessionStore.addPendingRequest","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.addPendingRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:activeSessionStore.mergePendingRequests","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.mergePendingRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:expect(activeSessionStore.getBusySessions()[0]?.pendingAction).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(activeSessionStore.getBusySessions()[0]?.pendingAction).toEqual"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:activeSessionStore.initialize","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.initialize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:activeSessionStore.initializePendingRequests","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.initializePendingRequests"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:activeSessionStore.initialize","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.initialize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:activeSessionStore.mergeStatusRefresh","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.mergeStatusRefresh"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:activeSessionStore.getBusySessions().map","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.getBusySessions().map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:activeSessionStore.getBusySessions","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.getBusySessions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:activeSessionStore.initialize","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.initialize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:activeSessionStore.getBusySessions().map","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.getBusySessions().map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:activeSessionStore.getBusySessions","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.getBusySessions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:activeSessionStore.addPendingRequest","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.addPendingRequest"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:activeSessionStore.mergePendingRequests","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.mergePendingRequests"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:activeSessionStore.getBusySessions().map","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.getBusySessions().map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:activeSessionStore.getBusySessions","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.getBusySessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.test.ts:","to":"external:expect(activeSessionStore.getBusySessions()[0]?.pendingAction).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(activeSessionStore.getBusySessions()[0]?.pendingAction).toEqual"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/session.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:","to":"external:this.subscribers.add","kind":"calls","metadata":{"unresolvedName":"this.subscribers.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:","to":"external:this.subscribers.delete","kind":"calls","metadata":{"unresolvedName":"this.subscribers.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:notify","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:notify","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:notify","to":"external:this.recomputeDerived","kind":"calls","metadata":{"unresolvedName":"this.recomputeDerived"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:notify","to":"external:this.subscribers.forEach","kind":"calls","metadata":{"unresolvedName":"this.subscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:notify","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:recomputeDerived","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:recomputeDerived","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:recomputeDerived","to":"external:Object.entries(this.state.statusMap)\r\n .filter","kind":"calls","metadata":{"unresolvedName":"Object.entries(this.state.statusMap)\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:recomputeDerived","to":"external:Object.entries","kind":"calls","metadata":{"unresolvedName":"Object.entries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:recomputeDerived","to":"external:this.sessionMeta.get","kind":"calls","metadata":{"unresolvedName":"this.sessionMeta.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:recomputeDerived","to":"external:this.findPendingForSession","kind":"calls","metadata":{"unresolvedName":"this.findPendingForSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:","to":"external:this.sessionMeta.get","kind":"calls","metadata":{"unresolvedName":"this.sessionMeta.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:","to":"external:this.findPendingForSession","kind":"calls","metadata":{"unresolvedName":"this.findPendingForSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:findPendingForSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:findPendingForSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:findPendingForSession","to":"external:this.pendingRequests.values","kind":"calls","metadata":{"unresolvedName":"this.pendingRequests.values"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:hasPendingForSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:hasPendingForSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:hasPendingForSession","to":"external:this.pendingRequests.values","kind":"calls","metadata":{"unresolvedName":"this.pendingRequests.values"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:applyStatusSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:applyStatusSnapshot","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:applyStatusSnapshot","to":"external:Object.entries","kind":"calls","metadata":{"unresolvedName":"Object.entries"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:initialize","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:initialize","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:initialize","to":"external:this.applyStatusSnapshot","kind":"calls","metadata":{"unresolvedName":"this.applyStatusSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:initialize","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:mergeStatusRefresh","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:mergeStatusRefresh","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:mergeStatusRefresh","to":"external:this.applyStatusSnapshot","kind":"calls","metadata":{"unresolvedName":"this.applyStatusSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:mergeStatusRefresh","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:initializePendingRequests","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:initializePendingRequests","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:initializePendingRequests","to":"external:this.applyPendingSnapshot","kind":"calls","metadata":{"unresolvedName":"this.applyPendingSnapshot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:mergePendingRequests","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:mergePendingRequests","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:mergePendingRequests","to":"external:this.applyPendingSnapshot","kind":"calls","metadata":{"unresolvedName":"this.applyPendingSnapshot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:applyPendingSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:applyPendingSnapshot","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:applyPendingSnapshot","to":"external:pendingRequests.set","kind":"calls","metadata":{"unresolvedName":"pendingRequests.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:applyPendingSnapshot","to":"external:deferredIdleSessions.add","kind":"calls","metadata":{"unresolvedName":"deferredIdleSessions.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:applyPendingSnapshot","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:addPendingRequest","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:addPendingRequest","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:addPendingRequest","to":"external:this.pendingRequests.set","kind":"calls","metadata":{"unresolvedName":"this.pendingRequests.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:addPendingRequest","to":"external:this.deferredIdleSessions.add","kind":"calls","metadata":{"unresolvedName":"this.deferredIdleSessions.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:addPendingRequest","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:resolvePendingRequest","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:resolvePendingRequest","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:resolvePendingRequest","to":"external:this.pendingRequests.get","kind":"calls","metadata":{"unresolvedName":"this.pendingRequests.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:resolvePendingRequest","to":"external:this.pendingRequests.delete","kind":"calls","metadata":{"unresolvedName":"this.pendingRequests.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:resolvePendingRequest","to":"external:this.deferredIdleSessions.has","kind":"calls","metadata":{"unresolvedName":"this.deferredIdleSessions.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:resolvePendingRequest","to":"external:this.hasPendingForSession","kind":"calls","metadata":{"unresolvedName":"this.hasPendingForSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:resolvePendingRequest","to":"external:this.deferredIdleSessions.delete","kind":"calls","metadata":{"unresolvedName":"this.deferredIdleSessions.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:resolvePendingRequest","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:updateStatus","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:updateStatus","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:updateStatus","to":"external:this.hasPendingForSession","kind":"calls","metadata":{"unresolvedName":"this.hasPendingForSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:updateStatus","to":"external:this.deferredIdleSessions.add","kind":"calls","metadata":{"unresolvedName":"this.deferredIdleSessions.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:updateStatus","to":"external:this.deferredIdleSessions.delete","kind":"calls","metadata":{"unresolvedName":"this.deferredIdleSessions.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:updateStatus","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:setSessionMeta","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:setSessionMeta","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:setSessionMeta","to":"external:this.sessionMeta.get","kind":"calls","metadata":{"unresolvedName":"this.sessionMeta.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:setSessionMeta","to":"external:this.sessionMeta.set","kind":"calls","metadata":{"unresolvedName":"this.sessionMeta.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:setSessionMeta","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:setSessionMetaBulk","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:setSessionMetaBulk","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:setSessionMetaBulk","to":"external:this.sessionMeta.get","kind":"calls","metadata":{"unresolvedName":"this.sessionMeta.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:setSessionMetaBulk","to":"external:this.sessionMeta.set","kind":"calls","metadata":{"unresolvedName":"this.sessionMeta.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:setSessionMetaBulk","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:getSessionMeta","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:getSessionMeta","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:getSessionMeta","to":"external:this.sessionMeta.get","kind":"calls","metadata":{"unresolvedName":"this.sessionMeta.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:getBusySessions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:getBusySessions","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useActiveSessionStore","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useActiveSessionStore","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useActiveSessionStore","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useBusySessions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useBusySessions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useBusySessions","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useBusyCount","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useBusyCount","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useBusyCount","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useSessionActiveEntry","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useSessionActiveEntry","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useSessionActiveEntry","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useSessionActiveEntry","to":"external:activeSessionStore.getBusySessions().find","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.getBusySessions().find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useSessionActiveEntry","to":"external:activeSessionStore.getBusySessions","kind":"calls","metadata":{"unresolvedName":"activeSessionStore.getBusySessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/activeSessionStore.ts:useSessionActiveEntry","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:wildcardMatch","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:wildcardMatch","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:wildcardMatch","to":"external:pattern\r\n .replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&') // 转义特殊字符\r\n .replace","kind":"calls","metadata":{"unresolvedName":"pattern\r\n .replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&') // 转义特殊字符\r\n .replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:wildcardMatch","to":"external:pattern\r\n .replace","kind":"calls","metadata":{"unresolvedName":"pattern\r\n .replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:wildcardMatch","to":"external:regex.test","kind":"calls","metadata":{"unresolvedName":"regex.test"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:reloadFromStorage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:reloadFromStorage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:reloadFromStorage","to":"external:serverStorage.get","kind":"calls","metadata":{"unresolvedName":"serverStorage.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:reloadFromStorage","to":"external:this.rulesMap.clear","kind":"calls","metadata":{"unresolvedName":"this.rulesMap.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:reloadFromStorage","to":"external:this._paneFullAutoModes.clear","kind":"calls","metadata":{"unresolvedName":"this._paneFullAutoModes.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:reloadFromStorage","to":"external:this._fullAutoListeners.forEach","kind":"calls","metadata":{"unresolvedName":"this._fullAutoListeners.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:reloadFromStorage","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setEnabled","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setEnabled","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setEnabled","to":"external:serverStorage.set","kind":"calls","metadata":{"unresolvedName":"serverStorage.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setEnabled","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setFullAutoMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setFullAutoMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setFullAutoMode","to":"external:this._fullAutoListeners.forEach","kind":"calls","metadata":{"unresolvedName":"this._fullAutoListeners.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setFullAutoMode","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:getPaneFullAutoMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:getPaneFullAutoMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:getPaneFullAutoMode","to":"external:this._paneFullAutoModes.get","kind":"calls","metadata":{"unresolvedName":"this._paneFullAutoModes.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setPaneFullAutoMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setPaneFullAutoMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setPaneFullAutoMode","to":"external:this._paneFullAutoModes.delete","kind":"calls","metadata":{"unresolvedName":"this._paneFullAutoModes.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setPaneFullAutoMode","to":"external:this.setFullAutoMode","kind":"calls","metadata":{"unresolvedName":"this.setFullAutoMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setPaneFullAutoMode","to":"external:this._paneFullAutoModes.set","kind":"calls","metadata":{"unresolvedName":"this._paneFullAutoModes.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setPaneFullAutoMode","to":"external:this._fullAutoListeners.forEach","kind":"calls","metadata":{"unresolvedName":"this._fullAutoListeners.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setPaneFullAutoMode","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:clearPaneFullAutoMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:clearPaneFullAutoMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:clearPaneFullAutoMode","to":"external:this._paneFullAutoModes.delete","kind":"calls","metadata":{"unresolvedName":"this._paneFullAutoModes.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:cyclePaneFullAutoMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:cyclePaneFullAutoMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:cyclePaneFullAutoMode","to":"external:this.getPaneFullAutoMode","kind":"calls","metadata":{"unresolvedName":"this.getPaneFullAutoMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:cyclePaneFullAutoMode","to":"external:this.setPaneFullAutoMode","kind":"calls","metadata":{"unresolvedName":"this.setPaneFullAutoMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:cyclePaneFullAutoMode","to":"external:this._paneFullAutoModes.delete","kind":"calls","metadata":{"unresolvedName":"this._paneFullAutoModes.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:cyclePaneFullAutoMode","to":"external:this.setFullAutoMode","kind":"calls","metadata":{"unresolvedName":"this.setFullAutoMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setFullAuto","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setFullAuto","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:setFullAuto","to":"external:this.setFullAutoMode","kind":"calls","metadata":{"unresolvedName":"this.setFullAutoMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:onFullAutoChange","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:onFullAutoChange","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:onFullAutoChange","to":"external:this._fullAutoListeners.add","kind":"calls","metadata":{"unresolvedName":"this._fullAutoListeners.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:onFullAutoChange","to":"external:this._fullAutoListeners.delete","kind":"calls","metadata":{"unresolvedName":"this._fullAutoListeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:","to":"external:this._fullAutoListeners.delete","kind":"calls","metadata":{"unresolvedName":"this._fullAutoListeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:addRules","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:addRules","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:addRules","to":"external:this.rulesMap.get","kind":"calls","metadata":{"unresolvedName":"this.rulesMap.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:addRules","to":"external:patterns.map","kind":"calls","metadata":{"unresolvedName":"patterns.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:addRules","to":"external:uniqueRules.some","kind":"calls","metadata":{"unresolvedName":"uniqueRules.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:addRules","to":"external:uniqueRules.push","kind":"calls","metadata":{"unresolvedName":"uniqueRules.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:addRules","to":"external:this.rulesMap.set","kind":"calls","metadata":{"unresolvedName":"this.rulesMap.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:getRules","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:getRules","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:getRules","to":"external:this.rulesMap.get","kind":"calls","metadata":{"unresolvedName":"this.rulesMap.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:clearRules","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:clearRules","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:clearRules","to":"external:this.rulesMap.delete","kind":"calls","metadata":{"unresolvedName":"this.rulesMap.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:clearAllRules","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:clearAllRules","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:clearAllRules","to":"external:this.rulesMap.clear","kind":"calls","metadata":{"unresolvedName":"this.rulesMap.clear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:shouldAutoApprove","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:shouldAutoApprove","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:shouldAutoApprove","to":"external:this.getRules","kind":"calls","metadata":{"unresolvedName":"this.getRules"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:shouldAutoApprove","to":"external:requestPatterns.every","kind":"calls","metadata":{"unresolvedName":"requestPatterns.every"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:shouldAutoApprove","to":"external:rules.some","kind":"calls","metadata":{"unresolvedName":"rules.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:shouldAutoApprove","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:wildcardMatch","kind":"calls","metadata":{"unresolvedName":"wildcardMatch"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:","to":"external:rules.some","kind":"calls","metadata":{"unresolvedName":"rules.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:wildcardMatch","kind":"calls","metadata":{"unresolvedName":"wildcardMatch"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:wildcardMatch","kind":"calls","metadata":{"unresolvedName":"wildcardMatch"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:getDebugInfo","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:getDebugInfo","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:getDebugInfo","to":"external:Array.from(this.rulesMap.entries()).map","kind":"calls","metadata":{"unresolvedName":"Array.from(this.rulesMap.entries()).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:getDebugInfo","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/autoApproveStore.ts:getDebugInfo","to":"external:this.rulesMap.entries","kind":"calls","metadata":{"unresolvedName":"this.rulesMap.entries"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:","to":"external:this.subscribers.add","kind":"calls","metadata":{"unresolvedName":"this.subscribers.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:","to":"external:this.subscribers.delete","kind":"calls","metadata":{"unresolvedName":"this.subscribers.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:getMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:getMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:getMode","to":"external:this.modes.get","kind":"calls","metadata":{"unresolvedName":"this.modes.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:setMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:setMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:setMode","to":"external:this.modes.get","kind":"calls","metadata":{"unresolvedName":"this.modes.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:setMode","to":"external:this.modes.set","kind":"calls","metadata":{"unresolvedName":"this.modes.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:setMode","to":"external:this.subscribers.forEach","kind":"calls","metadata":{"unresolvedName":"this.subscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:setMode","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:clearSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:clearSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:clearSession","to":"external:this.modes.delete","kind":"calls","metadata":{"unresolvedName":"this.modes.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:clearSession","to":"external:this.subscribers.forEach","kind":"calls","metadata":{"unresolvedName":"this.subscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:clearSession","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:clearAll","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:clearAll","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:clearAll","to":"external:this.modes.clear","kind":"calls","metadata":{"unresolvedName":"this.modes.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:clearAll","to":"external:this.subscribers.forEach","kind":"calls","metadata":{"unresolvedName":"this.subscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:clearAll","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:useSessionChangeScope","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:useSessionChangeScope","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:useSessionChangeScope","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:useSessionChangeScope","to":"external:changeScopeStore.getMode","kind":"calls","metadata":{"unresolvedName":"changeScopeStore.getMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/changeScopeStore.ts:useSessionChangeScope","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/i18n.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:subscribe","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:subscribe","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:subscribe","to":"external:this.subscribers.add","kind":"calls","metadata":{"unresolvedName":"this.subscribers.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:subscribe","to":"external:this.subscribers.delete","kind":"calls","metadata":{"unresolvedName":"this.subscribers.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:notify","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:notify","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:notify","to":"external:this.subscribers.forEach","kind":"calls","metadata":{"unresolvedName":"this.subscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:notify","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:registerChildSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:registerChildSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:registerChildSession","to":"external:this.childrenByParent.get","kind":"calls","metadata":{"unresolvedName":"this.childrenByParent.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:registerChildSession","to":"external:this.childrenByParent.set","kind":"calls","metadata":{"unresolvedName":"this.childrenByParent.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:registerChildSession","to":"external:children.add","kind":"calls","metadata":{"unresolvedName":"children.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:registerChildSession","to":"external:this.sessionInfo.set","kind":"calls","metadata":{"unresolvedName":"this.sessionInfo.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:registerChildSession","to":"external:i18n.t","kind":"calls","metadata":{"unresolvedName":"i18n.t"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:registerChildSession","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:updateChildSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:updateChildSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:updateChildSession","to":"external:this.sessionInfo.get","kind":"calls","metadata":{"unresolvedName":"this.sessionInfo.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:updateChildSession","to":"external:Object.assign","kind":"calls","metadata":{"unresolvedName":"Object.assign"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:updateChildSession","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:markIdle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:markIdle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:markIdle","to":"external:this.updateChildSession","kind":"calls","metadata":{"unresolvedName":"this.updateChildSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:markError","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:markError","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:markError","to":"external:this.updateChildSession","kind":"calls","metadata":{"unresolvedName":"this.updateChildSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessionIds","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessionIds","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessionIds","to":"external:this.childrenByParent.get","kind":"calls","metadata":{"unresolvedName":"this.childrenByParent.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessionIds","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessions","to":"external:this.getChildSessionIds","kind":"calls","metadata":{"unresolvedName":"this.getChildSessionIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessions","to":"external:childIds.map(id => this.sessionInfo.get(id)).filter","kind":"calls","metadata":{"unresolvedName":"childIds.map(id => this.sessionInfo.get(id)).filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessions","to":"external:childIds.map","kind":"calls","metadata":{"unresolvedName":"childIds.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessions","to":"external:this.sessionInfo.get","kind":"calls","metadata":{"unresolvedName":"this.sessionInfo.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionInfo","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionInfo","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionInfo","to":"external:this.sessionInfo.get","kind":"calls","metadata":{"unresolvedName":"this.sessionInfo.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:isChildOf","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:isChildOf","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:isChildOf","to":"external:this.sessionInfo.get","kind":"calls","metadata":{"unresolvedName":"this.sessionInfo.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:isChildOf","to":"external:this.isChildOf","kind":"calls","metadata":{"unresolvedName":"this.isChildOf"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionAndDescendants","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionAndDescendants","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionAndDescendants","to":"external:this.getChildSessionIds","kind":"calls","metadata":{"unresolvedName":"this.getChildSessionIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionAndDescendants","to":"external:result.push","kind":"calls","metadata":{"unresolvedName":"result.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionAndDescendants","to":"external:this.getSessionAndDescendants","kind":"calls","metadata":{"unresolvedName":"this.getSessionAndDescendants"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:belongsToSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:belongsToSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:belongsToSession","to":"external:this.isChildOf","kind":"calls","metadata":{"unresolvedName":"this.isChildOf"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:clearAll","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:clearAll","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:clearAll","to":"external:this.childrenByParent.clear","kind":"calls","metadata":{"unresolvedName":"this.childrenByParent.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:clearAll","to":"external:this.sessionInfo.clear","kind":"calls","metadata":{"unresolvedName":"this.sessionInfo.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:clearAll","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:clearChildren","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:clearChildren","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:clearChildren","to":"external:this.childrenByParent.get","kind":"calls","metadata":{"unresolvedName":"this.childrenByParent.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:clearChildren","to":"external:this.sessionInfo.delete","kind":"calls","metadata":{"unresolvedName":"this.sessionInfo.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:clearChildren","to":"external:this.clearChildren","kind":"calls","metadata":{"unresolvedName":"this.clearChildren"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:clearChildren","to":"external:this.childrenByParent.delete","kind":"calls","metadata":{"unresolvedName":"this.childrenByParent.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:clearChildren","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:","to":"external:childSessionsCache.clear","kind":"calls","metadata":{"unresolvedName":"childSessionsCache.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:","to":"external:sessionFamilyCache.clear","kind":"calls","metadata":{"unresolvedName":"sessionFamilyCache.clear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessionsSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessionsSnapshot","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessionsSnapshot","to":"external:childSessionsCache.has","kind":"calls","metadata":{"unresolvedName":"childSessionsCache.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessionsSnapshot","to":"external:childSessionsCache.set","kind":"calls","metadata":{"unresolvedName":"childSessionsCache.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessionsSnapshot","to":"external:childSessionsCache.get","kind":"calls","metadata":{"unresolvedName":"childSessionsCache.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessionsSnapshot","to":"external:childSessionStore.getChildSessions","kind":"calls","metadata":{"unresolvedName":"childSessionStore.getChildSessions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionFamilySnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionFamilySnapshot","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionFamilySnapshot","to":"external:sessionFamilyCache.has","kind":"calls","metadata":{"unresolvedName":"sessionFamilyCache.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionFamilySnapshot","to":"external:sessionFamilyCache.set","kind":"calls","metadata":{"unresolvedName":"sessionFamilyCache.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionFamilySnapshot","to":"external:sessionFamilyCache.get","kind":"calls","metadata":{"unresolvedName":"sessionFamilyCache.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionFamilySnapshot","to":"external:childSessionStore.getSessionAndDescendants","kind":"calls","metadata":{"unresolvedName":"childSessionStore.getSessionAndDescendants"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:useChildSessions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:useChildSessions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:useChildSessions","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:useChildSessions","to":"external:childSessionStore.subscribe","kind":"calls","metadata":{"unresolvedName":"childSessionStore.subscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:useChildSessions","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getChildSessionsSnapshot","kind":"calls","metadata":{"unresolvedName":"getChildSessionsSnapshot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:useSessionFamily","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:useSessionFamily","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:useSessionFamily","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:useSessionFamily","to":"external:childSessionStore.subscribe","kind":"calls","metadata":{"unresolvedName":"childSessionStore.subscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:useSessionFamily","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/childSessionStore.ts:getSessionFamilySnapshot","kind":"calls","metadata":{"unresolvedName":"getSessionFamilySnapshot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:cloneAttachments","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:cloneAttachments","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:cloneAttachments","to":"external:attachments.map","kind":"calls","metadata":{"unresolvedName":"attachments.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:","to":"external:this.listeners.add","kind":"calls","metadata":{"unresolvedName":"this.listeners.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:","to":"external:this.listeners.delete","kind":"calls","metadata":{"unresolvedName":"this.listeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:emit","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:emit","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:emit","to":"external:this.listeners.forEach","kind":"calls","metadata":{"unresolvedName":"this.listeners.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:emit","to":"symbol-name:listener","kind":"calls","metadata":{"unresolvedName":"listener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:setState","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:setState","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:setState","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:enqueue","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:enqueue","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:enqueue","to":"external:crypto.randomUUID().replace","kind":"calls","metadata":{"unresolvedName":"crypto.randomUUID().replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:enqueue","to":"external:crypto.randomUUID","kind":"calls","metadata":{"unresolvedName":"crypto.randomUUID"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:enqueue","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:enqueue","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:cloneAttachments","kind":"calls","metadata":{"unresolvedName":"cloneAttachments"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:enqueue","to":"external:this.setState","kind":"calls","metadata":{"unresolvedName":"this.setState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:remove","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:remove","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:remove","to":"external:current.filter","kind":"calls","metadata":{"unresolvedName":"current.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:remove","to":"external:this.setState","kind":"calls","metadata":{"unresolvedName":"this.setState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:markFailed","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:markFailed","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:markFailed","to":"external:this.setState","kind":"calls","metadata":{"unresolvedName":"this.setState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:clearFailed","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:clearFailed","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:clearFailed","to":"external:this.setState","kind":"calls","metadata":{"unresolvedName":"this.setState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:startSending","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:startSending","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:startSending","to":"external:this.setState","kind":"calls","metadata":{"unresolvedName":"this.setState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:finishSending","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:finishSending","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:finishSending","to":"external:this.setState","kind":"calls","metadata":{"unresolvedName":"this.setState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:getItems","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:getItems","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:getItem","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:getItem","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:getItem","to":"external:this.getItems(sessionId).find","kind":"calls","metadata":{"unresolvedName":"this.getItems(sessionId).find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:getItem","to":"external:this.getItems","kind":"calls","metadata":{"unresolvedName":"this.getItems"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:clearSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:clearSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:clearSession","to":"external:this.setState","kind":"calls","metadata":{"unresolvedName":"this.setState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:getSessionIds","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:getSessionIds","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:getSessionIds","to":"external:Object.keys","kind":"calls","metadata":{"unresolvedName":"Object.keys"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:reset","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:reset","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:reset","to":"external:this.setState","kind":"calls","metadata":{"unresolvedName":"this.setState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:useFollowupQueue","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:useFollowupQueue","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:useFollowupQueue","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/followupQueueStore.ts:useFollowupQueue","to":"symbol-name:useMemo","kind":"calls","metadata":{"unresolvedName":"useMemo"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:keyboardEvent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:keyboardEvent","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","to":"external:keybindingStore.findMatchingAction","kind":"calls","metadata":{"unresolvedName":"keybindingStore.findMatchingAction"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:keyboardEvent","kind":"calls","metadata":{"unresolvedName":"keyboardEvent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","to":"external:expect(keybindingStore.isKeyUsed('Ctrl+C', undefined, 'terminal')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(keybindingStore.isKeyUsed('Ctrl+C', undefined, 'terminal')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","to":"external:keybindingStore.isKeyUsed","kind":"calls","metadata":{"unresolvedName":"keybindingStore.isKeyUsed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","to":"external:expect(keybindingStore.isKeyUsed('Ctrl+C', undefined, 'global')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(keybindingStore.isKeyUsed('Ctrl+C', undefined, 'global')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","to":"external:keybindingStore.findMatchingAction","kind":"calls","metadata":{"unresolvedName":"keybindingStore.findMatchingAction"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:keyboardEvent","kind":"calls","metadata":{"unresolvedName":"keyboardEvent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","to":"external:expect(keybindingStore.isKeyUsed('Ctrl+C', undefined, 'terminal')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(keybindingStore.isKeyUsed('Ctrl+C', undefined, 'terminal')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","to":"external:keybindingStore.isKeyUsed","kind":"calls","metadata":{"unresolvedName":"keybindingStore.isKeyUsed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.test.ts:","to":"external:expect(keybindingStore.isKeyUsed('Ctrl+C', undefined, 'global')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(keybindingStore.isKeyUsed('Ctrl+C', undefined, 'global')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:normalizeKeyName","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:normalizeKeyName","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:normalizeKeyName","to":"external:key.toLowerCase","kind":"calls","metadata":{"unresolvedName":"key.toLowerCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:parseKeybinding","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:parseKeybinding","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:parseKeybinding","to":"external:remaining.includes","kind":"calls","metadata":{"unresolvedName":"remaining.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:parseKeybinding","to":"external:remaining.indexOf","kind":"calls","metadata":{"unresolvedName":"remaining.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:parseKeybinding","to":"external:remaining.substring","kind":"calls","metadata":{"unresolvedName":"remaining.substring"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:parseKeybinding","to":"external:parts.push","kind":"calls","metadata":{"unresolvedName":"parts.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:parseKeybinding","to":"external:modifiers.includes","kind":"calls","metadata":{"unresolvedName":"modifiers.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:parseKeybinding","to":"external:remaining.substring(1).split('+')[0].toLowerCase","kind":"calls","metadata":{"unresolvedName":"remaining.substring(1).split('+')[0].toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:parseKeybinding","to":"external:remaining.substring(1).split","kind":"calls","metadata":{"unresolvedName":"remaining.substring(1).split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:parseKeybinding","to":"external:part.toLowerCase","kind":"calls","metadata":{"unresolvedName":"part.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:parseKeybinding","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:normalizeKeyName","kind":"calls","metadata":{"unresolvedName":"normalizeKeyName"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:normalizeKeybindingString","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:normalizeKeybindingString","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:normalizeKeybindingString","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:parseKeybinding","kind":"calls","metadata":{"unresolvedName":"parseKeybinding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:normalizeKeybindingString","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:keybindingToNormalizedString","kind":"calls","metadata":{"unresolvedName":"keybindingToNormalizedString"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:keybindingToNormalizedString","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:keybindingToNormalizedString","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:keybindingToNormalizedString","to":"external:parts.push","kind":"calls","metadata":{"unresolvedName":"parts.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:keybindingToNormalizedString","to":"external:parts.join","kind":"calls","metadata":{"unresolvedName":"parts.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybinding","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybinding","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybinding","to":"external:parts.push","kind":"calls","metadata":{"unresolvedName":"parts.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybinding","to":"external:keyDisplay.toUpperCase","kind":"calls","metadata":{"unresolvedName":"keyDisplay.toUpperCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybinding","to":"external:keyDisplay.startsWith","kind":"calls","metadata":{"unresolvedName":"keyDisplay.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybinding","to":"external:/^f\\d{1,2}$/.test","kind":"calls","metadata":{"unresolvedName":"/^f\\d{1,2}$/.test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybinding","to":"external:parts.join","kind":"calls","metadata":{"unresolvedName":"parts.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybindingCompact","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybindingCompact","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybindingCompact","to":"external:parts.push","kind":"calls","metadata":{"unresolvedName":"parts.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybindingCompact","to":"external:keyStr.toUpperCase","kind":"calls","metadata":{"unresolvedName":"keyStr.toUpperCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybindingCompact","to":"external:keyStr.startsWith","kind":"calls","metadata":{"unresolvedName":"keyStr.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybindingCompact","to":"external:/^f\\d{1,2}$/.test","kind":"calls","metadata":{"unresolvedName":"/^f\\d{1,2}$/.test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybindingCompact","to":"external:parts.join","kind":"calls","metadata":{"unresolvedName":"parts.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:keyEventToString","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:keyEventToString","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:keyEventToString","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:normalizeKeyName","kind":"calls","metadata":{"unresolvedName":"normalizeKeyName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:keyEventToString","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:formatKeybindingCompact","kind":"calls","metadata":{"unresolvedName":"formatKeybindingCompact"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:matchesKeybinding","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:matchesKeybinding","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:matchesKeybinding","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:parseKeybinding","kind":"calls","metadata":{"unresolvedName":"parseKeybinding"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:matchesKeybinding","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:normalizeKeyName","kind":"calls","metadata":{"unresolvedName":"normalizeKeyName"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:keybindingsEqual","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:keybindingsEqual","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:keybindingsEqual","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:normalizeKeybindingString","kind":"calls","metadata":{"unresolvedName":"normalizeKeybindingString"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:loadFromStorage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:loadFromStorage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:loadFromStorage","to":"external:DEFAULT_KEYBINDINGS.map","kind":"calls","metadata":{"unresolvedName":"DEFAULT_KEYBINDINGS.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:loadFromStorage","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:loadFromStorage","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:saveToStorage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:saveToStorage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:saveToStorage","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:saveToStorage","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:subscribe","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:subscribe","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:subscribe","to":"external:this.listeners.add","kind":"calls","metadata":{"unresolvedName":"this.listeners.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:subscribe","to":"external:this.listeners.delete","kind":"calls","metadata":{"unresolvedName":"this.listeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:notify","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:notify","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:notify","to":"external:this.updateSnapshot","kind":"calls","metadata":{"unresolvedName":"this.updateSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:notify","to":"external:this.listeners.forEach","kind":"calls","metadata":{"unresolvedName":"this.listeners.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:notify","to":"symbol-name:l","kind":"calls","metadata":{"unresolvedName":"l"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:updateSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:updateSnapshot","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:updateSnapshot","to":"external:this.keybindings.map","kind":"calls","metadata":{"unresolvedName":"this.keybindings.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:getAll","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:getAll","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:getByCategory","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:getByCategory","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:getByCategory","to":"external:this.keybindings.filter","kind":"calls","metadata":{"unresolvedName":"this.keybindings.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:getKeybinding","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:getKeybinding","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:getKeybinding","to":"external:this.keybindings.find","kind":"calls","metadata":{"unresolvedName":"this.keybindings.find"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:getKey","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:getKey","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:getKey","to":"external:this.getKeybinding","kind":"calls","metadata":{"unresolvedName":"this.getKeybinding"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:isKeyUsed","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:isKeyUsed","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:isKeyUsed","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:normalizeKeybindingString","kind":"calls","metadata":{"unresolvedName":"normalizeKeybindingString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:isKeyUsed","to":"external:this.keybindings.some","kind":"calls","metadata":{"unresolvedName":"this.keybindings.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:findActionByKey","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:findActionByKey","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:findActionByKey","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:normalizeKeybindingString","kind":"calls","metadata":{"unresolvedName":"normalizeKeybindingString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:findActionByKey","to":"external:this.keybindings.find","kind":"calls","metadata":{"unresolvedName":"this.keybindings.find"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:findMatchingAction","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:findMatchingAction","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:findMatchingAction","to":"external:this.keybindings.find","kind":"calls","metadata":{"unresolvedName":"this.keybindings.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:findMatchingAction","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:matchesKeybinding","kind":"calls","metadata":{"unresolvedName":"matchesKeybinding"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:setKeybinding","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:setKeybinding","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:setKeybinding","to":"external:this.keybindings.find","kind":"calls","metadata":{"unresolvedName":"this.keybindings.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:setKeybinding","to":"external:this.saveToStorage","kind":"calls","metadata":{"unresolvedName":"this.saveToStorage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:setKeybinding","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:resetKeybinding","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:resetKeybinding","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:resetKeybinding","to":"external:this.keybindings.find","kind":"calls","metadata":{"unresolvedName":"this.keybindings.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:resetKeybinding","to":"external:this.saveToStorage","kind":"calls","metadata":{"unresolvedName":"this.saveToStorage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:resetKeybinding","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:resetAll","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:resetAll","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:resetAll","to":"external:this.saveToStorage","kind":"calls","metadata":{"unresolvedName":"this.saveToStorage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:resetAll","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:exportKeybindingBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:exportKeybindingBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:exportKeybindingBackup","to":"external:keybindingStore.getAll","kind":"calls","metadata":{"unresolvedName":"keybindingStore.getAll"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:importKeybindingBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:importKeybindingBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:importKeybindingBackup","to":"external:keybindingStore.resetAll","kind":"calls","metadata":{"unresolvedName":"keybindingStore.resetAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:importKeybindingBackup","to":"external:customKey.trim","kind":"calls","metadata":{"unresolvedName":"customKey.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:importKeybindingBackup","to":"external:keybindingStore.setKeybinding","kind":"calls","metadata":{"unresolvedName":"keybindingStore.setKeybinding"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:localStorage.clear","kind":"calls","metadata":{"unresolvedName":"localStorage.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.addMcpTab","kind":"calls","metadata":{"unresolvedName":"store.addMcpTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.addTerminalTab","kind":"calls","metadata":{"unresolvedName":"store.addTerminalTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.openRightPanel","kind":"calls","metadata":{"unresolvedName":"store.openRightPanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(persisted).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(persisted).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(persisted.panelTabs).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(persisted.panelTabs).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect.arrayContaining","kind":"calls","metadata":{"unresolvedName":"expect.arrayContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:persisted.panelTabs.some","kind":"calls","metadata":{"unresolvedName":"persisted.panelTabs.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:new LayoutStore().getState","kind":"calls","metadata":{"unresolvedName":"new LayoutStore().getState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(restored.rightPanelOpen).toBe","kind":"calls","metadata":{"unresolvedName":"expect(restored.rightPanelOpen).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(restored.bottomPanelOpen).toBe","kind":"calls","metadata":{"unresolvedName":"expect(restored.bottomPanelOpen).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:restored.panelTabs.some","kind":"calls","metadata":{"unresolvedName":"restored.panelTabs.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(restored.panelTabs.some(tab => tab.id === 'term-1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(restored.panelTabs.some(tab => tab.id === 'term-1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.openBottomPanel","kind":"calls","metadata":{"unresolvedName":"store.openBottomPanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.syncTerminalSessions","kind":"calls","metadata":{"unresolvedName":"store.syncTerminalSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(store.getState().bottomPanelOpen).toBe","kind":"calls","metadata":{"unresolvedName":"expect(store.getState().bottomPanelOpen).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.getState","kind":"calls","metadata":{"unresolvedName":"store.getState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(store.getState().rightPanelOpen).toBe","kind":"calls","metadata":{"unresolvedName":"expect(store.getState().rightPanelOpen).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(store.getTerminalTabs('bottom')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(store.getTerminalTabs('bottom')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.getTerminalTabs","kind":"calls","metadata":{"unresolvedName":"store.getTerminalTabs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(store.getTerminalTabs('right')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(store.getTerminalTabs('right')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.moveTab","kind":"calls","metadata":{"unresolvedName":"store.moveTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(store.getTerminalTabs('bottom').map(tab => tab.id)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(store.getTerminalTabs('bottom').map(tab => tab.id)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.getTerminalTabs('bottom').map","kind":"calls","metadata":{"unresolvedName":"store.getTerminalTabs('bottom').map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(store.getTerminalTabs('right').map(tab => tab.id)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(store.getTerminalTabs('right').map(tab => tab.id)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.getTerminalTabs('right').map","kind":"calls","metadata":{"unresolvedName":"store.getTerminalTabs('right').map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(store.getState().panelTabs.some(tab => tab.id === 'term-a1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(store.getState().panelTabs.some(tab => tab.id === 'term-a1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.getState().panelTabs.some","kind":"calls","metadata":{"unresolvedName":"store.getState().panelTabs.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.updateTerminalSnapshot","kind":"calls","metadata":{"unresolvedName":"store.updateTerminalSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.subscribe","kind":"calls","metadata":{"unresolvedName":"store.subscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(notifications).toBe","kind":"calls","metadata":{"unresolvedName":"expect(notifications).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.setActiveTab","kind":"calls","metadata":{"unresolvedName":"store.setActiveTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(store.getState().activeTabId.right).toBe","kind":"calls","metadata":{"unresolvedName":"expect(store.getState().activeTabId.right).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(persisted.directories['dir-a'].sessions['term-a1']).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(persisted.directories['dir-a'].sessions['term-a1']).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:restored.syncTerminalSessions","kind":"calls","metadata":{"unresolvedName":"restored.syncTerminalSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:restored.getState().panelTabs.find","kind":"calls","metadata":{"unresolvedName":"restored.getState().panelTabs.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:restored.getState","kind":"calls","metadata":{"unresolvedName":"restored.getState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.setTerminalCopyOnSelect","kind":"calls","metadata":{"unresolvedName":"store.setTerminalCopyOnSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.setTerminalRightClickPaste","kind":"calls","metadata":{"unresolvedName":"store.setTerminalRightClickPaste"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(localStorage.getItem('opencode-terminal-copy-on-select')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('opencode-terminal-copy-on-select')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(localStorage.getItem('opencode-terminal-right-click-paste')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('opencode-terminal-right-click-paste')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(restored.terminalCopyOnSelect).toBe","kind":"calls","metadata":{"unresolvedName":"expect(restored.terminalCopyOnSelect).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(restored.terminalRightClickPaste).toBe","kind":"calls","metadata":{"unresolvedName":"expect(restored.terminalRightClickPaste).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:localStorage.clear","kind":"calls","metadata":{"unresolvedName":"localStorage.clear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:localStorage.clear","kind":"calls","metadata":{"unresolvedName":"localStorage.clear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.addMcpTab","kind":"calls","metadata":{"unresolvedName":"store.addMcpTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.addTerminalTab","kind":"calls","metadata":{"unresolvedName":"store.addTerminalTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.openRightPanel","kind":"calls","metadata":{"unresolvedName":"store.openRightPanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(persisted).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(persisted).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(persisted.panelTabs).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(persisted.panelTabs).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect.arrayContaining","kind":"calls","metadata":{"unresolvedName":"expect.arrayContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect.objectContaining","kind":"calls","metadata":{"unresolvedName":"expect.objectContaining"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:persisted.panelTabs.some","kind":"calls","metadata":{"unresolvedName":"persisted.panelTabs.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:new LayoutStore().getState","kind":"calls","metadata":{"unresolvedName":"new LayoutStore().getState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(restored.rightPanelOpen).toBe","kind":"calls","metadata":{"unresolvedName":"expect(restored.rightPanelOpen).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(restored.bottomPanelOpen).toBe","kind":"calls","metadata":{"unresolvedName":"expect(restored.bottomPanelOpen).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:restored.panelTabs.some","kind":"calls","metadata":{"unresolvedName":"restored.panelTabs.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(restored.panelTabs.some(tab => tab.id === 'term-1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(restored.panelTabs.some(tab => tab.id === 'term-1')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.openBottomPanel","kind":"calls","metadata":{"unresolvedName":"store.openBottomPanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.openRightPanel","kind":"calls","metadata":{"unresolvedName":"store.openRightPanel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.syncTerminalSessions","kind":"calls","metadata":{"unresolvedName":"store.syncTerminalSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(store.getState().bottomPanelOpen).toBe","kind":"calls","metadata":{"unresolvedName":"expect(store.getState().bottomPanelOpen).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.getState","kind":"calls","metadata":{"unresolvedName":"store.getState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(store.getState().rightPanelOpen).toBe","kind":"calls","metadata":{"unresolvedName":"expect(store.getState().rightPanelOpen).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(store.getTerminalTabs('bottom')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(store.getTerminalTabs('bottom')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.getTerminalTabs","kind":"calls","metadata":{"unresolvedName":"store.getTerminalTabs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(store.getTerminalTabs('right')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(store.getTerminalTabs('right')).toEqual"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.syncTerminalSessions","kind":"calls","metadata":{"unresolvedName":"store.syncTerminalSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.moveTab","kind":"calls","metadata":{"unresolvedName":"store.moveTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(store.getTerminalTabs('bottom').map(tab => tab.id)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(store.getTerminalTabs('bottom').map(tab => tab.id)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.getTerminalTabs('bottom').map","kind":"calls","metadata":{"unresolvedName":"store.getTerminalTabs('bottom').map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.getTerminalTabs","kind":"calls","metadata":{"unresolvedName":"store.getTerminalTabs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(store.getTerminalTabs('right').map(tab => tab.id)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(store.getTerminalTabs('right').map(tab => tab.id)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.getTerminalTabs('right').map","kind":"calls","metadata":{"unresolvedName":"store.getTerminalTabs('right').map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.syncTerminalSessions","kind":"calls","metadata":{"unresolvedName":"store.syncTerminalSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(store.getTerminalTabs('bottom')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(store.getTerminalTabs('bottom')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.getTerminalTabs","kind":"calls","metadata":{"unresolvedName":"store.getTerminalTabs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(store.getState().panelTabs.some(tab => tab.id === 'term-a1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(store.getState().panelTabs.some(tab => tab.id === 'term-a1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.getState().panelTabs.some","kind":"calls","metadata":{"unresolvedName":"store.getState().panelTabs.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.getState","kind":"calls","metadata":{"unresolvedName":"store.getState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.syncTerminalSessions","kind":"calls","metadata":{"unresolvedName":"store.syncTerminalSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.updateTerminalSnapshot","kind":"calls","metadata":{"unresolvedName":"store.updateTerminalSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.subscribe","kind":"calls","metadata":{"unresolvedName":"store.subscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"symbol-name:unsubscribe","kind":"calls","metadata":{"unresolvedName":"unsubscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(notifications).toBe","kind":"calls","metadata":{"unresolvedName":"expect(notifications).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.syncTerminalSessions","kind":"calls","metadata":{"unresolvedName":"store.syncTerminalSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.moveTab","kind":"calls","metadata":{"unresolvedName":"store.moveTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.setActiveTab","kind":"calls","metadata":{"unresolvedName":"store.setActiveTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(store.getState().activeTabId.right).toBe","kind":"calls","metadata":{"unresolvedName":"expect(store.getState().activeTabId.right).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.getState","kind":"calls","metadata":{"unresolvedName":"store.getState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.syncTerminalSessions","kind":"calls","metadata":{"unresolvedName":"store.syncTerminalSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.updateTerminalSnapshot","kind":"calls","metadata":{"unresolvedName":"store.updateTerminalSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(persisted.directories['dir-a'].sessions['term-a1']).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(persisted.directories['dir-a'].sessions['term-a1']).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:restored.syncTerminalSessions","kind":"calls","metadata":{"unresolvedName":"restored.syncTerminalSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:restored.getState().panelTabs.find","kind":"calls","metadata":{"unresolvedName":"restored.getState().panelTabs.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:restored.getState","kind":"calls","metadata":{"unresolvedName":"restored.getState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.setTerminalCopyOnSelect","kind":"calls","metadata":{"unresolvedName":"store.setTerminalCopyOnSelect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:store.setTerminalRightClickPaste","kind":"calls","metadata":{"unresolvedName":"store.setTerminalRightClickPaste"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(localStorage.getItem('opencode-terminal-copy-on-select')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('opencode-terminal-copy-on-select')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(localStorage.getItem('opencode-terminal-right-click-paste')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('opencode-terminal-right-click-paste')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:new LayoutStore().getState","kind":"calls","metadata":{"unresolvedName":"new LayoutStore().getState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(restored.terminalCopyOnSelect).toBe","kind":"calls","metadata":{"unresolvedName":"expect(restored.terminalCopyOnSelect).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.test.ts:","to":"external:expect(restored.terminalRightClickPaste).toBe","kind":"calls","metadata":{"unresolvedName":"expect(restored.terminalRightClickPaste).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getResolvedTerminalTitle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getResolvedTerminalTitle","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:buildTerminalPanelTab","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:buildTerminalPanelTab","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:isPanelPosition","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:isPanelPosition","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:isPanelPosition","to":"external:PANEL_POSITIONS.includes","kind":"calls","metadata":{"unresolvedName":"PANEL_POSITIONS.includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:isPersistedPanelTabType","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:isPersistedPanelTabType","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:isPersistedPanelTabType","to":"external:PERSISTED_PANEL_TAB_TYPES.includes","kind":"calls","metadata":{"unresolvedName":"PERSISTED_PANEL_TAB_TYPES.includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:normalizePersistedPanelTab","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:normalizePersistedPanelTab","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedPanelLayout","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedPanelLayout","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedPanelLayout","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedPanelLayout","to":"external:seenIds.has","kind":"calls","metadata":{"unresolvedName":"seenIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedPanelLayout","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:isPersistedPanelTabType","kind":"calls","metadata":{"unresolvedName":"isPersistedPanelTabType"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedPanelLayout","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:isPanelPosition","kind":"calls","metadata":{"unresolvedName":"isPanelPosition"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedPanelLayout","to":"external:seenIds.add","kind":"calls","metadata":{"unresolvedName":"seenIds.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedPanelLayout","to":"external:panelTabs.push","kind":"calls","metadata":{"unresolvedName":"panelTabs.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedTerminalLayoutMap","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedTerminalLayoutMap","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedTerminalLayoutMap","to":"external:Object.entries","kind":"calls","metadata":{"unresolvedName":"Object.entries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedTerminalLayoutMap","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedTerminalLayoutMap","to":"external:rawOrder.bottom.filter","kind":"calls","metadata":{"unresolvedName":"rawOrder.bottom.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedTerminalLayoutMap","to":"external:rawOrder.right.filter","kind":"calls","metadata":{"unresolvedName":"rawOrder.right.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:persistPanelLayout","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:persistPanelLayout","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:persistPanelLayout","to":"external:this.state.panelTabs\n .filter","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:persistPanelLayout","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:persistPanelLayout","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:readTerminalLayoutMap","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:readTerminalLayoutMap","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:readTerminalLayoutMap","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedTerminalLayoutMap","kind":"calls","metadata":{"unresolvedName":"sanitizePersistedTerminalLayoutMap"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:readTerminalLayoutMap","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:readTerminalLayoutMap","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:persistTerminalLayout","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:persistTerminalLayout","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:persistTerminalLayout","to":"external:this.readTerminalLayoutMap","kind":"calls","metadata":{"unresolvedName":"this.readTerminalLayoutMap"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:persistTerminalLayout","to":"external:this.getTabsForPosition('bottom').map","kind":"calls","metadata":{"unresolvedName":"this.getTabsForPosition('bottom').map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:persistTerminalLayout","to":"external:this.getTabsForPosition","kind":"calls","metadata":{"unresolvedName":"this.getTabsForPosition"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:persistTerminalLayout","to":"external:this.getTabsForPosition('right').map","kind":"calls","metadata":{"unresolvedName":"this.getTabsForPosition('right').map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:persistTerminalLayout","to":"external:Object.fromEntries","kind":"calls","metadata":{"unresolvedName":"Object.fromEntries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:persistTerminalLayout","to":"external:this.state.panelTabs\n .filter","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:persistTerminalLayout","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:persistTerminalLayout","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:subscribe","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:subscribe","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:subscribe","to":"external:this.subscribers.add","kind":"calls","metadata":{"unresolvedName":"this.subscribers.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:subscribe","to":"external:this.subscribers.delete","kind":"calls","metadata":{"unresolvedName":"this.subscribers.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:notify","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:notify","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:notify","to":"external:this.persistPanelLayout","kind":"calls","metadata":{"unresolvedName":"this.persistPanelLayout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:notify","to":"external:this.persistTerminalLayout","kind":"calls","metadata":{"unresolvedName":"this.persistTerminalLayout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:notify","to":"external:this.subscribers.forEach","kind":"calls","metadata":{"unresolvedName":"this.subscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:notify","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getSidebarExpanded","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getSidebarExpanded","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarExpanded","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarExpanded","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarExpanded","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarExpanded","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarExpanded","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarFolderRecents","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarFolderRecents","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarFolderRecents","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarFolderRecents","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarFolderRecents","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarFolderRecentsShowDiff","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarFolderRecentsShowDiff","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarFolderRecentsShowDiff","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarFolderRecentsShowDiff","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarFolderRecentsShowDiff","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarShowChildSessions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarShowChildSessions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarShowChildSessions","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarShowChildSessions","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setSidebarShowChildSessions","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setWakeLock","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setWakeLock","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setWakeLock","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setWakeLock","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setWakeLock","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setTerminalCopyOnSelect","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setTerminalCopyOnSelect","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setTerminalCopyOnSelect","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setTerminalCopyOnSelect","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setTerminalCopyOnSelect","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setTerminalRightClickPaste","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setTerminalRightClickPaste","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setTerminalRightClickPaste","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setTerminalRightClickPaste","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setTerminalRightClickPaste","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:toggleSidebar","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:toggleSidebar","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:toggleSidebar","to":"external:this.setSidebarExpanded","kind":"calls","metadata":{"unresolvedName":"this.setSidebarExpanded"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setPanelOpen","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setPanelOpen","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getTabsForPosition","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getTabsForPosition","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getTabsForPosition","to":"external:this.state.panelTabs.filter","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getActiveTab","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getActiveTab","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getActiveTab","to":"external:this.state.panelTabs.find","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.find"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setActiveTab","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setActiveTab","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setActiveTab","to":"external:this.state.panelTabs.find","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setActiveTab","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addTab","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addTab","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addTab","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addTab","to":"external:this.state.panelTabs.push","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addTab","to":"external:this.setPanelOpen","kind":"calls","metadata":{"unresolvedName":"this.setPanelOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addTab","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addSingletonTab","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addSingletonTab","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addSingletonTab","to":"external:this.state.panelTabs.find","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addSingletonTab","to":"external:this.setActiveTab","kind":"calls","metadata":{"unresolvedName":"this.setActiveTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addSingletonTab","to":"external:this.setPanelOpen","kind":"calls","metadata":{"unresolvedName":"this.setPanelOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addSingletonTab","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addSingletonTab","to":"external:this.addTab","kind":"calls","metadata":{"unresolvedName":"this.addTab"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addFilesTab","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addFilesTab","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addFilesTab","to":"external:this.addTab","kind":"calls","metadata":{"unresolvedName":"this.addTab"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addChangesTab","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addChangesTab","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addChangesTab","to":"external:this.addTab","kind":"calls","metadata":{"unresolvedName":"this.addTab"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addMcpTab","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addMcpTab","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addMcpTab","to":"external:this.addSingletonTab","kind":"calls","metadata":{"unresolvedName":"this.addSingletonTab"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addSkillTab","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addSkillTab","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addSkillTab","to":"external:this.addSingletonTab","kind":"calls","metadata":{"unresolvedName":"this.addSingletonTab"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addWorktreeTab","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addWorktreeTab","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addWorktreeTab","to":"external:this.addSingletonTab","kind":"calls","metadata":{"unresolvedName":"this.addSingletonTab"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addExtensionTab","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addExtensionTab","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addExtensionTab","to":"external:this.addSingletonTab","kind":"calls","metadata":{"unresolvedName":"this.addSingletonTab"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:removeTab","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:removeTab","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:removeTab","to":"external:this.state.panelTabs.findIndex","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:removeTab","to":"external:this.state.panelTabs.splice","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.splice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:removeTab","to":"external:this.getTabsForPosition","kind":"calls","metadata":{"unresolvedName":"this.getTabsForPosition"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:removeTab","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:removeTab","to":"external:this.setPanelOpen","kind":"calls","metadata":{"unresolvedName":"this.setPanelOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:removeTab","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTab","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTab","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTab","to":"external:this.state.panelTabs.find","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTab","to":"external:Object.assign","kind":"calls","metadata":{"unresolvedName":"Object.assign"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTab","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:moveTab","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:moveTab","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:moveTab","to":"external:this.state.panelTabs.find","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:moveTab","to":"external:this.getTabsForPosition","kind":"calls","metadata":{"unresolvedName":"this.getTabsForPosition"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:moveTab","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:reorderTabs","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:reorderTabs","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:reorderTabs","to":"external:tabs.findIndex","kind":"calls","metadata":{"unresolvedName":"tabs.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:reorderTabs","to":"external:tabs.splice","kind":"calls","metadata":{"unresolvedName":"tabs.splice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:reorderTabs","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:toggleRightPanel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:toggleRightPanel","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:toggleRightPanel","to":"external:this.setRightPanelView","kind":"calls","metadata":{"unresolvedName":"this.setRightPanelView"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:toggleRightPanel","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:openRightPanel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:openRightPanel","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:openRightPanel","to":"external:this.setRightPanelView","kind":"calls","metadata":{"unresolvedName":"this.setRightPanelView"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeRightPanel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeRightPanel","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeRightPanel","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setRightPanelView","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setRightPanelView","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setRightPanelView","to":"external:this.state.panelTabs.find","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setRightPanelView","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setRightPanelWidth","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setRightPanelWidth","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setRightPanelWidth","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setRightPanelWidth","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setRightPanelWidth","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setRightPanelWidth","to":"external:this.state.rightPanelWidth.toString","kind":"calls","metadata":{"unresolvedName":"this.state.rightPanelWidth.toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setRightPanelWidth","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:openFilePreview","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:openFilePreview","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:openFilePreview","to":"external:this.getTargetFilesTab","kind":"calls","metadata":{"unresolvedName":"this.getTargetFilesTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:openFilePreview","to":"external:previewFiles.findIndex","kind":"calls","metadata":{"unresolvedName":"previewFiles.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:openFilePreview","to":"external:previewFiles.map","kind":"calls","metadata":{"unresolvedName":"previewFiles.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:openFilePreview","to":"external:this.setPanelOpen","kind":"calls","metadata":{"unresolvedName":"this.setPanelOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:openFilePreview","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:activateFilePreview","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:activateFilePreview","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:activateFilePreview","to":"external:this.state.panelTabs.find","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:activateFilePreview","to":"external:tab?.previewFiles?.find","kind":"calls","metadata":{"unresolvedName":"tab?.previewFiles?.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:activateFilePreview","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeFilePreview","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeFilePreview","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeFilePreview","to":"external:this.state.panelTabs.find","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeFilePreview","to":"external:previewFiles.findIndex","kind":"calls","metadata":{"unresolvedName":"previewFiles.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeFilePreview","to":"external:previewFiles.filter","kind":"calls","metadata":{"unresolvedName":"previewFiles.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeFilePreview","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeFilePreview","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeAllFilePreviews","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeAllFilePreviews","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeAllFilePreviews","to":"external:this.state.panelTabs.find","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeAllFilePreviews","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:reorderFilePreviews","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:reorderFilePreviews","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:reorderFilePreviews","to":"external:this.state.panelTabs.find","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:reorderFilePreviews","to":"external:previewFiles.findIndex","kind":"calls","metadata":{"unresolvedName":"previewFiles.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:reorderFilePreviews","to":"external:nextPreviewFiles.splice","kind":"calls","metadata":{"unresolvedName":"nextPreviewFiles.splice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:reorderFilePreviews","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getTargetFilesTab","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getTargetFilesTab","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getTargetFilesTab","to":"external:this.state.panelTabs.find","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getTargetFilesTab","to":"external:this.addFilesTab","kind":"calls","metadata":{"unresolvedName":"this.addFilesTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getTargetFilesTab","to":"external:(['right', 'bottom'] as const)\n .map","kind":"calls","metadata":{"unresolvedName":"(['right', 'bottom'] as const)\n .map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:toggleBottomPanel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:toggleBottomPanel","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:toggleBottomPanel","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:openBottomPanel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:openBottomPanel","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:openBottomPanel","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeBottomPanel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeBottomPanel","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:closeBottomPanel","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setBottomPanelHeight","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setBottomPanelHeight","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setBottomPanelHeight","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setBottomPanelHeight","to":"external:height.toString","kind":"calls","metadata":{"unresolvedName":"height.toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setBottomPanelHeight","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setCurrentTerminalDirectory","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setCurrentTerminalDirectory","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","to":"external:this.readTerminalLayoutMap","kind":"calls","metadata":{"unresolvedName":"this.readTerminalLayoutMap"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","to":"external:this.state.panelTabs.filter(tab => tab.type === 'terminal').map","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.filter(tab => tab.type === 'terminal').map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","to":"external:this.state.panelTabs.filter","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","to":"external:sessions.map","kind":"calls","metadata":{"unresolvedName":"sessions.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:buildTerminalPanelTab","kind":"calls","metadata":{"unresolvedName":"buildTerminalPanelTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","to":"external:existingTerminalById.get","kind":"calls","metadata":{"unresolvedName":"existingTerminalById.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","to":"external:nonTerminalTabs.map","kind":"calls","metadata":{"unresolvedName":"nonTerminalTabs.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","to":"external:nonTerminalTabs.filter(tab => tab.position === position).map","kind":"calls","metadata":{"unresolvedName":"nonTerminalTabs.filter(tab => tab.position === position).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","to":"external:nonTerminalTabs.filter","kind":"calls","metadata":{"unresolvedName":"nonTerminalTabs.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","to":"external:orderByPosition[position].includes","kind":"calls","metadata":{"unresolvedName":"orderByPosition[position].includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","to":"external:orderByPosition[position].push","kind":"calls","metadata":{"unresolvedName":"orderByPosition[position].push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","to":"external:nonTerminalById.get","kind":"calls","metadata":{"unresolvedName":"nonTerminalById.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","to":"external:tabsByPosition[position].push","kind":"calls","metadata":{"unresolvedName":"tabsByPosition[position].push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","to":"external:sessionById.get","kind":"calls","metadata":{"unresolvedName":"sessionById.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","to":"external:assignedTerminalIds.has","kind":"calls","metadata":{"unresolvedName":"assignedTerminalIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","to":"external:assignedTerminalIds.add","kind":"calls","metadata":{"unresolvedName":"assignedTerminalIds.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","to":"external:tabsByPosition.bottom.push","kind":"calls","metadata":{"unresolvedName":"tabsByPosition.bottom.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","to":"external:this.state.panelTabs.some","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","to":"external:this.getTabsForPosition","kind":"calls","metadata":{"unresolvedName":"this.getTabsForPosition"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalSessions","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addTerminalTab","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addTerminalTab","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addTerminalTab","to":"external:this.state.panelTabs.find","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addTerminalTab","to":"external:this.setPanelOpen","kind":"calls","metadata":{"unresolvedName":"this.setPanelOpen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addTerminalTab","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addTerminalTab","to":"external:this.addTab","kind":"calls","metadata":{"unresolvedName":"this.addTab"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:addTerminalTab","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:buildTerminalPanelTab","kind":"calls","metadata":{"unresolvedName":"buildTerminalPanelTab"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:removeTerminalTab","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:removeTerminalTab","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:removeTerminalTab","to":"external:this.removeTab","kind":"calls","metadata":{"unresolvedName":"this.removeTab"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setActiveTerminal","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setActiveTerminal","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:setActiveTerminal","to":"external:this.setActiveTab","kind":"calls","metadata":{"unresolvedName":"this.setActiveTab"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalTab","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalTab","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalTab","to":"external:this.updateTab","kind":"calls","metadata":{"unresolvedName":"this.updateTab"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalShellTitle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalShellTitle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalShellTitle","to":"external:this.state.panelTabs.find","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalShellTitle","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalCustomTitle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalCustomTitle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalCustomTitle","to":"external:this.state.panelTabs.find","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalCustomTitle","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalSnapshot","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalSnapshot","to":"external:this.state.panelTabs.find","kind":"calls","metadata":{"unresolvedName":"this.state.panelTabs.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:updateTerminalSnapshot","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalTitleMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalTitleMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalTitleMode","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getResolvedTerminalTitle","kind":"calls","metadata":{"unresolvedName":"getResolvedTerminalTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:syncTerminalTitleMode","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:reorderTerminalTabs","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:reorderTerminalTabs","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:reorderTerminalTabs","to":"external:this.reorderTabs","kind":"calls","metadata":{"unresolvedName":"this.reorderTabs"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getTerminalTabs","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getTerminalTabs","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getTerminalTabs","to":"external:this.getTabsForPosition(position)\n .filter","kind":"calls","metadata":{"unresolvedName":"this.getTabsForPosition(position)\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getTerminalTabs","to":"external:this.getTabsForPosition","kind":"calls","metadata":{"unresolvedName":"this.getTabsForPosition"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getState","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getState","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:buildPersistedPanelLayout","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:buildPersistedPanelLayout","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:buildPersistedPanelLayout","to":"external:state.panelTabs\n .filter","kind":"calls","metadata":{"unresolvedName":"state.panelTabs\n .filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:exportLayoutBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:exportLayoutBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:exportLayoutBackup","to":"external:layoutStore.getState","kind":"calls","metadata":{"unresolvedName":"layoutStore.getState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:exportLayoutBackup","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:exportLayoutBackup","to":"external:Number.parseInt","kind":"calls","metadata":{"unresolvedName":"Number.parseInt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:exportLayoutBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedTerminalLayoutMap","kind":"calls","metadata":{"unresolvedName":"sanitizePersistedTerminalLayoutMap"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:exportLayoutBackup","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:exportLayoutBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:buildPersistedPanelLayout","kind":"calls","metadata":{"unresolvedName":"buildPersistedPanelLayout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:exportLayoutBackup","to":"external:Number.isFinite","kind":"calls","metadata":{"unresolvedName":"Number.isFinite"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:importLayoutBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:importLayoutBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:importLayoutBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedPanelLayout","kind":"calls","metadata":{"unresolvedName":"sanitizePersistedPanelLayout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:importLayoutBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:buildPersistedPanelLayout","kind":"calls","metadata":{"unresolvedName":"buildPersistedPanelLayout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:importLayoutBackup","to":"external:layoutStore.getState","kind":"calls","metadata":{"unresolvedName":"layoutStore.getState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:importLayoutBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:sanitizePersistedTerminalLayoutMap","kind":"calls","metadata":{"unresolvedName":"sanitizePersistedTerminalLayoutMap"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:importLayoutBackup","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:importLayoutBackup","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:importLayoutBackup","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:importLayoutBackup","to":"external:Number.isFinite","kind":"calls","metadata":{"unresolvedName":"Number.isFinite"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:importLayoutBackup","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:importLayoutBackup","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:importLayoutBackup","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:importLayoutBackup","to":"external:localStorage.removeItem","kind":"calls","metadata":{"unresolvedName":"localStorage.removeItem"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getSnapshot","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getSnapshot","to":"external:layoutStore.getState","kind":"calls","metadata":{"unresolvedName":"layoutStore.getState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:getSnapshot","to":"external:layoutStore.getTerminalTabs","kind":"calls","metadata":{"unresolvedName":"layoutStore.getTerminalTabs"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:useLayoutStore","to":"external:layoutStore.subscribe","kind":"calls","metadata":{"unresolvedName":"layoutStore.subscribe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:createAssistantMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:createAssistantMessage","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:createUserMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:createUserMessage","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:createTextPart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:createTextPart","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:createMessageWithParts","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:createMessageWithParts","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:createMessageWithParts","to":"symbol-name:createAssistantMessage","kind":"calls","metadata":{"unresolvedName":"createAssistantMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:createMessageWithParts","to":"symbol-name:createTextPart","kind":"calls","metadata":{"unresolvedName":"createTextPart"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.clearAll","kind":"calls","metadata":{"unresolvedName":"messageStore.clearAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.handleMessageUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handleMessageUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createAssistantMessage","kind":"calls","metadata":{"unresolvedName":"createAssistantMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.handlePartUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createTextPart","kind":"calls","metadata":{"unresolvedName":"createTextPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].parts).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].parts).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].parts[0]).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].parts[0]).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].info).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].info).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.isStreaming).toBe","kind":"calls","metadata":{"unresolvedName":"expect(state?.isStreaming).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.handlePartDelta","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartDelta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createUserMessage","kind":"calls","metadata":{"unresolvedName":"createUserMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.setMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].info.id).toBe","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].info.id).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages.map(message => message.info.id)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages.map(message => message.info.id)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:state?.messages.map","kind":"calls","metadata":{"unresolvedName":"state?.messages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages ?? []).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages ?? []).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createMessageWithParts","kind":"calls","metadata":{"unresolvedName":"createMessageWithParts"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(messageStore.isSessionStale('session-1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(messageStore.isSessionStale('session-1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.isSessionStale","kind":"calls","metadata":{"unresolvedName":"messageStore.isSessionStale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.markAllSessionsStale","kind":"calls","metadata":{"unresolvedName":"messageStore.markAllSessionsStale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.setRevertState","kind":"calls","metadata":{"unresolvedName":"messageStore.setRevertState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.truncateAfterRevert","kind":"calls","metadata":{"unresolvedName":"messageStore.truncateAfterRevert"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.revertState).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(state?.revertState).toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.handlePartRemoved","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartRemoved"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.prependMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.prependMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[1].info.id).toBe","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[1].info.id).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:rafCallbacks.push","kind":"calls","metadata":{"unresolvedName":"rafCallbacks.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:scheduledFrame","kind":"calls","metadata":{"unresolvedName":"scheduledFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(afterMessage1?.parts[0]).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(afterMessage1?.parts[0]).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(afterMessage2?.parts[0]).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(afterMessage2?.parts[0]).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(afterMessage1).not.toBe","kind":"calls","metadata":{"unresolvedName":"expect(afterMessage1).not.toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(afterMessage2).not.toBe","kind":"calls","metadata":{"unresolvedName":"expect(afterMessage2).not.toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.clearAll","kind":"calls","metadata":{"unresolvedName":"messageStore.clearAll"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.handleMessageUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handleMessageUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createAssistantMessage","kind":"calls","metadata":{"unresolvedName":"createAssistantMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.handlePartUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createTextPart","kind":"calls","metadata":{"unresolvedName":"createTextPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].parts).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].parts).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].parts[0]).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].parts[0]).toMatchObject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.handlePartUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createTextPart","kind":"calls","metadata":{"unresolvedName":"createTextPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].info).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].info).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].parts[0]).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].parts[0]).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.isStreaming).toBe","kind":"calls","metadata":{"unresolvedName":"expect(state?.isStreaming).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.handlePartDelta","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartDelta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].parts[0]).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].parts[0]).toMatchObject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.handleMessageUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handleMessageUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createAssistantMessage","kind":"calls","metadata":{"unresolvedName":"createAssistantMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.handlePartUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createTextPart","kind":"calls","metadata":{"unresolvedName":"createTextPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].parts[0]).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].parts[0]).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.handleMessageUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handleMessageUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createUserMessage","kind":"calls","metadata":{"unresolvedName":"createUserMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].info).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].info).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].parts[0]).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].parts[0]).toMatchObject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.handleMessageUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handleMessageUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createUserMessage","kind":"calls","metadata":{"unresolvedName":"createUserMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.handlePartUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createTextPart","kind":"calls","metadata":{"unresolvedName":"createTextPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].parts).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].parts).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].parts[0]).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].parts[0]).toMatchObject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.handleMessageUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handleMessageUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createUserMessage","kind":"calls","metadata":{"unresolvedName":"createUserMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.handlePartUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createTextPart","kind":"calls","metadata":{"unresolvedName":"createTextPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].info).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].info).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].parts).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].parts).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].parts[0]).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].parts[0]).toMatchObject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.setMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createUserMessage","kind":"calls","metadata":{"unresolvedName":"createUserMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createTextPart","kind":"calls","metadata":{"unresolvedName":"createTextPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].info.id).toBe","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].info.id).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].parts).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].parts).toHaveLength"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.handleMessageUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handleMessageUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createAssistantMessage","kind":"calls","metadata":{"unresolvedName":"createAssistantMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createUserMessage","kind":"calls","metadata":{"unresolvedName":"createUserMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages.map(message => message.info.id)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages.map(message => message.info.id)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:state?.messages.map","kind":"calls","metadata":{"unresolvedName":"state?.messages.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.handleMessageUpdated","kind":"calls","metadata":{"unresolvedName":"messageStore.handleMessageUpdated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages ?? []).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages ?? []).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.setMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createMessageWithParts","kind":"calls","metadata":{"unresolvedName":"createMessageWithParts"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createTextPart","kind":"calls","metadata":{"unresolvedName":"createTextPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages.map(message => message.info.id)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages.map(message => message.info.id)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:state?.messages.map","kind":"calls","metadata":{"unresolvedName":"state?.messages.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.setMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createMessageWithParts","kind":"calls","metadata":{"unresolvedName":"createMessageWithParts"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(messageStore.isSessionStale('session-1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(messageStore.isSessionStale('session-1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.isSessionStale","kind":"calls","metadata":{"unresolvedName":"messageStore.isSessionStale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.markAllSessionsStale","kind":"calls","metadata":{"unresolvedName":"messageStore.markAllSessionsStale"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.setMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createAssistantMessage","kind":"calls","metadata":{"unresolvedName":"createAssistantMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createTextPart","kind":"calls","metadata":{"unresolvedName":"createTextPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].info.id).toBe","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].info.id).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].parts[0]).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].parts[0]).toMatchObject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.setMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createMessageWithParts","kind":"calls","metadata":{"unresolvedName":"createMessageWithParts"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.setRevertState","kind":"calls","metadata":{"unresolvedName":"messageStore.setRevertState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.truncateAfterRevert","kind":"calls","metadata":{"unresolvedName":"messageStore.truncateAfterRevert"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].info.id).toBe","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].info.id).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.revertState).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(state?.revertState).toBeNull"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.setMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createMessageWithParts","kind":"calls","metadata":{"unresolvedName":"createMessageWithParts"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.handlePartRemoved","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartRemoved"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].parts).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].parts).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.setMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createMessageWithParts","kind":"calls","metadata":{"unresolvedName":"createMessageWithParts"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.prependMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.prependMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages).toHaveLength","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages).toHaveLength"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[0].info.id).toBe","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[0].info.id).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(state?.messages[1].info.id).toBe","kind":"calls","metadata":{"unresolvedName":"expect(state?.messages[1].info.id).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:vi.spyOn(window, 'requestAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'requestAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:rafCallbacks.push","kind":"calls","metadata":{"unresolvedName":"rafCallbacks.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:vi.spyOn(window, 'cancelAnimationFrame').mockImplementation","kind":"calls","metadata":{"unresolvedName":"vi.spyOn(window, 'cancelAnimationFrame').mockImplementation"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.setMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:createMessageWithParts","kind":"calls","metadata":{"unresolvedName":"createMessageWithParts"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:messageStore.handlePartDelta","kind":"calls","metadata":{"unresolvedName":"messageStore.handlePartDelta"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:scheduledFrame","kind":"calls","metadata":{"unresolvedName":"scheduledFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(afterMessage1?.parts[0]).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(afterMessage1?.parts[0]).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(afterMessage2?.parts[0]).toMatchObject","kind":"calls","metadata":{"unresolvedName":"expect(afterMessage2?.parts[0]).toMatchObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(afterMessage1).not.toBe","kind":"calls","metadata":{"unresolvedName":"expect(afterMessage1).not.toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:expect(afterMessage2).not.toBe","kind":"calls","metadata":{"unresolvedName":"expect(afterMessage2).not.toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.test.ts:","to":"external:rafCallbacks.push","kind":"calls","metadata":{"unresolvedName":"rafCallbacks.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/logger.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreTypes.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:isVisibleChatRole","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:isVisibleChatRole","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:subscribe","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:subscribe","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:subscribe","to":"external:this.subscribers.add","kind":"calls","metadata":{"unresolvedName":"this.subscribers.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:subscribe","to":"external:this.subscribers.delete","kind":"calls","metadata":{"unresolvedName":"this.subscribers.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:notify","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:notify","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:notify","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:notify","to":"external:this.flushDirtyMessages","kind":"calls","metadata":{"unresolvedName":"this.flushDirtyMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:notify","to":"external:this.subscribers.forEach","kind":"calls","metadata":{"unresolvedName":"this.subscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:notify","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","to":"external:this.flushDirtyMessages","kind":"calls","metadata":{"unresolvedName":"this.flushDirtyMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","to":"external:this.subscribers.forEach","kind":"calls","metadata":{"unresolvedName":"this.subscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:flushDirtyMessages","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:flushDirtyMessages","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:flushDirtyMessages","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:flushDirtyMessages","to":"external:state.messages.map","kind":"calls","metadata":{"unresolvedName":"state.messages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:flushDirtyMessages","to":"external:dirtyMessages.has","kind":"calls","metadata":{"unresolvedName":"dirtyMessages.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:flushDirtyMessages","to":"external:m.parts.map","kind":"calls","metadata":{"unresolvedName":"m.parts.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:flushDirtyMessages","to":"external:this.dirtyMessagesBySession.clear","kind":"calls","metadata":{"unresolvedName":"this.dirtyMessagesBySession.clear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","to":"external:dirtyMessages.has","kind":"calls","metadata":{"unresolvedName":"dirtyMessages.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","to":"external:m.parts.map","kind":"calls","metadata":{"unresolvedName":"m.parts.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:notifyImmediate","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:notifyImmediate","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:notifyImmediate","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:notifyImmediate","to":"external:this.flushDirtyMessages","kind":"calls","metadata":{"unresolvedName":"this.flushDirtyMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:notifyImmediate","to":"external:this.subscribers.forEach","kind":"calls","metadata":{"unresolvedName":"this.subscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:notifyImmediate","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getSessionState","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getSessionState","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getSessionState","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getVisibleMessages","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getVisibleMessages","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getVisibleMessages","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getVisibleMessages","to":"external:messages.findIndex","kind":"calls","metadata":{"unresolvedName":"messages.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getVisibleMessages","to":"external:messages.slice","kind":"calls","metadata":{"unresolvedName":"messages.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getIsStreaming","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getIsStreaming","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getIsStreaming","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getRevertState","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getRevertState","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getRevertState","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getPrependedCount","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getPrependedCount","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getHasMoreHistory","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getHasMoreHistory","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getHasMoreHistory","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getSessionDirectory","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getSessionDirectory","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getSessionDirectory","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getSessionTitle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getSessionTitle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getSessionTitle","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getShareUrl","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getShareUrl","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getShareUrl","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getLoadState","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getLoadState","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getLoadState","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:isSessionStale","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:isSessionStale","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:isSessionStale","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:ensureSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:ensureSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:ensureSession","to":"external:this.sessionAccessTime.set","kind":"calls","metadata":{"unresolvedName":"this.sessionAccessTime.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:ensureSession","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:ensureSession","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:ensureSession","to":"external:this.evictOldSessions","kind":"calls","metadata":{"unresolvedName":"this.evictOldSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:ensureSession","to":"external:this.sessions.set","kind":"calls","metadata":{"unresolvedName":"this.sessions.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:evictOldSessions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:evictOldSessions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:evictOldSessions","to":"external:this.protectedSessions.has","kind":"calls","metadata":{"unresolvedName":"this.protectedSessions.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:evictOldSessions","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:evictOldSessions","to":"external:logger.log","kind":"calls","metadata":{"unresolvedName":"logger.log"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:evictOldSessions","to":"external:this.sessions.delete","kind":"calls","metadata":{"unresolvedName":"this.sessions.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:evictOldSessions","to":"external:this.sessionAccessTime.delete","kind":"calls","metadata":{"unresolvedName":"this.sessionAccessTime.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:protectSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:protectSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:protectSession","to":"external:this.protectedSessions.add","kind":"calls","metadata":{"unresolvedName":"this.protectedSessions.add"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:unprotectSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:unprotectSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:unprotectSession","to":"external:this.protectedSessions.delete","kind":"calls","metadata":{"unresolvedName":"this.protectedSessions.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:updateSessionMetadata","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:updateSessionMetadata","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:updateSessionMetadata","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:updateSessionMetadata","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:upsertLocalMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:upsertLocalMessage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:upsertLocalMessage","to":"external:this.ensureSession","kind":"calls","metadata":{"unresolvedName":"this.ensureSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:upsertLocalMessage","to":"external:state.messages.findIndex","kind":"calls","metadata":{"unresolvedName":"state.messages.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:upsertLocalMessage","to":"external:state.messages.slice","kind":"calls","metadata":{"unresolvedName":"state.messages.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:upsertLocalMessage","to":"external:[...state.messages, message].sort","kind":"calls","metadata":{"unresolvedName":"[...state.messages, message].sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:upsertLocalMessage","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:removeMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:removeMessage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:removeMessage","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:removeMessage","to":"external:state.messages.filter","kind":"calls","metadata":{"unresolvedName":"state.messages.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:removeMessage","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:markAllSessionsStale","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:markAllSessionsStale","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:markAllSessionsStale","to":"external:this.sessions.values","kind":"calls","metadata":{"unresolvedName":"this.sessions.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:markAllSessionsStale","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setLoadState","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setLoadState","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setLoadState","to":"external:this.ensureSession","kind":"calls","metadata":{"unresolvedName":"this.ensureSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setLoadState","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:dedupeSyntheticUserMessages","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:dedupeSyntheticUserMessages","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:dedupeSyntheticUserMessages","to":"external:result.findIndex","kind":"calls","metadata":{"unresolvedName":"result.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:dedupeSyntheticUserMessages","to":"external:this.isSyntheticLiveMessageId","kind":"calls","metadata":{"unresolvedName":"this.isSyntheticLiveMessageId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:dedupeSyntheticUserMessages","to":"symbol-name:getMessageText","kind":"calls","metadata":{"unresolvedName":"getMessageText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:dedupeSyntheticUserMessages","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:dedupeSyntheticUserMessages","to":"external:result.push","kind":"calls","metadata":{"unresolvedName":"result.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","to":"external:this.isSyntheticLiveMessageId","kind":"calls","metadata":{"unresolvedName":"this.isSyntheticLiveMessageId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","to":"symbol-name:getMessageText","kind":"calls","metadata":{"unresolvedName":"getMessageText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setMessages","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setMessages","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setMessages","to":"external:this.ensureSession","kind":"calls","metadata":{"unresolvedName":"this.ensureSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setMessages","to":"external:apiMessages\n .filter","kind":"calls","metadata":{"unresolvedName":"apiMessages\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setMessages","to":"symbol-name:isVisibleChatRole","kind":"calls","metadata":{"unresolvedName":"isVisibleChatRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setMessages","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toUIMessage","kind":"calls","metadata":{"unresolvedName":"toUIMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setMessages","to":"external:this.dedupeSyntheticUserMessages","kind":"calls","metadata":{"unresolvedName":"this.dedupeSyntheticUserMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setMessages","to":"external:state.messages.findIndex","kind":"calls","metadata":{"unresolvedName":"state.messages.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setMessages","to":"external:state.messages.slice(revertIndex).filter","kind":"calls","metadata":{"unresolvedName":"state.messages.slice(revertIndex).filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setMessages","to":"external:state.messages.slice","kind":"calls","metadata":{"unresolvedName":"state.messages.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setMessages","to":"external:revertedUserMessages.map","kind":"calls","metadata":{"unresolvedName":"revertedUserMessages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setMessages","to":"external:this.extractUserText","kind":"calls","metadata":{"unresolvedName":"this.extractUserText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setMessages","to":"external:this.extractUserAttachments","kind":"calls","metadata":{"unresolvedName":"this.extractUserAttachments"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setMessages","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","to":"external:this.extractUserText","kind":"calls","metadata":{"unresolvedName":"this.extractUserText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","to":"external:this.extractUserAttachments","kind":"calls","metadata":{"unresolvedName":"this.extractUserAttachments"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:prependMessages","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:prependMessages","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:prependMessages","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:prependMessages","to":"external:apiMessages.map","kind":"calls","metadata":{"unresolvedName":"apiMessages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:prependMessages","to":"external:state.messages.map","kind":"calls","metadata":{"unresolvedName":"state.messages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:prependMessages","to":"external:newMessages.filter","kind":"calls","metadata":{"unresolvedName":"newMessages.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:prependMessages","to":"external:existingIds.has","kind":"calls","metadata":{"unresolvedName":"existingIds.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:prependMessages","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:clearAll","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:clearAll","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:clearAll","to":"external:this.sessions.clear","kind":"calls","metadata":{"unresolvedName":"this.sessions.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:clearAll","to":"external:this.sessionAccessTime.clear","kind":"calls","metadata":{"unresolvedName":"this.sessionAccessTime.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:clearAll","to":"external:this.dirtyMessagesBySession.clear","kind":"calls","metadata":{"unresolvedName":"this.dirtyMessagesBySession.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:clearAll","to":"symbol-name:cancelAnimationFrame","kind":"calls","metadata":{"unresolvedName":"cancelAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:clearAll","to":"external:this.notifyImmediate","kind":"calls","metadata":{"unresolvedName":"this.notifyImmediate"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:clearSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:clearSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:clearSession","to":"external:this.sessions.delete","kind":"calls","metadata":{"unresolvedName":"this.sessions.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:clearSession","to":"external:this.sessionAccessTime.delete","kind":"calls","metadata":{"unresolvedName":"this.sessionAccessTime.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:clearSession","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setShareUrl","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setShareUrl","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setShareUrl","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setShareUrl","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:createStreamingPlaceholderMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:createStreamingPlaceholderMessage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:createStreamingPlaceholderMessage","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toUIMessageInfo","kind":"calls","metadata":{"unresolvedName":"toUIMessageInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:createStreamingPlaceholderMessage","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:ensureMessageForPart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:ensureMessageForPart","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:ensureMessageForPart","to":"external:this.ensureSession","kind":"calls","metadata":{"unresolvedName":"this.ensureSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:ensureMessageForPart","to":"external:state.messages.findIndex","kind":"calls","metadata":{"unresolvedName":"state.messages.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:ensureMessageForPart","to":"external:this.createStreamingPlaceholderMessage","kind":"calls","metadata":{"unresolvedName":"this.createStreamingPlaceholderMessage"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:withTextPartFromMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:withTextPartFromMessage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:withTextPartFromMessage","to":"external:message.parts.findIndex","kind":"calls","metadata":{"unresolvedName":"message.parts.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:withTextPartFromMessage","to":"external:parts.push","kind":"calls","metadata":{"unresolvedName":"parts.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:isSyntheticLiveMessageId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:isSyntheticLiveMessageId","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:isSyntheticLiveMessageId","to":"external:id.startsWith","kind":"calls","metadata":{"unresolvedName":"id.startsWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:findDuplicateLiveUserMessageIndex","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:findDuplicateLiveUserMessageIndex","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:findDuplicateLiveUserMessageIndex","to":"external:Number.isFinite","kind":"calls","metadata":{"unresolvedName":"Number.isFinite"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:findDuplicateLiveUserMessageIndex","to":"external:state.messages.findIndex","kind":"calls","metadata":{"unresolvedName":"state.messages.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:findDuplicateLiveUserMessageIndex","to":"external:this.isSyntheticLiveMessageId","kind":"calls","metadata":{"unresolvedName":"this.isSyntheticLiveMessageId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:findDuplicateLiveUserMessageIndex","to":"symbol-name:getMessageText","kind":"calls","metadata":{"unresolvedName":"getMessageText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:findDuplicateLiveUserMessageIndex","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","to":"external:this.isSyntheticLiveMessageId","kind":"calls","metadata":{"unresolvedName":"this.isSyntheticLiveMessageId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","to":"symbol-name:getMessageText","kind":"calls","metadata":{"unresolvedName":"getMessageText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","to":"external:Number.isFinite","kind":"calls","metadata":{"unresolvedName":"Number.isFinite"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:remapMessageIdentity","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:remapMessageIdentity","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:remapMessageIdentity","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toUIMessageInfo","kind":"calls","metadata":{"unresolvedName":"toUIMessageInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:remapMessageIdentity","to":"external:message.parts.map","kind":"calls","metadata":{"unresolvedName":"message.parts.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:remapMessageIdentity","to":"external:part.id.startsWith","kind":"calls","metadata":{"unresolvedName":"part.id.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:remapMessageIdentity","to":"external:part.id.slice","kind":"calls","metadata":{"unresolvedName":"part.id.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:sortMessagesByCreated","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:sortMessagesByCreated","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:sortMessagesByCreated","to":"external:[...messages].sort","kind":"calls","metadata":{"unresolvedName":"[...messages].sort"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleMessageUpdated","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleMessageUpdated","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleMessageUpdated","to":"symbol-name:isVisibleChatRole","kind":"calls","metadata":{"unresolvedName":"isVisibleChatRole"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleMessageUpdated","to":"external:logger.warn","kind":"calls","metadata":{"unresolvedName":"logger.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleMessageUpdated","to":"external:this.ensureSession","kind":"calls","metadata":{"unresolvedName":"this.ensureSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleMessageUpdated","to":"external:state.messages.findIndex","kind":"calls","metadata":{"unresolvedName":"state.messages.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleMessageUpdated","to":"external:this.findDuplicateLiveUserMessageIndex","kind":"calls","metadata":{"unresolvedName":"this.findDuplicateLiveUserMessageIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleMessageUpdated","to":"external:this.remapMessageIdentity","kind":"calls","metadata":{"unresolvedName":"this.remapMessageIdentity"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleMessageUpdated","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toUIMessageInfo","kind":"calls","metadata":{"unresolvedName":"toUIMessageInfo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleMessageUpdated","to":"external:this.withTextPartFromMessage","kind":"calls","metadata":{"unresolvedName":"this.withTextPartFromMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleMessageUpdated","to":"external:state.messages.slice","kind":"calls","metadata":{"unresolvedName":"state.messages.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleMessageUpdated","to":"external:this.sortMessagesByCreated","kind":"calls","metadata":{"unresolvedName":"this.sortMessagesByCreated"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleMessageUpdated","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartUpdated","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartUpdated","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartUpdated","to":"external:this.ensureMessageForPart","kind":"calls","metadata":{"unresolvedName":"this.ensureMessageForPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartUpdated","to":"external:newParts.findIndex","kind":"calls","metadata":{"unresolvedName":"newParts.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartUpdated","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toUIPart","kind":"calls","metadata":{"unresolvedName":"toUIPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartUpdated","to":"external:newParts.push","kind":"calls","metadata":{"unresolvedName":"newParts.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartUpdated","to":"external:state.messages.slice","kind":"calls","metadata":{"unresolvedName":"state.messages.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartUpdated","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartDelta","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartDelta","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartDelta","to":"external:this.ensureMessageForPart","kind":"calls","metadata":{"unresolvedName":"this.ensureMessageForPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartDelta","to":"external:msg.parts.find","kind":"calls","metadata":{"unresolvedName":"msg.parts.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartDelta","to":"external:state.messages.slice","kind":"calls","metadata":{"unresolvedName":"state.messages.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartDelta","to":"external:this.dirtyMessagesBySession.get","kind":"calls","metadata":{"unresolvedName":"this.dirtyMessagesBySession.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartDelta","to":"external:this.dirtyMessagesBySession.set","kind":"calls","metadata":{"unresolvedName":"this.dirtyMessagesBySession.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartDelta","to":"external:dirtyMessages.add","kind":"calls","metadata":{"unresolvedName":"dirtyMessages.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartDelta","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartRemoved","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartRemoved","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartRemoved","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartRemoved","to":"external:state.messages.findIndex","kind":"calls","metadata":{"unresolvedName":"state.messages.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartRemoved","to":"external:oldMessage.parts.some","kind":"calls","metadata":{"unresolvedName":"oldMessage.parts.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartRemoved","to":"external:oldMessage.parts.filter","kind":"calls","metadata":{"unresolvedName":"oldMessage.parts.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartRemoved","to":"external:state.messages.slice","kind":"calls","metadata":{"unresolvedName":"state.messages.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handlePartRemoved","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleSessionIdle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleSessionIdle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleSessionIdle","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleSessionIdle","to":"external:state.messages.some","kind":"calls","metadata":{"unresolvedName":"state.messages.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleSessionIdle","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleSessionIdle","to":"external:state.messages.map","kind":"calls","metadata":{"unresolvedName":"state.messages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleSessionIdle","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleSessionError","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleSessionError","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleSessionError","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleSessionError","to":"external:state.messages.some","kind":"calls","metadata":{"unresolvedName":"state.messages.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleSessionError","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleSessionError","to":"external:state.messages.map","kind":"calls","metadata":{"unresolvedName":"state.messages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:handleSessionError","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:truncateAfterRevert","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:truncateAfterRevert","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:truncateAfterRevert","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:truncateAfterRevert","to":"external:state.messages.findIndex","kind":"calls","metadata":{"unresolvedName":"state.messages.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:truncateAfterRevert","to":"external:state.messages.slice","kind":"calls","metadata":{"unresolvedName":"state.messages.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:truncateAfterRevert","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:createSendRollbackSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:createSendRollbackSnapshot","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:createSendRollbackSnapshot","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:createSendRollbackSnapshot","to":"external:state.messages.map","kind":"calls","metadata":{"unresolvedName":"state.messages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:createSendRollbackSnapshot","to":"external:state.revertState.history.map","kind":"calls","metadata":{"unresolvedName":"state.revertState.history.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:restoreSendRollback","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:restoreSendRollback","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:restoreSendRollback","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:restoreSendRollback","to":"external:snapshot.messages.map","kind":"calls","metadata":{"unresolvedName":"snapshot.messages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:restoreSendRollback","to":"external:snapshot.revertState.history.map","kind":"calls","metadata":{"unresolvedName":"snapshot.revertState.history.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:restoreSendRollback","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setRevertState","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setRevertState","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setRevertState","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setRevertState","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getLastUserMessageId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getLastUserMessageId","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getLastUserMessageId","to":"external:this.getVisibleMessages","kind":"calls","metadata":{"unresolvedName":"this.getVisibleMessages"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:canUndo","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:canUndo","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:canUndo","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:canUndo","to":"external:this.getVisibleMessages(sessionId).some","kind":"calls","metadata":{"unresolvedName":"this.getVisibleMessages(sessionId).some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:canUndo","to":"external:this.getVisibleMessages","kind":"calls","metadata":{"unresolvedName":"this.getVisibleMessages"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:canRedo","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:canRedo","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:canRedo","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getRedoSteps","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getRedoSteps","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getRedoSteps","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getCurrentRevertedContent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getCurrentRevertedContent","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:getCurrentRevertedContent","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setStreaming","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setStreaming","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setStreaming","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:setStreaming","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:extractUserText","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:extractUserText","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:extractUserText","to":"external:message.parts\n .filter","kind":"calls","metadata":{"unresolvedName":"message.parts\n .filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:extractUserAttachments","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:extractUserAttachments","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:extractUserAttachments","to":"external:attachments.push","kind":"calls","metadata":{"unresolvedName":"attachments.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts:extractUserAttachments","to":"external:crypto.randomUUID","kind":"calls","metadata":{"unresolvedName":"crypto.randomUUID"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","to":"external:@testing-library/react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:createUserMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:createUserMessage","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:createTextPart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:createTextPart","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:createMessageWithParts","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:createMessageWithParts","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:createMessageWithParts","to":"symbol-name:createUserMessage","kind":"calls","metadata":{"unresolvedName":"createUserMessage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:createMessageWithParts","to":"symbol-name:createTextPart","kind":"calls","metadata":{"unresolvedName":"createTextPart"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"external:messageStore.clearAll","kind":"calls","metadata":{"unresolvedName":"messageStore.clearAll"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"external:messageStore.setMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"symbol-name:createMessageWithParts","kind":"calls","metadata":{"unresolvedName":"createMessageWithParts"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"external:messageStore.setRevertState","kind":"calls","metadata":{"unresolvedName":"messageStore.setRevertState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useSessionState","kind":"calls","metadata":{"unresolvedName":"useSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"external:expect(result.current?.messages.map(message => message.info.id)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(result.current?.messages.map(message => message.info.id)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"external:result.current?.messages.map","kind":"calls","metadata":{"unresolvedName":"result.current?.messages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"external:expect(result.current?.canUndo).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current?.canUndo).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"external:expect(result.current?.messages).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(result.current?.messages).toEqual"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"external:messageStore.clearAll","kind":"calls","metadata":{"unresolvedName":"messageStore.clearAll"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"external:messageStore.setMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"symbol-name:createMessageWithParts","kind":"calls","metadata":{"unresolvedName":"createMessageWithParts"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"external:messageStore.setRevertState","kind":"calls","metadata":{"unresolvedName":"messageStore.setRevertState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useSessionState","kind":"calls","metadata":{"unresolvedName":"useSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"external:expect(result.current?.messages.map(message => message.info.id)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(result.current?.messages.map(message => message.info.id)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"external:result.current?.messages.map","kind":"calls","metadata":{"unresolvedName":"result.current?.messages.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"external:expect(result.current?.canUndo).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current?.canUndo).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"external:messageStore.setMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.setMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"symbol-name:createMessageWithParts","kind":"calls","metadata":{"unresolvedName":"createMessageWithParts"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"external:messageStore.setRevertState","kind":"calls","metadata":{"unresolvedName":"messageStore.setRevertState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"symbol-name:renderHook","kind":"calls","metadata":{"unresolvedName":"renderHook"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useSessionState","kind":"calls","metadata":{"unresolvedName":"useSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"external:expect(result.current?.messages).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(result.current?.messages).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.test.tsx:","to":"external:expect(result.current?.canUndo).toBe","kind":"calls","metadata":{"unresolvedName":"expect(result.current?.canUndo).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreTypes.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:createSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:createSnapshot","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:createSnapshot","to":"external:paneLayoutStore.getFocusedSessionId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedSessionId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:createSnapshot","to":"external:messageStore.getVisibleMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.getVisibleMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:createSnapshot","to":"external:messageStore.getIsStreaming","kind":"calls","metadata":{"unresolvedName":"messageStore.getIsStreaming"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:createSnapshot","to":"external:messageStore.getRevertState","kind":"calls","metadata":{"unresolvedName":"messageStore.getRevertState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:createSnapshot","to":"external:messageStore.getHasMoreHistory","kind":"calls","metadata":{"unresolvedName":"messageStore.getHasMoreHistory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:createSnapshot","to":"external:messageStore.getSessionDirectory","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:createSnapshot","to":"external:messageStore.getSessionTitle","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionTitle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:createSnapshot","to":"external:messageStore.getShareUrl","kind":"calls","metadata":{"unresolvedName":"messageStore.getShareUrl"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:createSnapshot","to":"external:messageStore.canUndo","kind":"calls","metadata":{"unresolvedName":"messageStore.canUndo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:createSnapshot","to":"external:messageStore.canRedo","kind":"calls","metadata":{"unresolvedName":"messageStore.canRedo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:createSnapshot","to":"external:messageStore.getRedoSteps","kind":"calls","metadata":{"unresolvedName":"messageStore.getRedoSteps"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:createSnapshot","to":"external:messageStore.getCurrentRevertedContent","kind":"calls","metadata":{"unresolvedName":"messageStore.getCurrentRevertedContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:createSnapshot","to":"external:messageStore.getLoadState","kind":"calls","metadata":{"unresolvedName":"messageStore.getLoadState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:getSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:getSnapshot","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:getSnapshot","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:createSnapshot","kind":"calls","metadata":{"unresolvedName":"createSnapshot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:subscribeFocusedSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:subscribeFocusedSnapshot","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:subscribeFocusedSnapshot","to":"external:messageStore.subscribe","kind":"calls","metadata":{"unresolvedName":"messageStore.subscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:subscribeFocusedSnapshot","to":"external:paneLayoutStore.subscribe","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.subscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:subscribeFocusedSnapshot","to":"symbol-name:unsubscribeMessageStore","kind":"calls","metadata":{"unresolvedName":"unsubscribeMessageStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:subscribeFocusedSnapshot","to":"symbol-name:unsubscribePaneLayout","kind":"calls","metadata":{"unresolvedName":"unsubscribePaneLayout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:","to":"symbol-name:unsubscribeMessageStore","kind":"calls","metadata":{"unresolvedName":"unsubscribeMessageStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:","to":"symbol-name:unsubscribePaneLayout","kind":"calls","metadata":{"unresolvedName":"unsubscribePaneLayout"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStore","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStore","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStore","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStoreSelector","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStoreSelector","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStoreSelector","to":"symbol-name:useRef","kind":"calls","metadata":{"unresolvedName":"useRef"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStoreSelector","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStoreSelector","to":"symbol-name:getSnapshot","kind":"calls","metadata":{"unresolvedName":"getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStoreSelector","to":"symbol-name:selector","kind":"calls","metadata":{"unresolvedName":"selector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStoreSelector","to":"symbol-name:equalityFn","kind":"calls","metadata":{"unresolvedName":"equalityFn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStoreSelector","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:","to":"symbol-name:getSnapshot","kind":"calls","metadata":{"unresolvedName":"getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:","to":"symbol-name:selector","kind":"calls","metadata":{"unresolvedName":"selector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:","to":"symbol-name:equalityFn","kind":"calls","metadata":{"unresolvedName":"equalityFn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:shallowEqual","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:shallowEqual","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:shallowEqual","to":"external:Object.keys","kind":"calls","metadata":{"unresolvedName":"Object.keys"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:","to":"external:sessionSnapshots.clear","kind":"calls","metadata":{"unresolvedName":"sessionSnapshots.clear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useSessionState","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useSessionState","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useSessionState","to":"external:sessionSnapshots.has","kind":"calls","metadata":{"unresolvedName":"sessionSnapshots.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useSessionState","to":"external:sessionSnapshots.get","kind":"calls","metadata":{"unresolvedName":"sessionSnapshots.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useSessionState","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useSessionState","to":"external:messageStore.getVisibleMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.getVisibleMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useSessionState","to":"external:messageStore.canUndo","kind":"calls","metadata":{"unresolvedName":"messageStore.canUndo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useSessionState","to":"external:sessionSnapshots.set","kind":"calls","metadata":{"unresolvedName":"sessionSnapshots.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useSessionState","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useSessionState","to":"external:messageStore.subscribe","kind":"calls","metadata":{"unresolvedName":"messageStore.subscribe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:getSessionSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:getSessionSnapshot","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:getSessionSnapshot","to":"external:sessionSnapshots.has","kind":"calls","metadata":{"unresolvedName":"sessionSnapshots.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:getSessionSnapshot","to":"external:sessionSnapshots.get","kind":"calls","metadata":{"unresolvedName":"sessionSnapshots.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:getSessionSnapshot","to":"external:messageStore.getSessionState","kind":"calls","metadata":{"unresolvedName":"messageStore.getSessionState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:getSessionSnapshot","to":"external:messageStore.getVisibleMessages","kind":"calls","metadata":{"unresolvedName":"messageStore.getVisibleMessages"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:getSessionSnapshot","to":"external:messageStore.canUndo","kind":"calls","metadata":{"unresolvedName":"messageStore.canUndo"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:getSessionSnapshot","to":"external:sessionSnapshots.set","kind":"calls","metadata":{"unresolvedName":"sessionSnapshots.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useCurrentSessionId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useCurrentSessionId","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useCurrentSessionId","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStoreSelector","kind":"calls","metadata":{"unresolvedName":"useMessageStoreSelector"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useIsStreaming","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useIsStreaming","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useIsStreaming","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStoreSelector","kind":"calls","metadata":{"unresolvedName":"useMessageStoreSelector"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessages","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessages","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessages","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStoreSelector","kind":"calls","metadata":{"unresolvedName":"useMessageStoreSelector"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useUndoRedoState","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useUndoRedoState","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useUndoRedoState","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreHooks.ts:useMessageStoreSelector","kind":"calls","metadata":{"unresolvedName":"useMessageStoreSelector"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/messageStoreTypes.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/ui.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:loadHiddenModelKeys","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:loadHiddenModelKeys","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:loadHiddenModelKeys","to":"external:serverStorage.getJSON","kind":"calls","metadata":{"unresolvedName":"serverStorage.getJSON"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:loadHiddenModelKeys","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:loadHiddenModelKeys","to":"external:stored.filter","kind":"calls","metadata":{"unresolvedName":"stored.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:","to":"external:this.reload","kind":"calls","metadata":{"unresolvedName":"this.reload"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:updateSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:updateSnapshot","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:updateSnapshot","to":"external:Array.from(this.hiddenModelKeys).sort","kind":"calls","metadata":{"unresolvedName":"Array.from(this.hiddenModelKeys).sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:updateSnapshot","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:persist","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:persist","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:persist","to":"external:serverStorage.setJSON","kind":"calls","metadata":{"unresolvedName":"serverStorage.setJSON"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:reload","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:reload","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:reload","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:loadHiddenModelKeys","kind":"calls","metadata":{"unresolvedName":"loadHiddenModelKeys"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:reload","to":"external:this.updateSnapshot","kind":"calls","metadata":{"unresolvedName":"this.updateSnapshot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:notify","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:notify","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:notify","to":"external:this.updateSnapshot","kind":"calls","metadata":{"unresolvedName":"this.updateSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:notify","to":"external:this.listeners.forEach","kind":"calls","metadata":{"unresolvedName":"this.listeners.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:notify","to":"symbol-name:listener","kind":"calls","metadata":{"unresolvedName":"listener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:","to":"external:this.listeners.add","kind":"calls","metadata":{"unresolvedName":"this.listeners.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:","to":"external:this.listeners.delete","kind":"calls","metadata":{"unresolvedName":"this.listeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:isVisible","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:isVisible","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:isVisible","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:isVisible","to":"external:this.hiddenModelKeys.has","kind":"calls","metadata":{"unresolvedName":"this.hiddenModelKeys.has"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:setVisible","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:setVisible","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:setVisible","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:setVisible","to":"external:this.hiddenModelKeys.delete","kind":"calls","metadata":{"unresolvedName":"this.hiddenModelKeys.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:setVisible","to":"external:this.hiddenModelKeys.has","kind":"calls","metadata":{"unresolvedName":"this.hiddenModelKeys.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:setVisible","to":"external:this.hiddenModelKeys.add","kind":"calls","metadata":{"unresolvedName":"this.hiddenModelKeys.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:setVisible","to":"external:this.persist","kind":"calls","metadata":{"unresolvedName":"this.persist"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:setVisible","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:setManyVisible","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:setManyVisible","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:setManyVisible","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:setManyVisible","to":"external:this.hiddenModelKeys.delete","kind":"calls","metadata":{"unresolvedName":"this.hiddenModelKeys.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:setManyVisible","to":"external:this.hiddenModelKeys.has","kind":"calls","metadata":{"unresolvedName":"this.hiddenModelKeys.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:setManyVisible","to":"external:this.hiddenModelKeys.add","kind":"calls","metadata":{"unresolvedName":"this.hiddenModelKeys.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:setManyVisible","to":"external:this.persist","kind":"calls","metadata":{"unresolvedName":"this.persist"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:setManyVisible","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:useHiddenModelKeys","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:useHiddenModelKeys","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/modelVisibilityStore.ts:useHiddenModelKeys","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","to":"external:localStorage.clear","kind":"calls","metadata":{"unresolvedName":"localStorage.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","to":"external:vi.resetModules","kind":"calls","metadata":{"unresolvedName":"vi.resetModules"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","to":"external:notificationEventSettingsStore.setSystemEnabled","kind":"calls","metadata":{"unresolvedName":"notificationEventSettingsStore.setSystemEnabled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","to":"external:expect(persisted).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(persisted).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","to":"external:localStorage.clear","kind":"calls","metadata":{"unresolvedName":"localStorage.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","to":"external:vi.resetModules","kind":"calls","metadata":{"unresolvedName":"vi.resetModules"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","to":"external:notificationEventSettingsStore.setSystemEnabled","kind":"calls","metadata":{"unresolvedName":"notificationEventSettingsStore.setSystemEnabled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","to":"external:expect(persisted).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(persisted).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:createDefaultSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:createDefaultSettings","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:loadSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:loadSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:loadSettings","to":"symbol-name:createDefaultSettings","kind":"calls","metadata":{"unresolvedName":"createDefaultSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:loadSettings","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:loadSettings","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:saveSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:saveSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:saveSettings","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:saveSettings","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:normalizeSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:normalizeSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:normalizeSettings","to":"symbol-name:createDefaultSettings","kind":"calls","metadata":{"unresolvedName":"createDefaultSettings"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:","to":"external:this.subscribers.add","kind":"calls","metadata":{"unresolvedName":"this.subscribers.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:","to":"external:this.subscribers.delete","kind":"calls","metadata":{"unresolvedName":"this.subscribers.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:notify","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:notify","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:notify","to":"external:this.subscribers.forEach","kind":"calls","metadata":{"unresolvedName":"this.subscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:notify","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:persist","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:persist","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:persist","to":"symbol-name:saveSettings","kind":"calls","metadata":{"unresolvedName":"saveSettings"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:isSystemEnabled","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:isSystemEnabled","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:setSystemEnabled","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:setSystemEnabled","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:setSystemEnabled","to":"external:this.persist","kind":"calls","metadata":{"unresolvedName":"this.persist"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:setSystemEnabled","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:exportNotificationEventSettingsBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:exportNotificationEventSettingsBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:exportNotificationEventSettingsBackup","to":"symbol-name:normalizeSettings","kind":"calls","metadata":{"unresolvedName":"normalizeSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:exportNotificationEventSettingsBackup","to":"external:notificationEventSettingsStore.getSnapshot","kind":"calls","metadata":{"unresolvedName":"notificationEventSettingsStore.getSnapshot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:importNotificationEventSettingsBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:importNotificationEventSettingsBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:importNotificationEventSettingsBackup","to":"symbol-name:saveSettings","kind":"calls","metadata":{"unresolvedName":"saveSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:importNotificationEventSettingsBackup","to":"symbol-name:normalizeSettings","kind":"calls","metadata":{"unresolvedName":"normalizeSettings"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:useNotificationEventSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:useNotificationEventSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:useNotificationEventSettings","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:loadNotifications","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:loadNotifications","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:loadNotifications","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:loadNotifications","to":"external:(JSON.parse(raw) as NotificationEntry[]).slice","kind":"calls","metadata":{"unresolvedName":"(JSON.parse(raw) as NotificationEntry[]).slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:loadNotifications","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:saveNotifications","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:saveNotifications","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:saveNotifications","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:saveNotifications","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:","to":"external:this.subscribers.add","kind":"calls","metadata":{"unresolvedName":"this.subscribers.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:","to":"external:this.subscribers.delete","kind":"calls","metadata":{"unresolvedName":"this.subscribers.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:notify","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:notify","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:notify","to":"external:this.subscribers.forEach","kind":"calls","metadata":{"unresolvedName":"this.subscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:notify","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:persist","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:persist","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:persist","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:saveNotifications","kind":"calls","metadata":{"unresolvedName":"saveNotifications"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:setToastEnabled","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:setToastEnabled","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:setToastEnabled","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:setToastEnabled","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:setToastEnabled","to":"external:this.dismissAllToasts","kind":"calls","metadata":{"unresolvedName":"this.dismissAllToasts"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:onPush","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:onPush","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:onPush","to":"external:this.pushListeners.add","kind":"calls","metadata":{"unresolvedName":"this.pushListeners.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:onPush","to":"external:this.pushListeners.delete","kind":"calls","metadata":{"unresolvedName":"this.pushListeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:push","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:push","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:push","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:push","to":"external:Math.random().toString(36).slice","kind":"calls","metadata":{"unresolvedName":"Math.random().toString(36).slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:push","to":"external:Math.random().toString","kind":"calls","metadata":{"unresolvedName":"Math.random().toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:push","to":"external:Math.random","kind":"calls","metadata":{"unresolvedName":"Math.random"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:push","to":"external:[entry, ...this.state.notifications].slice","kind":"calls","metadata":{"unresolvedName":"[entry, ...this.state.notifications].slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:push","to":"external:toasts.pop","kind":"calls","metadata":{"unresolvedName":"toasts.pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:push","to":"external:this.clearToastTimer","kind":"calls","metadata":{"unresolvedName":"this.clearToastTimer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:push","to":"external:toasts.unshift","kind":"calls","metadata":{"unresolvedName":"toasts.unshift"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:push","to":"external:this.persist","kind":"calls","metadata":{"unresolvedName":"this.persist"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:push","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:push","to":"external:this.scheduleToastDismiss","kind":"calls","metadata":{"unresolvedName":"this.scheduleToastDismiss"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:push","to":"external:this.pushListeners.forEach","kind":"calls","metadata":{"unresolvedName":"this.pushListeners.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:push","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markRead","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markRead","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markRead","to":"external:this.state.notifications.map","kind":"calls","metadata":{"unresolvedName":"this.state.notifications.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markRead","to":"external:this.persist","kind":"calls","metadata":{"unresolvedName":"this.persist"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markRead","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markAllRead","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markAllRead","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markAllRead","to":"external:this.state.notifications.map","kind":"calls","metadata":{"unresolvedName":"this.state.notifications.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markAllRead","to":"external:this.persist","kind":"calls","metadata":{"unresolvedName":"this.persist"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markAllRead","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markSessionNotificationsRead","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markSessionNotificationsRead","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markSessionNotificationsRead","to":"external:this.state.notifications.map","kind":"calls","metadata":{"unresolvedName":"this.state.notifications.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markSessionNotificationsRead","to":"external:this.persist","kind":"calls","metadata":{"unresolvedName":"this.persist"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:markSessionNotificationsRead","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismiss","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismiss","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismiss","to":"external:this.state.notifications.filter","kind":"calls","metadata":{"unresolvedName":"this.state.notifications.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismiss","to":"external:this.persist","kind":"calls","metadata":{"unresolvedName":"this.persist"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismiss","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:clearAll","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:clearAll","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:clearAll","to":"external:this.persist","kind":"calls","metadata":{"unresolvedName":"this.persist"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:clearAll","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:scheduleToastDismiss","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:scheduleToastDismiss","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:scheduleToastDismiss","to":"external:this.clearToastTimer","kind":"calls","metadata":{"unresolvedName":"this.clearToastTimer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:scheduleToastDismiss","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:scheduleToastDismiss","to":"external:this.dismissToast","kind":"calls","metadata":{"unresolvedName":"this.dismissToast"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:scheduleToastDismiss","to":"external:this.toastTimers.set","kind":"calls","metadata":{"unresolvedName":"this.toastTimers.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:clearToastTimer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:clearToastTimer","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:clearToastTimer","to":"external:this.toastTimers.get","kind":"calls","metadata":{"unresolvedName":"this.toastTimers.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:clearToastTimer","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:clearToastTimer","to":"external:this.toastTimers.delete","kind":"calls","metadata":{"unresolvedName":"this.toastTimers.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:pauseToast","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:pauseToast","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:pauseToast","to":"external:this.clearToastTimer","kind":"calls","metadata":{"unresolvedName":"this.clearToastTimer"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:resumeToast","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:resumeToast","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:resumeToast","to":"external:this.state.toasts.some","kind":"calls","metadata":{"unresolvedName":"this.state.toasts.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:resumeToast","to":"external:this.scheduleToastDismiss","kind":"calls","metadata":{"unresolvedName":"this.scheduleToastDismiss"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismissToast","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismissToast","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismissToast","to":"external:this.clearToastTimer","kind":"calls","metadata":{"unresolvedName":"this.clearToastTimer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismissToast","to":"external:this.state.toasts.map","kind":"calls","metadata":{"unresolvedName":"this.state.toasts.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismissToast","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismissToast","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismissToast","to":"external:this.state.toasts.filter","kind":"calls","metadata":{"unresolvedName":"this.state.toasts.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:","to":"external:this.state.toasts.filter","kind":"calls","metadata":{"unresolvedName":"this.state.toasts.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismissAllToasts","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismissAllToasts","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismissAllToasts","to":"external:this.toastTimers.forEach","kind":"calls","metadata":{"unresolvedName":"this.toastTimers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismissAllToasts","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismissAllToasts","to":"external:this.toastTimers.clear","kind":"calls","metadata":{"unresolvedName":"this.toastTimers.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:dismissAllToasts","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:exportNotificationPreferencesBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:exportNotificationPreferencesBackup","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:importNotificationPreferencesBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:importNotificationPreferencesBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:importNotificationPreferencesBackup","to":"external:notificationStore.setToastEnabled","kind":"calls","metadata":{"unresolvedName":"notificationStore.setToastEnabled"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useNotificationStore","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useNotificationStore","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useNotificationStore","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useNotifications","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useNotifications","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useNotifications","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useNotificationStore","kind":"calls","metadata":{"unresolvedName":"useNotificationStore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useUnreadNotificationCount","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useUnreadNotificationCount","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useUnreadNotificationCount","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useNotificationStore","kind":"calls","metadata":{"unresolvedName":"useNotificationStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useUnreadNotificationCount","to":"external:state.notifications.filter","kind":"calls","metadata":{"unresolvedName":"state.notifications.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useUnreadCompletedSessionIds","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useUnreadCompletedSessionIds","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useUnreadCompletedSessionIds","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useNotificationStore","kind":"calls","metadata":{"unresolvedName":"useNotificationStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useUnreadCompletedSessionIds","to":"external:state.notifications.filter(n => n.type === 'completed' && !n.read).map","kind":"calls","metadata":{"unresolvedName":"state.notifications.filter(n => n.type === 'completed' && !n.read).map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useUnreadCompletedSessionIds","to":"external:state.notifications.filter","kind":"calls","metadata":{"unresolvedName":"state.notifications.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useHasUnreadCompletedNotification","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useHasUnreadCompletedNotification","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useHasUnreadCompletedNotification","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useUnreadCompletedSessionIds","kind":"calls","metadata":{"unresolvedName":"useUnreadCompletedSessionIds"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:useHasUnreadCompletedNotification","to":"external:unreadCompletedSessionIds.has","kind":"calls","metadata":{"unresolvedName":"unreadCompletedSessionIds.has"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:isSameController","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:isSameController","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:subscribe","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:subscribe","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:subscribe","to":"external:this.listeners.add","kind":"calls","metadata":{"unresolvedName":"this.listeners.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:subscribe","to":"external:this.listeners.delete","kind":"calls","metadata":{"unresolvedName":"this.listeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:notify","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:notify","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:notify","to":"symbol-name:listener","kind":"calls","metadata":{"unresolvedName":"listener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:rebuildSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:rebuildSnapshot","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:rebuildSnapshot","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:rebuildSnapshot","to":"external:this.controllers.values","kind":"calls","metadata":{"unresolvedName":"this.controllers.values"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:setController","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:setController","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:setController","to":"external:this.controllers.get","kind":"calls","metadata":{"unresolvedName":"this.controllers.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:setController","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:isSameController","kind":"calls","metadata":{"unresolvedName":"isSameController"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:setController","to":"external:this.controllers.set","kind":"calls","metadata":{"unresolvedName":"this.controllers.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:setController","to":"external:this.rebuildSnapshot","kind":"calls","metadata":{"unresolvedName":"this.rebuildSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:setController","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:removeController","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:removeController","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:removeController","to":"external:this.controllers.has","kind":"calls","metadata":{"unresolvedName":"this.controllers.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:removeController","to":"external:this.controllers.delete","kind":"calls","metadata":{"unresolvedName":"this.controllers.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:removeController","to":"external:this.rebuildSnapshot","kind":"calls","metadata":{"unresolvedName":"this.rebuildSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:removeController","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:getController","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:getController","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:getController","to":"external:this.controllers.get","kind":"calls","metadata":{"unresolvedName":"this.controllers.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:getControllers","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:getControllers","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:usePaneController","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:usePaneController","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:usePaneController","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:usePaneController","to":"external:paneControllerStore.subscribe","kind":"calls","metadata":{"unresolvedName":"paneControllerStore.subscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:usePaneController","to":"external:paneControllerStore.getController","kind":"calls","metadata":{"unresolvedName":"paneControllerStore.getController"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:usePaneControllers","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:usePaneControllers","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:usePaneControllers","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:usePaneControllers","to":"external:paneControllerStore.subscribe","kind":"calls","metadata":{"unresolvedName":"paneControllerStore.subscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneControllerStore.ts:usePaneControllers","to":"external:paneControllerStore.getControllers","kind":"calls","metadata":{"unresolvedName":"paneControllerStore.getControllers"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:paneLayoutStore.reset","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.reset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:paneLayoutStore.setFocusedSession","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.setFocusedSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:paneLayoutStore.splitPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.splitPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:expect(paneB).toBe","kind":"calls","metadata":{"unresolvedName":"expect(paneB).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:expect(paneC).toBe","kind":"calls","metadata":{"unresolvedName":"expect(paneC).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:paneLayoutStore.focusPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.focusPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:paneLayoutStore.closePane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.closePane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:expect(paneLayoutStore.getFocusedPaneId()).toBe","kind":"calls","metadata":{"unresolvedName":"expect(paneLayoutStore.getFocusedPaneId()).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:paneLayoutStore.getFocusedPaneId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:expect(paneLayoutStore.getFocusedSessionId()).toBe","kind":"calls","metadata":{"unresolvedName":"expect(paneLayoutStore.getFocusedSessionId()).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:paneLayoutStore.getFocusedSessionId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedSessionId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:paneLayoutStore.reset","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.reset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:paneLayoutStore.setFocusedSession","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.setFocusedSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:paneLayoutStore.splitPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.splitPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:expect(paneB).toBe","kind":"calls","metadata":{"unresolvedName":"expect(paneB).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:expect(paneC).toBe","kind":"calls","metadata":{"unresolvedName":"expect(paneC).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:paneLayoutStore.focusPane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.focusPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:paneLayoutStore.closePane","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.closePane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:expect(paneLayoutStore.getFocusedPaneId()).toBe","kind":"calls","metadata":{"unresolvedName":"expect(paneLayoutStore.getFocusedPaneId()).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:paneLayoutStore.getFocusedPaneId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:expect(paneLayoutStore.getFocusedSessionId()).toBe","kind":"calls","metadata":{"unresolvedName":"expect(paneLayoutStore.getFocusedSessionId()).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.test.ts:","to":"external:paneLayoutStore.getFocusedSessionId","kind":"calls","metadata":{"unresolvedName":"paneLayoutStore.getFocusedSessionId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:genPaneId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:genPaneId","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:genSplitId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:genSplitId","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:genSplitId","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:genSplitId","to":"external:Math.random().toString(36).slice","kind":"calls","metadata":{"unresolvedName":"Math.random().toString(36).slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:genSplitId","to":"external:Math.random().toString","kind":"calls","metadata":{"unresolvedName":"Math.random().toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:genSplitId","to":"external:Math.random","kind":"calls","metadata":{"unresolvedName":"Math.random"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:countLeaves","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:countLeaves","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:countLeaves","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:countLeaves","kind":"calls","metadata":{"unresolvedName":"countLeaves"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf","kind":"calls","metadata":{"unresolvedName":"findLeaf"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:allLeaves","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:allLeaves","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:allLeaves","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:allLeaves","kind":"calls","metadata":{"unresolvedName":"allLeaves"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:replaceNode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:replaceNode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:replaceNode","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:replaceNode","kind":"calls","metadata":{"unresolvedName":"replaceNode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:removeLeaf","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:removeLeaf","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:removeLeaf","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:removeLeaf","kind":"calls","metadata":{"unresolvedName":"removeLeaf"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findReplacementForRemovedLeaf","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findReplacementForRemovedLeaf","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findReplacementForRemovedLeaf","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findReplacementForRemovedLeaf","kind":"calls","metadata":{"unresolvedName":"findReplacementForRemovedLeaf"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:swapLeafSessions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:swapLeafSessions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:swapLeafSessions","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf","kind":"calls","metadata":{"unresolvedName":"findLeaf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:swapLeafSessions","to":"symbol-name:walk","kind":"calls","metadata":{"unresolvedName":"walk"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:walk","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:walk","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:walk","to":"symbol-name:walk","kind":"calls","metadata":{"unresolvedName":"walk"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:updateRatio","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:updateRatio","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:updateRatio","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:updateRatio","kind":"calls","metadata":{"unresolvedName":"updateRatio"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:genPaneId","kind":"calls","metadata":{"unresolvedName":"genPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:countLeaves","kind":"calls","metadata":{"unresolvedName":"countLeaves"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf","kind":"calls","metadata":{"unresolvedName":"findLeaf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_snapshot","kind":"calls","metadata":{"unresolvedName":"_snapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"symbol-name:_notify","kind":"calls","metadata":{"unresolvedName":"_notify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"external:_listeners.add","kind":"calls","metadata":{"unresolvedName":"_listeners.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"external:_listeners.delete","kind":"calls","metadata":{"unresolvedName":"_listeners.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:allLeaves","kind":"calls","metadata":{"unresolvedName":"allLeaves"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_refreshSnapshot","kind":"calls","metadata":{"unresolvedName":"_refreshSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"external:this.exitPaneFullscreen","kind":"calls","metadata":{"unresolvedName":"this.exitPaneFullscreen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"external:this.enterPaneFullscreen","kind":"calls","metadata":{"unresolvedName":"this.enterPaneFullscreen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:replaceNode","kind":"calls","metadata":{"unresolvedName":"replaceNode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"external:this.setPaneSession","kind":"calls","metadata":{"unresolvedName":"this.setPaneSession"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:genSplitId","kind":"calls","metadata":{"unresolvedName":"genSplitId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findReplacementForRemovedLeaf","kind":"calls","metadata":{"unresolvedName":"findReplacementForRemovedLeaf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:removeLeaf","kind":"calls","metadata":{"unresolvedName":"removeLeaf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:swapLeafSessions","kind":"calls","metadata":{"unresolvedName":"swapLeafSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:updateRatio","kind":"calls","metadata":{"unresolvedName":"updateRatio"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"external:this.splitPane","kind":"calls","metadata":{"unresolvedName":"this.splitPane"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"external:leaves.findIndex","kind":"calls","metadata":{"unresolvedName":"leaves.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:createPaneLayoutStore","to":"external:this.focusPane","kind":"calls","metadata":{"unresolvedName":"this.focusPane"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_notify","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_notify","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_notify","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_snapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_snapshot","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_snapshot","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:countLeaves","kind":"calls","metadata":{"unresolvedName":"countLeaves"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_snapshot","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf","kind":"calls","metadata":{"unresolvedName":"findLeaf"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_refreshSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_refreshSnapshot","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_refreshSnapshot","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_snapshot","kind":"calls","metadata":{"unresolvedName":"_snapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_refreshSnapshot","to":"symbol-name:_notify","kind":"calls","metadata":{"unresolvedName":"_notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:subscribe","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:subscribe","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:subscribe","to":"external:_listeners.add","kind":"calls","metadata":{"unresolvedName":"_listeners.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:subscribe","to":"external:_listeners.delete","kind":"calls","metadata":{"unresolvedName":"_listeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getSnapshot","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getRoot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getRoot","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getFocusedPaneId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getFocusedPaneId","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getFocusedLeaf","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getFocusedLeaf","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getFocusedLeaf","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf","kind":"calls","metadata":{"unresolvedName":"findLeaf"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getFocusedSessionId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getFocusedSessionId","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getFocusedSessionId","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf","kind":"calls","metadata":{"unresolvedName":"findLeaf"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getFullscreenPaneId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:getFullscreenPaneId","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf","kind":"calls","metadata":{"unresolvedName":"findLeaf"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:allLeaves","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:allLeaves","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:allLeaves","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:allLeaves","kind":"calls","metadata":{"unresolvedName":"allLeaves"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:isSinglePane","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:isSinglePane","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusPane","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusPane","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusPane","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_refreshSnapshot","kind":"calls","metadata":{"unresolvedName":"_refreshSnapshot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:enterPaneFullscreen","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:enterPaneFullscreen","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:enterPaneFullscreen","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf","kind":"calls","metadata":{"unresolvedName":"findLeaf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:enterPaneFullscreen","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_refreshSnapshot","kind":"calls","metadata":{"unresolvedName":"_refreshSnapshot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:exitPaneFullscreen","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:exitPaneFullscreen","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:exitPaneFullscreen","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_refreshSnapshot","kind":"calls","metadata":{"unresolvedName":"_refreshSnapshot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:togglePaneFullscreen","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:togglePaneFullscreen","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:togglePaneFullscreen","to":"external:this.exitPaneFullscreen","kind":"calls","metadata":{"unresolvedName":"this.exitPaneFullscreen"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:togglePaneFullscreen","to":"external:this.enterPaneFullscreen","kind":"calls","metadata":{"unresolvedName":"this.enterPaneFullscreen"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:setPaneSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:setPaneSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:setPaneSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf","kind":"calls","metadata":{"unresolvedName":"findLeaf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:setPaneSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:replaceNode","kind":"calls","metadata":{"unresolvedName":"replaceNode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:setPaneSession","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_refreshSnapshot","kind":"calls","metadata":{"unresolvedName":"_refreshSnapshot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:setFocusedSession","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:setFocusedSession","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:setFocusedSession","to":"external:this.setPaneSession","kind":"calls","metadata":{"unresolvedName":"this.setPaneSession"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:splitPane","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:splitPane","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:splitPane","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf","kind":"calls","metadata":{"unresolvedName":"findLeaf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:splitPane","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:genPaneId","kind":"calls","metadata":{"unresolvedName":"genPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:splitPane","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:genSplitId","kind":"calls","metadata":{"unresolvedName":"genSplitId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:splitPane","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:replaceNode","kind":"calls","metadata":{"unresolvedName":"replaceNode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:splitPane","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_refreshSnapshot","kind":"calls","metadata":{"unresolvedName":"_refreshSnapshot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:splitPaneToSide","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:splitPaneToSide","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:splitPaneToSide","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf","kind":"calls","metadata":{"unresolvedName":"findLeaf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:splitPaneToSide","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:genPaneId","kind":"calls","metadata":{"unresolvedName":"genPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:splitPaneToSide","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:genSplitId","kind":"calls","metadata":{"unresolvedName":"genSplitId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:splitPaneToSide","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:replaceNode","kind":"calls","metadata":{"unresolvedName":"replaceNode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:splitPaneToSide","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_refreshSnapshot","kind":"calls","metadata":{"unresolvedName":"_refreshSnapshot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:closePane","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:closePane","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:closePane","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_refreshSnapshot","kind":"calls","metadata":{"unresolvedName":"_refreshSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:closePane","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findReplacementForRemovedLeaf","kind":"calls","metadata":{"unresolvedName":"findReplacementForRemovedLeaf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:closePane","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:removeLeaf","kind":"calls","metadata":{"unresolvedName":"removeLeaf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:closePane","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf","kind":"calls","metadata":{"unresolvedName":"findLeaf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:closePane","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:allLeaves","kind":"calls","metadata":{"unresolvedName":"allLeaves"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:swapPanes","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:swapPanes","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:swapPanes","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:swapLeafSessions","kind":"calls","metadata":{"unresolvedName":"swapLeafSessions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:swapPanes","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_refreshSnapshot","kind":"calls","metadata":{"unresolvedName":"_refreshSnapshot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:setRatio","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:setRatio","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:setRatio","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:setRatio","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:setRatio","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:updateRatio","kind":"calls","metadata":{"unresolvedName":"updateRatio"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:setRatio","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_refreshSnapshot","kind":"calls","metadata":{"unresolvedName":"_refreshSnapshot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:enterSplitMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:enterSplitMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:enterSplitMode","to":"external:this.splitPane","kind":"calls","metadata":{"unresolvedName":"this.splitPane"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:exitSplitMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:exitSplitMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:exitSplitMode","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:allLeaves","kind":"calls","metadata":{"unresolvedName":"allLeaves"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:exitSplitMode","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:findLeaf","kind":"calls","metadata":{"unresolvedName":"findLeaf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:exitSplitMode","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_refreshSnapshot","kind":"calls","metadata":{"unresolvedName":"_refreshSnapshot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:reset","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:reset","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:reset","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:genPaneId","kind":"calls","metadata":{"unresolvedName":"genPaneId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:reset","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:_refreshSnapshot","kind":"calls","metadata":{"unresolvedName":"_refreshSnapshot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusNextPane","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusNextPane","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusNextPane","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:allLeaves","kind":"calls","metadata":{"unresolvedName":"allLeaves"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusNextPane","to":"external:leaves.findIndex","kind":"calls","metadata":{"unresolvedName":"leaves.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusNextPane","to":"external:this.focusPane","kind":"calls","metadata":{"unresolvedName":"this.focusPane"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusPrevPane","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusPrevPane","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusPrevPane","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:allLeaves","kind":"calls","metadata":{"unresolvedName":"allLeaves"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusPrevPane","to":"external:leaves.findIndex","kind":"calls","metadata":{"unresolvedName":"leaves.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusPrevPane","to":"external:this.focusPane","kind":"calls","metadata":{"unresolvedName":"this.focusPane"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusPaneByIndex","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusPaneByIndex","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusPaneByIndex","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:allLeaves","kind":"calls","metadata":{"unresolvedName":"allLeaves"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:focusPaneByIndex","to":"external:this.focusPane","kind":"calls","metadata":{"unresolvedName":"this.focusPane"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:usePaneLayout","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:usePaneLayout","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/paneLayoutStore.ts:usePaneLayout","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:vi.resetModules","kind":"calls","metadata":{"unresolvedName":"vi.resetModules"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:localStorage.clear","kind":"calls","metadata":{"unresolvedName":"localStorage.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:sessionStorage.clear","kind":"calls","metadata":{"unresolvedName":"sessionStorage.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:Date.parse","kind":"calls","metadata":{"unresolvedName":"Date.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:perfSpy.mockReturnValueOnce","kind":"calls","metadata":{"unresolvedName":"perfSpy.mockReturnValueOnce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:serverStore.applyServerConnectedTimestamp","kind":"calls","metadata":{"unresolvedName":"serverStore.applyServerConnectedTimestamp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:serverStore.getActiveServerId","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveServerId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:new Date(serverTimestamp).toISOString","kind":"calls","metadata":{"unresolvedName":"new Date(serverTimestamp).toISOString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:perfSpy.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"perfSpy.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:expect(serverStore.getActiveCalibratedNow()).toBe","kind":"calls","metadata":{"unresolvedName":"expect(serverStore.getActiveCalibratedNow()).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:serverStore.getActiveCalibratedNow","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveCalibratedNow"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:expect(serverStore.getActiveCalibratedNow()).toBeUndefined","kind":"calls","metadata":{"unresolvedName":"expect(serverStore.getActiveCalibratedNow()).toBeUndefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:serverStore.addServer","kind":"calls","metadata":{"unresolvedName":"serverStore.addServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:serverStore.setActiveServer","kind":"calls","metadata":{"unresolvedName":"serverStore.setActiveServer"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:vi.resetModules","kind":"calls","metadata":{"unresolvedName":"vi.resetModules"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:localStorage.clear","kind":"calls","metadata":{"unresolvedName":"localStorage.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:sessionStorage.clear","kind":"calls","metadata":{"unresolvedName":"sessionStorage.clear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:Date.parse","kind":"calls","metadata":{"unresolvedName":"Date.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:perfSpy.mockReturnValueOnce","kind":"calls","metadata":{"unresolvedName":"perfSpy.mockReturnValueOnce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:serverStore.applyServerConnectedTimestamp","kind":"calls","metadata":{"unresolvedName":"serverStore.applyServerConnectedTimestamp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:serverStore.getActiveServerId","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveServerId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:new Date(serverTimestamp).toISOString","kind":"calls","metadata":{"unresolvedName":"new Date(serverTimestamp).toISOString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:perfSpy.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"perfSpy.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:expect(serverStore.getActiveCalibratedNow()).toBe","kind":"calls","metadata":{"unresolvedName":"expect(serverStore.getActiveCalibratedNow()).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:serverStore.getActiveCalibratedNow","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveCalibratedNow"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:serverStore.applyServerConnectedTimestamp","kind":"calls","metadata":{"unresolvedName":"serverStore.applyServerConnectedTimestamp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:serverStore.getActiveServerId","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveServerId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:expect(serverStore.getActiveCalibratedNow()).toBeUndefined","kind":"calls","metadata":{"unresolvedName":"expect(serverStore.getActiveCalibratedNow()).toBeUndefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:serverStore.getActiveCalibratedNow","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveCalibratedNow"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:vi.spyOn","kind":"calls","metadata":{"unresolvedName":"vi.spyOn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:perfSpy.mockReturnValue","kind":"calls","metadata":{"unresolvedName":"perfSpy.mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:serverStore.applyServerConnectedTimestamp","kind":"calls","metadata":{"unresolvedName":"serverStore.applyServerConnectedTimestamp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:serverStore.getActiveServerId","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveServerId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:serverStore.addServer","kind":"calls","metadata":{"unresolvedName":"serverStore.addServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:serverStore.setActiveServer","kind":"calls","metadata":{"unresolvedName":"serverStore.setActiveServer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:expect(serverStore.getActiveCalibratedNow()).toBeUndefined","kind":"calls","metadata":{"unresolvedName":"expect(serverStore.getActiveCalibratedNow()).toBeUndefined"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.test.ts:","to":"external:serverStore.getActiveCalibratedNow","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveCalibratedNow"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getUnifiedFetch","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getUnifiedFetch","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getUnifiedFetch","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getUnifiedFetch","to":"external:import('@tauri-apps/plugin-http').then","kind":"calls","metadata":{"unresolvedName":"import('@tauri-apps/plugin-http').then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getUnifiedFetch","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:loadFromStorage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:loadFromStorage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:loadFromStorage","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:loadFromStorage","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:loadFromStorage","to":"external:sessionStorage.getItem","kind":"calls","metadata":{"unresolvedName":"sessionStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:loadFromStorage","to":"external:this.servers.some","kind":"calls","metadata":{"unresolvedName":"this.servers.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:saveToStorage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:saveToStorage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:saveToStorage","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:saveToStorage","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:saveToStorage","to":"external:sessionStorage.setItem","kind":"calls","metadata":{"unresolvedName":"sessionStorage.setItem"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:subscribe","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:subscribe","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:subscribe","to":"external:this.listeners.add","kind":"calls","metadata":{"unresolvedName":"this.listeners.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:subscribe","to":"external:this.listeners.delete","kind":"calls","metadata":{"unresolvedName":"this.listeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:onServerChange","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:onServerChange","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:onServerChange","to":"external:this.serverChangeListeners.add","kind":"calls","metadata":{"unresolvedName":"this.serverChangeListeners.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:onServerChange","to":"external:this.serverChangeListeners.delete","kind":"calls","metadata":{"unresolvedName":"this.serverChangeListeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:notify","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:notify","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:notify","to":"external:this.updateSnapshots","kind":"calls","metadata":{"unresolvedName":"this.updateSnapshots"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:notify","to":"external:this.listeners.forEach","kind":"calls","metadata":{"unresolvedName":"this.listeners.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:notify","to":"symbol-name:l","kind":"calls","metadata":{"unresolvedName":"l"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:","to":"symbol-name:l","kind":"calls","metadata":{"unresolvedName":"l"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:updateSnapshots","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:updateSnapshots","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:updateSnapshots","to":"external:this.servers.find","kind":"calls","metadata":{"unresolvedName":"this.servers.find"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getServers","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getServers","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveServer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveServer","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveServerId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveServerId","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:isPiMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:isPiMode","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveToken","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveToken","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveToken","to":"external:this.isPiMode","kind":"calls","metadata":{"unresolvedName":"this.isPiMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveBaseUrl","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveBaseUrl","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveBaseUrl","to":"external:this.isPiMode","kind":"calls","metadata":{"unresolvedName":"this.isPiMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveBaseUrl","to":"external:this.getActiveServer","kind":"calls","metadata":{"unresolvedName":"this.getActiveServer"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveAuth","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveAuth","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveAuth","to":"external:this.isPiMode","kind":"calls","metadata":{"unresolvedName":"this.isPiMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveAuth","to":"external:this.getActiveServer","kind":"calls","metadata":{"unresolvedName":"this.getActiveServer"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getServerAuth","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getServerAuth","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getServerAuth","to":"external:this.servers.find","kind":"calls","metadata":{"unresolvedName":"this.servers.find"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getHealth","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getHealth","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getHealth","to":"external:this.healthMap.get","kind":"calls","metadata":{"unresolvedName":"this.healthMap.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getAllHealth","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getAllHealth","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveCalibratedNow","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveCalibratedNow","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveCalibratedNow","to":"external:this.clockCalibrationMap.get","kind":"calls","metadata":{"unresolvedName":"this.clockCalibrationMap.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveCalibratedNow","to":"external:this.getActiveServerId","kind":"calls","metadata":{"unresolvedName":"this.getActiveServerId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getActiveCalibratedNow","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:addServer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:addServer","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:addServer","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:addServer","to":"external:Math.random().toString(36).slice","kind":"calls","metadata":{"unresolvedName":"Math.random().toString(36).slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:addServer","to":"external:Math.random().toString","kind":"calls","metadata":{"unresolvedName":"Math.random().toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:addServer","to":"external:Math.random","kind":"calls","metadata":{"unresolvedName":"Math.random"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:addServer","to":"external:config.url.replace","kind":"calls","metadata":{"unresolvedName":"config.url.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:addServer","to":"external:this.servers.push","kind":"calls","metadata":{"unresolvedName":"this.servers.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:addServer","to":"external:this.saveToStorage","kind":"calls","metadata":{"unresolvedName":"this.saveToStorage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:addServer","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:updateServer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:updateServer","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:updateServer","to":"external:this.servers.findIndex","kind":"calls","metadata":{"unresolvedName":"this.servers.findIndex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:updateServer","to":"external:updates.url.replace","kind":"calls","metadata":{"unresolvedName":"updates.url.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:updateServer","to":"external:this.saveToStorage","kind":"calls","metadata":{"unresolvedName":"this.saveToStorage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:updateServer","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:removeServer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:removeServer","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:removeServer","to":"external:this.servers.find","kind":"calls","metadata":{"unresolvedName":"this.servers.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:removeServer","to":"external:this.servers.filter","kind":"calls","metadata":{"unresolvedName":"this.servers.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:removeServer","to":"external:this.healthMap.delete","kind":"calls","metadata":{"unresolvedName":"this.healthMap.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:removeServer","to":"external:this.clockCalibrationMap.delete","kind":"calls","metadata":{"unresolvedName":"this.clockCalibrationMap.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:removeServer","to":"external:this.saveToStorage","kind":"calls","metadata":{"unresolvedName":"this.saveToStorage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:removeServer","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:setActiveServer","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:setActiveServer","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:setActiveServer","to":"external:this.servers.some","kind":"calls","metadata":{"unresolvedName":"this.servers.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:setActiveServer","to":"external:this.saveToStorage","kind":"calls","metadata":{"unresolvedName":"this.saveToStorage"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:setActiveServer","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:setActiveServer","to":"external:this.serverChangeListeners.forEach","kind":"calls","metadata":{"unresolvedName":"this.serverChangeListeners.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:setActiveServer","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:applyServerConnectedTimestamp","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:applyServerConnectedTimestamp","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:applyServerConnectedTimestamp","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:normalizeServerTimestamp","kind":"calls","metadata":{"unresolvedName":"normalizeServerTimestamp"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:applyServerConnectedTimestamp","to":"external:this.clockCalibrationMap.set","kind":"calls","metadata":{"unresolvedName":"this.clockCalibrationMap.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:applyServerConnectedTimestamp","to":"external:performance.now","kind":"calls","metadata":{"unresolvedName":"performance.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:applyServerConnectedTimestamp","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkHealth","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkHealth","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkHealth","to":"external:this.servers.find","kind":"calls","metadata":{"unresolvedName":"this.servers.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkHealth","to":"external:this.healthMap.set","kind":"calls","metadata":{"unresolvedName":"this.healthMap.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkHealth","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkHealth","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkHealth","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkHealth","to":"external:controller.abort","kind":"calls","metadata":{"unresolvedName":"controller.abort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkHealth","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:makeBasicAuthHeader","kind":"calls","metadata":{"unresolvedName":"makeBasicAuthHeader"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkHealth","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:getUnifiedFetch","kind":"calls","metadata":{"unresolvedName":"getUnifiedFetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkHealth","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/components/Terminal.tsx:f","kind":"calls","metadata":{"unresolvedName":"f"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkHealth","to":"symbol-name:clearTimeout","kind":"calls","metadata":{"unresolvedName":"clearTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkHealth","to":"external:response.json","kind":"calls","metadata":{"unresolvedName":"response.json"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkAllHealth","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkAllHealth","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkAllHealth","to":"external:Promise.all","kind":"calls","metadata":{"unresolvedName":"Promise.all"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkAllHealth","to":"external:this.servers.map","kind":"calls","metadata":{"unresolvedName":"this.servers.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:checkAllHealth","to":"external:this.checkHealth","kind":"calls","metadata":{"unresolvedName":"this.checkHealth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:normalizeServerBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:normalizeServerBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:normalizeServerBackup","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:normalizeServerBackup","to":"external:parsed.servers\n .filter","kind":"calls","metadata":{"unresolvedName":"parsed.servers\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:normalizeServerBackup","to":"external:item.url.replace","kind":"calls","metadata":{"unresolvedName":"item.url.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:normalizeServerBackup","to":"external:normalizedServers.some","kind":"calls","metadata":{"unresolvedName":"normalizedServers.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:exportServerSettingsBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:exportServerSettingsBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:exportServerSettingsBackup","to":"external:serverStore.getServers().map","kind":"calls","metadata":{"unresolvedName":"serverStore.getServers().map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:exportServerSettingsBackup","to":"external:serverStore.getServers","kind":"calls","metadata":{"unresolvedName":"serverStore.getServers"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:exportServerSettingsBackup","to":"external:serverStore.getActiveServerId","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveServerId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:importServerSettingsBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:importServerSettingsBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:importServerSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:normalizeServerBackup","kind":"calls","metadata":{"unresolvedName":"normalizeServerBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:importServerSettingsBackup","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:importServerSettingsBackup","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:importServerSettingsBackup","to":"external:sessionStorage.setItem","kind":"calls","metadata":{"unresolvedName":"sessionStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:importServerSettingsBackup","to":"external:localStorage.removeItem","kind":"calls","metadata":{"unresolvedName":"localStorage.removeItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:importServerSettingsBackup","to":"external:sessionStorage.removeItem","kind":"calls","metadata":{"unresolvedName":"sessionStorage.removeItem"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:makeBasicAuthHeader","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:makeBasicAuthHeader","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:makeBasicAuthHeader","to":"symbol-name:btoa","kind":"calls","metadata":{"unresolvedName":"btoa"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:normalizeServerTimestamp","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:normalizeServerTimestamp","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:normalizeServerTimestamp","to":"external:Number.isFinite","kind":"calls","metadata":{"unresolvedName":"Number.isFinite"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:normalizeServerTimestamp","to":"external:Date.parse","kind":"calls","metadata":{"unresolvedName":"Date.parse"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setAutoStart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setAutoStart","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setAutoStart","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setAutoStart","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setAutoStart","to":"external:this._notify","kind":"calls","metadata":{"unresolvedName":"this._notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setBinaryPath","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setBinaryPath","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setBinaryPath","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setBinaryPath","to":"external:this._notify","kind":"calls","metadata":{"unresolvedName":"this._notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setEnvVars","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setEnvVars","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setEnvVars","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setEnvVars","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setEnvVars","to":"external:this._notify","kind":"calls","metadata":{"unresolvedName":"this._notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setRunning","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setRunning","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setRunning","to":"external:this._notify","kind":"calls","metadata":{"unresolvedName":"this._notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setStartedByUs","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setStartedByUs","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setStartedByUs","to":"external:this._notify","kind":"calls","metadata":{"unresolvedName":"this._notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setStarting","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setStarting","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:setStarting","to":"external:this._notify","kind":"calls","metadata":{"unresolvedName":"this._notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:","to":"external:this._listeners.add","kind":"calls","metadata":{"unresolvedName":"this._listeners.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:","to":"external:this._listeners.delete","kind":"calls","metadata":{"unresolvedName":"this._listeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:","to":"external:this._listeners.delete","kind":"calls","metadata":{"unresolvedName":"this._listeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:_buildSnapshot","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:_buildSnapshot","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:_notify","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:_notify","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:_notify","to":"external:this._buildSnapshot","kind":"calls","metadata":{"unresolvedName":"this._buildSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:_notify","to":"external:this._listeners.forEach","kind":"calls","metadata":{"unresolvedName":"this._listeners.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:_notify","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:exportServiceSettingsBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:exportServiceSettingsBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:exportServiceSettingsBackup","to":"external:serviceStore.envVars.map","kind":"calls","metadata":{"unresolvedName":"serviceStore.envVars.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:importServiceSettingsBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:importServiceSettingsBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:importServiceSettingsBackup","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:importServiceSettingsBackup","to":"external:parsed.envVars\r\n .filter","kind":"calls","metadata":{"unresolvedName":"parsed.envVars\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:importServiceSettingsBackup","to":"external:serviceStore.setAutoStart","kind":"calls","metadata":{"unresolvedName":"serviceStore.setAutoStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:importServiceSettingsBackup","to":"external:serviceStore.setBinaryPath","kind":"calls","metadata":{"unresolvedName":"serviceStore.setBinaryPath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:importServiceSettingsBackup","to":"external:serviceStore.setEnvVars","kind":"calls","metadata":{"unresolvedName":"serviceStore.setEnvVars"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:useServiceStore","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:useServiceStore","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:useServiceStore","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:createDefaultSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:createDefaultSettings","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeEventConfig","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeEventConfig","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:loadSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:loadSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:loadSettings","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:loadSettings","to":"symbol-name:createDefaultSettings","kind":"calls","metadata":{"unresolvedName":"createDefaultSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:loadSettings","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:loadSettings","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:loadSettings","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:loadSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeEventConfig","kind":"calls","metadata":{"unresolvedName":"normalizeEventConfig"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:saveSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:saveSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:saveSettings","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:saveSettings","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:blobToBase64","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:blobToBase64","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:blobToBase64","to":"external:blob.arrayBuffer().then","kind":"calls","metadata":{"unresolvedName":"blob.arrayBuffer().then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:blobToBase64","to":"external:blob.arrayBuffer","kind":"calls","metadata":{"unresolvedName":"blob.arrayBuffer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:blobToBase64","to":"external:bytes.subarray","kind":"calls","metadata":{"unresolvedName":"bytes.subarray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:blobToBase64","to":"external:String.fromCharCode","kind":"calls","metadata":{"unresolvedName":"String.fromCharCode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:blobToBase64","to":"symbol-name:btoa","kind":"calls","metadata":{"unresolvedName":"btoa"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:bytes.subarray","kind":"calls","metadata":{"unresolvedName":"bytes.subarray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:String.fromCharCode","kind":"calls","metadata":{"unresolvedName":"String.fromCharCode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"symbol-name:btoa","kind":"calls","metadata":{"unresolvedName":"btoa"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:base64ToBlob","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:base64ToBlob","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:base64ToBlob","to":"symbol-name:atob","kind":"calls","metadata":{"unresolvedName":"atob"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:base64ToBlob","to":"external:binary.charCodeAt","kind":"calls","metadata":{"unresolvedName":"binary.charCodeAt"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:openIDB","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:openIDB","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:openIDB","to":"external:indexedDB.open","kind":"calls","metadata":{"unresolvedName":"indexedDB.open"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:openIDB","to":"external:db.objectStoreNames.contains","kind":"calls","metadata":{"unresolvedName":"db.objectStoreNames.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:openIDB","to":"external:db.createObjectStore","kind":"calls","metadata":{"unresolvedName":"db.createObjectStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:openIDB","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:openIDB","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:indexedDB.open","kind":"calls","metadata":{"unresolvedName":"indexedDB.open"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:db.objectStoreNames.contains","kind":"calls","metadata":{"unresolvedName":"db.objectStoreNames.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:db.createObjectStore","kind":"calls","metadata":{"unresolvedName":"db.createObjectStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:db.objectStoreNames.contains","kind":"calls","metadata":{"unresolvedName":"db.objectStoreNames.contains"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:db.createObjectStore","kind":"calls","metadata":{"unresolvedName":"db.createObjectStore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbPut","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbPut","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbPut","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:openIDB","kind":"calls","metadata":{"unresolvedName":"openIDB"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbPut","to":"external:db.transaction","kind":"calls","metadata":{"unresolvedName":"db.transaction"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbPut","to":"external:tx.objectStore","kind":"calls","metadata":{"unresolvedName":"tx.objectStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbPut","to":"external:store.put","kind":"calls","metadata":{"unresolvedName":"store.put"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbPut","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbPut","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbPut","to":"external:db.close","kind":"calls","metadata":{"unresolvedName":"db.close"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:db.transaction","kind":"calls","metadata":{"unresolvedName":"db.transaction"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:tx.objectStore","kind":"calls","metadata":{"unresolvedName":"tx.objectStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:store.put","kind":"calls","metadata":{"unresolvedName":"store.put"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:db.close","kind":"calls","metadata":{"unresolvedName":"db.close"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbGet","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbGet","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbGet","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:openIDB","kind":"calls","metadata":{"unresolvedName":"openIDB"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbGet","to":"external:db.transaction","kind":"calls","metadata":{"unresolvedName":"db.transaction"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbGet","to":"external:tx.objectStore","kind":"calls","metadata":{"unresolvedName":"tx.objectStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbGet","to":"external:store.get","kind":"calls","metadata":{"unresolvedName":"store.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbGet","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbGet","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbGet","to":"external:db.close","kind":"calls","metadata":{"unresolvedName":"db.close"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:db.transaction","kind":"calls","metadata":{"unresolvedName":"db.transaction"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:tx.objectStore","kind":"calls","metadata":{"unresolvedName":"tx.objectStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:store.get","kind":"calls","metadata":{"unresolvedName":"store.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:db.close","kind":"calls","metadata":{"unresolvedName":"db.close"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbDelete","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbDelete","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbDelete","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:openIDB","kind":"calls","metadata":{"unresolvedName":"openIDB"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbDelete","to":"external:db.transaction","kind":"calls","metadata":{"unresolvedName":"db.transaction"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbDelete","to":"external:tx.objectStore","kind":"calls","metadata":{"unresolvedName":"tx.objectStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbDelete","to":"external:store.delete","kind":"calls","metadata":{"unresolvedName":"store.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbDelete","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbDelete","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbDelete","to":"external:db.close","kind":"calls","metadata":{"unresolvedName":"db.close"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:db.transaction","kind":"calls","metadata":{"unresolvedName":"db.transaction"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:tx.objectStore","kind":"calls","metadata":{"unresolvedName":"tx.objectStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:store.delete","kind":"calls","metadata":{"unresolvedName":"store.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"symbol-name:resolve","kind":"calls","metadata":{"unresolvedName":"resolve"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"symbol-name:reject","kind":"calls","metadata":{"unresolvedName":"reject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:db.close","kind":"calls","metadata":{"unresolvedName":"db.close"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:isAudioFileValid","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:isAudioFileValid","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:isAudioFileValid","to":"external:file.type.startsWith","kind":"calls","metadata":{"unresolvedName":"file.type.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:isAudioFileValid","to":"external:ALLOWED_AUDIO_TYPES.includes","kind":"calls","metadata":{"unresolvedName":"ALLOWED_AUDIO_TYPES.includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:notify","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:notify","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:notify","to":"external:this.subscribers.forEach","kind":"calls","metadata":{"unresolvedName":"this.subscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:notify","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"symbol-name:cb","kind":"calls","metadata":{"unresolvedName":"cb"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:persist","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:persist","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:persist","to":"symbol-name:saveSettings","kind":"calls","metadata":{"unresolvedName":"saveSettings"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:this.subscribers.add","kind":"calls","metadata":{"unresolvedName":"this.subscribers.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:","to":"external:this.subscribers.delete","kind":"calls","metadata":{"unresolvedName":"this.subscribers.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setEnabled","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setEnabled","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setEnabled","to":"external:this.persist","kind":"calls","metadata":{"unresolvedName":"this.persist"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setEnabled","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setCurrentSessionEnabled","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setCurrentSessionEnabled","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setCurrentSessionEnabled","to":"external:this.persist","kind":"calls","metadata":{"unresolvedName":"this.persist"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setCurrentSessionEnabled","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setVolume","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setVolume","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setVolume","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setVolume","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setVolume","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setVolume","to":"external:this.persist","kind":"calls","metadata":{"unresolvedName":"this.persist"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setVolume","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setEventSound","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setEventSound","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setEventSound","to":"external:this.persist","kind":"calls","metadata":{"unresolvedName":"this.persist"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:setEventSound","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:uploadCustomAudio","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:uploadCustomAudio","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:uploadCustomAudio","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:isAudioFileValid","kind":"calls","metadata":{"unresolvedName":"isAudioFileValid"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:uploadCustomAudio","to":"external:file.arrayBuffer","kind":"calls","metadata":{"unresolvedName":"file.arrayBuffer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:uploadCustomAudio","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbPut","kind":"calls","metadata":{"unresolvedName":"idbPut"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:uploadCustomAudio","to":"external:this.customAudioCache.set","kind":"calls","metadata":{"unresolvedName":"this.customAudioCache.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:uploadCustomAudio","to":"external:this.persist","kind":"calls","metadata":{"unresolvedName":"this.persist"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:uploadCustomAudio","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:uploadCustomAudio","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:removeCustomAudio","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:removeCustomAudio","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:removeCustomAudio","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbDelete","kind":"calls","metadata":{"unresolvedName":"idbDelete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:removeCustomAudio","to":"external:this.customAudioCache.delete","kind":"calls","metadata":{"unresolvedName":"this.customAudioCache.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:removeCustomAudio","to":"external:this.persist","kind":"calls","metadata":{"unresolvedName":"this.persist"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:removeCustomAudio","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:getCustomAudioBlob","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:getCustomAudioBlob","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:getCustomAudioBlob","to":"external:this.customAudioCache.get","kind":"calls","metadata":{"unresolvedName":"this.customAudioCache.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:hasCustomAudio","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:hasCustomAudio","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:hasCustomAudio","to":"external:this.customAudioCache.has","kind":"calls","metadata":{"unresolvedName":"this.customAudioCache.has"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportCustomAudio","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportCustomAudio","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportCustomAudio","to":"external:this.getCustomAudioBlobAsync","kind":"calls","metadata":{"unresolvedName":"this.getCustomAudioBlobAsync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportCustomAudio","to":"external:URL.createObjectURL","kind":"calls","metadata":{"unresolvedName":"URL.createObjectURL"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportCustomAudio","to":"external:document.createElement","kind":"calls","metadata":{"unresolvedName":"document.createElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportCustomAudio","to":"external:document.body.appendChild","kind":"calls","metadata":{"unresolvedName":"document.body.appendChild"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportCustomAudio","to":"external:a.click","kind":"calls","metadata":{"unresolvedName":"a.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportCustomAudio","to":"external:document.body.removeChild","kind":"calls","metadata":{"unresolvedName":"document.body.removeChild"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportCustomAudio","to":"external:URL.revokeObjectURL","kind":"calls","metadata":{"unresolvedName":"URL.revokeObjectURL"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportCustomAudioForBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportCustomAudioForBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportCustomAudioForBackup","to":"external:this.getCustomAudioBlobAsync","kind":"calls","metadata":{"unresolvedName":"this.getCustomAudioBlobAsync"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportCustomAudioForBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:blobToBase64","kind":"calls","metadata":{"unresolvedName":"blobToBase64"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:importCustomAudioFromBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:importCustomAudioFromBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:importCustomAudioFromBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbDelete","kind":"calls","metadata":{"unresolvedName":"idbDelete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:importCustomAudioFromBackup","to":"external:this.customAudioCache.delete","kind":"calls","metadata":{"unresolvedName":"this.customAudioCache.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:importCustomAudioFromBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:base64ToBlob","kind":"calls","metadata":{"unresolvedName":"base64ToBlob"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:importCustomAudioFromBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbPut","kind":"calls","metadata":{"unresolvedName":"idbPut"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:importCustomAudioFromBackup","to":"external:this.customAudioCache.set","kind":"calls","metadata":{"unresolvedName":"this.customAudioCache.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:getCustomAudioBlobAsync","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:getCustomAudioBlobAsync","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:getCustomAudioBlobAsync","to":"external:this.customAudioCache.get","kind":"calls","metadata":{"unresolvedName":"this.customAudioCache.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:getCustomAudioBlobAsync","to":"external:this.customAudioLoading.has","kind":"calls","metadata":{"unresolvedName":"this.customAudioLoading.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:getCustomAudioBlobAsync","to":"external:this.customAudioLoading.add","kind":"calls","metadata":{"unresolvedName":"this.customAudioLoading.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:getCustomAudioBlobAsync","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbGet","kind":"calls","metadata":{"unresolvedName":"idbGet"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:getCustomAudioBlobAsync","to":"external:this.customAudioCache.set","kind":"calls","metadata":{"unresolvedName":"this.customAudioCache.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:getCustomAudioBlobAsync","to":"external:this.customAudioLoading.delete","kind":"calls","metadata":{"unresolvedName":"this.customAudioLoading.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:preloadCustomAudio","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:preloadCustomAudio","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:preloadCustomAudio","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:idbGet","kind":"calls","metadata":{"unresolvedName":"idbGet"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:preloadCustomAudio","to":"external:this.customAudioCache.set","kind":"calls","metadata":{"unresolvedName":"this.customAudioCache.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeSoundSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeSoundSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeSoundSettings","to":"symbol-name:createDefaultSettings","kind":"calls","metadata":{"unresolvedName":"createDefaultSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeSoundSettings","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeSoundSettings","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeSoundSettings","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeSoundSettings","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeEventConfig","kind":"calls","metadata":{"unresolvedName":"normalizeEventConfig"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeBackupCustomAudioMap","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeBackupCustomAudioMap","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportSoundBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportSoundBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportSoundBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeSoundSettings","kind":"calls","metadata":{"unresolvedName":"normalizeSoundSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportSoundBackup","to":"external:soundStore.getSnapshot","kind":"calls","metadata":{"unresolvedName":"soundStore.getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportSoundBackup","to":"external:soundStore.exportCustomAudioForBackup","kind":"calls","metadata":{"unresolvedName":"soundStore.exportCustomAudioForBackup"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:importSoundBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:importSoundBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:importSoundBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeSoundSettings","kind":"calls","metadata":{"unresolvedName":"normalizeSoundSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:importSoundBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:normalizeBackupCustomAudioMap","kind":"calls","metadata":{"unresolvedName":"normalizeBackupCustomAudioMap"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:importSoundBackup","to":"symbol-name:saveSettings","kind":"calls","metadata":{"unresolvedName":"saveSettings"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:importSoundBackup","to":"external:soundStore.importCustomAudioFromBackup","kind":"calls","metadata":{"unresolvedName":"soundStore.importCustomAudioFromBackup"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:useSoundSettings","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:useSoundSettings","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:useSoundSettings","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:computedColorToHex","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:computedColorToHex","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:computedColorToHex","to":"external:document.createElement('canvas').getContext","kind":"calls","metadata":{"unresolvedName":"document.createElement('canvas').getContext"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:computedColorToHex","to":"external:document.createElement","kind":"calls","metadata":{"unresolvedName":"document.createElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:computedColorToHex","to":"external:normalized.startsWith","kind":"calls","metadata":{"unresolvedName":"normalized.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:computedColorToHex","to":"external:normalized.match","kind":"calls","metadata":{"unresolvedName":"normalized.match"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:computedColorToHex","to":"symbol-name:parseInt","kind":"calls","metadata":{"unresolvedName":"parseInt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:computedColorToHex","to":"external:((1 << 24) | (r << 16) | (g << 8) | b).toString(16).slice","kind":"calls","metadata":{"unresolvedName":"((1 << 24) | (r << 16) | (g << 8) | b).toString(16).slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:computedColorToHex","to":"external:((1 << 24) | (r << 16) | (g << 8) | b).toString","kind":"calls","metadata":{"unresolvedName":"((1 << 24) | (r << 16) | (g << 8) | b).toString"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:clampFontScale","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:clampFontScale","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:clampFontScale","to":"external:Number.isFinite","kind":"calls","metadata":{"unresolvedName":"Number.isFinite"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:clampFontScale","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:clampFontScale","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:clampFontScale","to":"external:Math.min","kind":"calls","metadata":{"unresolvedName":"Math.min"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:parseCustomCSSSnippets","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:parseCustomCSSSnippets","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:parseCustomCSSSnippets","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:parseCustomCSSSnippets","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:parseCustomCSSSnippets","to":"external:parsed.filter","kind":"calls","metadata":{"unresolvedName":"parsed.filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:getState","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:getState","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:getPreset","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:getPreset","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:getPreset","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts:getThemePreset","kind":"calls","metadata":{"unresolvedName":"getThemePreset"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:getAvailablePresets","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:getAvailablePresets","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:getAvailablePresets","to":"external:builtinThemes.map","kind":"calls","metadata":{"unresolvedName":"builtinThemes.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:getResolvedMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:getResolvedMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:getResolvedMode","to":"external:window.matchMedia","kind":"calls","metadata":{"unresolvedName":"window.matchMedia"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setPreset","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setPreset","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setPreset","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setPreset","to":"external:this.applyTheme","kind":"calls","metadata":{"unresolvedName":"this.applyTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setPreset","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setColorMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setColorMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setColorMode","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setColorMode","to":"external:this.applyTheme","kind":"calls","metadata":{"unresolvedName":"this.applyTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setColorMode","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCustomCSS","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCustomCSS","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCustomCSS","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCustomCSS","to":"external:this.applyCustomCSS","kind":"calls","metadata":{"unresolvedName":"this.applyCustomCSS"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCustomCSS","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:saveCustomCSSSnippet","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:saveCustomCSSSnippet","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:saveCustomCSSSnippet","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:saveCustomCSSSnippet","to":"external:Math.random().toString(36).slice","kind":"calls","metadata":{"unresolvedName":"Math.random().toString(36).slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:saveCustomCSSSnippet","to":"external:Math.random().toString","kind":"calls","metadata":{"unresolvedName":"Math.random().toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:saveCustomCSSSnippet","to":"external:Math.random","kind":"calls","metadata":{"unresolvedName":"Math.random"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:saveCustomCSSSnippet","to":"external:this.persistCustomCSSSnippets","kind":"calls","metadata":{"unresolvedName":"this.persistCustomCSSSnippets"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:saveCustomCSSSnippet","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:saveCustomCSSSnippet","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:updateCustomCSSSnippet","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:updateCustomCSSSnippet","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:updateCustomCSSSnippet","to":"external:this.state.customCSSSnippets.map","kind":"calls","metadata":{"unresolvedName":"this.state.customCSSSnippets.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:updateCustomCSSSnippet","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:updateCustomCSSSnippet","to":"external:this.persistCustomCSSSnippets","kind":"calls","metadata":{"unresolvedName":"this.persistCustomCSSSnippets"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:updateCustomCSSSnippet","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:deleteCustomCSSSnippet","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:deleteCustomCSSSnippet","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:deleteCustomCSSSnippet","to":"external:this.state.customCSSSnippets.filter","kind":"calls","metadata":{"unresolvedName":"this.state.customCSSSnippets.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:deleteCustomCSSSnippet","to":"external:this.persistCustomCSSSnippets","kind":"calls","metadata":{"unresolvedName":"this.persistCustomCSSSnippets"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:deleteCustomCSSSnippet","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:deleteCustomCSSSnippet","to":"external:localStorage.removeItem","kind":"calls","metadata":{"unresolvedName":"localStorage.removeItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:deleteCustomCSSSnippet","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyCustomCSSSnippet","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyCustomCSSSnippet","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyCustomCSSSnippet","to":"external:this.state.customCSSSnippets.find","kind":"calls","metadata":{"unresolvedName":"this.state.customCSSSnippets.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyCustomCSSSnippet","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyCustomCSSSnippet","to":"external:this.applyCustomCSS","kind":"calls","metadata":{"unresolvedName":"this.applyCustomCSS"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyCustomCSSSnippet","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:clearActiveCustomCSSSnippet","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:clearActiveCustomCSSSnippet","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:clearActiveCustomCSSSnippet","to":"external:localStorage.removeItem","kind":"calls","metadata":{"unresolvedName":"localStorage.removeItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:clearActiveCustomCSSSnippet","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCollapseUserMessages","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCollapseUserMessages","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCollapseUserMessages","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCollapseUserMessages","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCollapseUserMessages","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setStepFinishDisplay","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setStepFinishDisplay","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setStepFinishDisplay","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setStepFinishDisplay","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setStepFinishDisplay","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCompletedAtFormat","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCompletedAtFormat","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCompletedAtFormat","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCompletedAtFormat","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setReasoningDisplayMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setReasoningDisplayMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setReasoningDisplayMode","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setReasoningDisplayMode","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setWideMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setWideMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setWideMode","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setWideMode","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setWideMode","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:toggleWideMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:toggleWideMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:toggleWideMode","to":"external:this.setWideMode","kind":"calls","metadata":{"unresolvedName":"this.setWideMode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setDiffStyle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setDiffStyle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setDiffStyle","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setDiffStyle","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setDescriptiveToolSteps","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setDescriptiveToolSteps","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setDescriptiveToolSteps","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setDescriptiveToolSteps","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setDescriptiveToolSteps","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setInlineToolRequests","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setInlineToolRequests","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setInlineToolRequests","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setInlineToolRequests","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setInlineToolRequests","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCodeWordWrap","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCodeWordWrap","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCodeWordWrap","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCodeWordWrap","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCodeWordWrap","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setUIFontScale","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setUIFontScale","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setUIFontScale","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:clampFontScale","kind":"calls","metadata":{"unresolvedName":"clampFontScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setUIFontScale","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setUIFontScale","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setUIFontScale","to":"external:this.applyFontScale","kind":"calls","metadata":{"unresolvedName":"this.applyFontScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setUIFontScale","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCodeFontScale","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCodeFontScale","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCodeFontScale","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:clampFontScale","kind":"calls","metadata":{"unresolvedName":"clampFontScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCodeFontScale","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCodeFontScale","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCodeFontScale","to":"external:this.applyFontScale","kind":"calls","metadata":{"unresolvedName":"this.applyFontScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCodeFontScale","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setToolCardStyle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setToolCardStyle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setToolCardStyle","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setToolCardStyle","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setImmersiveMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setImmersiveMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setImmersiveMode","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setImmersiveMode","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setImmersiveMode","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCompactInlinePermission","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCompactInlinePermission","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCompactInlinePermission","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCompactInlinePermission","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setCompactInlinePermission","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setGlassEffect","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setGlassEffect","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setGlassEffect","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setGlassEffect","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setGlassEffect","to":"external:this.applyGlassClass","kind":"calls","metadata":{"unresolvedName":"this.applyGlassClass"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setGlassEffect","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setQueueFollowupMessages","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setQueueFollowupMessages","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setQueueFollowupMessages","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setQueueFollowupMessages","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setQueueFollowupMessages","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setManualTerminalTitles","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setManualTerminalTitles","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setManualTerminalTitles","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setManualTerminalTitles","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:setManualTerminalTitles","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:init","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:init","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:init","to":"external:this.applyTheme","kind":"calls","metadata":{"unresolvedName":"this.applyTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:init","to":"external:this.applyFontScale","kind":"calls","metadata":{"unresolvedName":"this.applyFontScale"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:init","to":"external:this.applyGlassClass","kind":"calls","metadata":{"unresolvedName":"this.applyGlassClass"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:init","to":"external:window.matchMedia","kind":"calls","metadata":{"unresolvedName":"window.matchMedia"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:init","to":"external:mediaQuery.addEventListener","kind":"calls","metadata":{"unresolvedName":"mediaQuery.addEventListener"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:init","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:","to":"external:this.applyTheme","kind":"calls","metadata":{"unresolvedName":"this.applyTheme"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:","to":"external:this.emit","kind":"calls","metadata":{"unresolvedName":"this.emit"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyTheme","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyTheme","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyTheme","to":"external:this.getResolvedMode","kind":"calls","metadata":{"unresolvedName":"this.getResolvedMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyTheme","to":"external:root.removeAttribute","kind":"calls","metadata":{"unresolvedName":"root.removeAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyTheme","to":"external:root.setAttribute","kind":"calls","metadata":{"unresolvedName":"root.setAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyTheme","to":"external:this.getPreset","kind":"calls","metadata":{"unresolvedName":"this.getPreset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyTheme","to":"external:this.injectThemeStyle","kind":"calls","metadata":{"unresolvedName":"this.injectThemeStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyTheme","to":"external:this.applyCustomCSS","kind":"calls","metadata":{"unresolvedName":"this.applyCustomCSS"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyTheme","to":"symbol-name:requestAnimationFrame","kind":"calls","metadata":{"unresolvedName":"requestAnimationFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyTheme","to":"external:getComputedStyle(root).getPropertyValue('--color-bg-100').trim","kind":"calls","metadata":{"unresolvedName":"getComputedStyle(root).getPropertyValue('--color-bg-100').trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyTheme","to":"external:getComputedStyle(root).getPropertyValue","kind":"calls","metadata":{"unresolvedName":"getComputedStyle(root).getPropertyValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyTheme","to":"symbol-name:getComputedStyle","kind":"calls","metadata":{"unresolvedName":"getComputedStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyTheme","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:computedColorToHex","kind":"calls","metadata":{"unresolvedName":"computedColorToHex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyTheme","to":"external:document.querySelector","kind":"calls","metadata":{"unresolvedName":"document.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyTheme","to":"external:meta.setAttribute","kind":"calls","metadata":{"unresolvedName":"meta.setAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyTheme","to":"external:androidBridge.setSystemBars","kind":"calls","metadata":{"unresolvedName":"androidBridge.setSystemBars"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:","to":"external:getComputedStyle(root).getPropertyValue('--color-bg-100').trim","kind":"calls","metadata":{"unresolvedName":"getComputedStyle(root).getPropertyValue('--color-bg-100').trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:","to":"external:getComputedStyle(root).getPropertyValue","kind":"calls","metadata":{"unresolvedName":"getComputedStyle(root).getPropertyValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:","to":"symbol-name:getComputedStyle","kind":"calls","metadata":{"unresolvedName":"getComputedStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:computedColorToHex","kind":"calls","metadata":{"unresolvedName":"computedColorToHex"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:","to":"external:document.querySelector","kind":"calls","metadata":{"unresolvedName":"document.querySelector"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:","to":"external:meta.setAttribute","kind":"calls","metadata":{"unresolvedName":"meta.setAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:","to":"external:androidBridge.setSystemBars","kind":"calls","metadata":{"unresolvedName":"androidBridge.setSystemBars"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:injectThemeStyle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:injectThemeStyle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:injectThemeStyle","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:injectThemeStyle","to":"external:document.createElement","kind":"calls","metadata":{"unresolvedName":"document.createElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:injectThemeStyle","to":"external:document.head.appendChild","kind":"calls","metadata":{"unresolvedName":"document.head.appendChild"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:injectThemeStyle","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts:themeColorsToCSSVars","kind":"calls","metadata":{"unresolvedName":"themeColorsToCSSVars"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyFontScale","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyFontScale","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyFontScale","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyFontScale","to":"external:el.remove","kind":"calls","metadata":{"unresolvedName":"el.remove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyFontScale","to":"external:document.createElement","kind":"calls","metadata":{"unresolvedName":"document.createElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyFontScale","to":"external:document.head.appendChild","kind":"calls","metadata":{"unresolvedName":"document.head.appendChild"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyFontScale","to":"external:vars.push","kind":"calls","metadata":{"unresolvedName":"vars.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyFontScale","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyFontScale","to":"external:vars.join","kind":"calls","metadata":{"unresolvedName":"vars.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyCustomCSS","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyCustomCSS","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyCustomCSS","to":"external:this.state.customCSS.trim","kind":"calls","metadata":{"unresolvedName":"this.state.customCSS.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyCustomCSS","to":"external:document.getElementById","kind":"calls","metadata":{"unresolvedName":"document.getElementById"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyCustomCSS","to":"external:el.remove","kind":"calls","metadata":{"unresolvedName":"el.remove"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyCustomCSS","to":"external:document.createElement","kind":"calls","metadata":{"unresolvedName":"document.createElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyCustomCSS","to":"external:document.head.appendChild","kind":"calls","metadata":{"unresolvedName":"document.head.appendChild"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyGlassClass","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyGlassClass","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyGlassClass","to":"external:root.setAttribute","kind":"calls","metadata":{"unresolvedName":"root.setAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:applyGlassClass","to":"external:root.removeAttribute","kind":"calls","metadata":{"unresolvedName":"root.removeAttribute"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:persistCustomCSSSnippets","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:persistCustomCSSSnippets","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:persistCustomCSSSnippets","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:persistCustomCSSSnippets","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:","to":"external:this.listeners.add","kind":"calls","metadata":{"unresolvedName":"this.listeners.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:","to":"external:this.listeners.delete","kind":"calls","metadata":{"unresolvedName":"this.listeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:emit","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:emit","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:emit","to":"external:this.listeners.forEach","kind":"calls","metadata":{"unresolvedName":"this.listeners.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:emit","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:normalizeThemeBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:normalizeThemeBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:normalizeThemeBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:parseCustomCSSSnippets","kind":"calls","metadata":{"unresolvedName":"parseCustomCSSSnippets"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:normalizeThemeBackup","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:normalizeThemeBackup","to":"external:Array.isArray","kind":"calls","metadata":{"unresolvedName":"Array.isArray"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:normalizeThemeBackup","to":"external:customCSSSnippets.some","kind":"calls","metadata":{"unresolvedName":"customCSSSnippets.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:normalizeThemeBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts:getThemePreset","kind":"calls","metadata":{"unresolvedName":"getThemePreset"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:normalizeThemeBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:clampFontScale","kind":"calls","metadata":{"unresolvedName":"clampFontScale"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:exportThemeBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:exportThemeBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:exportThemeBackup","to":"external:themeStore.getState","kind":"calls","metadata":{"unresolvedName":"themeStore.getState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:exportThemeBackup","to":"external:state.customCSSSnippets.map","kind":"calls","metadata":{"unresolvedName":"state.customCSSSnippets.map"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:importThemeBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:importThemeBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:importThemeBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:normalizeThemeBackup","kind":"calls","metadata":{"unresolvedName":"normalizeThemeBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:importThemeBackup","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:importThemeBackup","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:importThemeBackup","to":"external:localStorage.removeItem","kind":"calls","metadata":{"unresolvedName":"localStorage.removeItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:importThemeBackup","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/event.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:getTodos","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:getTodos","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:getTodos","to":"external:this.sessions.get","kind":"calls","metadata":{"unresolvedName":"this.sessions.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:setTodos","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:setTodos","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:setTodos","to":"external:this.sessions.set","kind":"calls","metadata":{"unresolvedName":"this.sessions.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:setTodos","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:setTodos","to":"external:this.statsCache.set","kind":"calls","metadata":{"unresolvedName":"this.statsCache.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:setTodos","to":"external:todos.filter","kind":"calls","metadata":{"unresolvedName":"todos.filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:setTodos","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:clearTodos","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:clearTodos","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:clearTodos","to":"external:this.sessions.has","kind":"calls","metadata":{"unresolvedName":"this.sessions.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:clearTodos","to":"external:this.sessions.delete","kind":"calls","metadata":{"unresolvedName":"this.sessions.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:clearTodos","to":"external:this.statsCache.delete","kind":"calls","metadata":{"unresolvedName":"this.statsCache.delete"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:clearTodos","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:clearAll","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:clearAll","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:clearAll","to":"external:this.sessions.clear","kind":"calls","metadata":{"unresolvedName":"this.sessions.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:clearAll","to":"external:this.statsCache.clear","kind":"calls","metadata":{"unresolvedName":"this.statsCache.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:clearAll","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:getStats","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:getStats","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:getStats","to":"external:this.statsCache.get","kind":"calls","metadata":{"unresolvedName":"this.statsCache.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:getCurrentTask","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:getCurrentTask","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:getCurrentTask","to":"external:this.getTodos","kind":"calls","metadata":{"unresolvedName":"this.getTodos"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:getCurrentTask","to":"external:todos.find","kind":"calls","metadata":{"unresolvedName":"todos.find"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:getVersion","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:getVersion","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:subscribe","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:subscribe","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:subscribe","to":"external:this.subscribers.add","kind":"calls","metadata":{"unresolvedName":"this.subscribers.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:subscribe","to":"external:this.subscribers.delete","kind":"calls","metadata":{"unresolvedName":"this.subscribers.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:notify","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:notify","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:notify","to":"external:this.subscribers.forEach","kind":"calls","metadata":{"unresolvedName":"this.subscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:notify","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useStoreSubscription","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useStoreSubscription","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useStoreSubscription","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useStoreSubscription","to":"symbol-name:useCallback","kind":"calls","metadata":{"unresolvedName":"useCallback"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useStoreSubscription","to":"external:todoStore.subscribe","kind":"calls","metadata":{"unresolvedName":"todoStore.subscribe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useStoreSubscription","to":"external:todoStore.getVersion","kind":"calls","metadata":{"unresolvedName":"todoStore.getVersion"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useTodos","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useTodos","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useTodos","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useStoreSubscription","kind":"calls","metadata":{"unresolvedName":"useStoreSubscription"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useTodos","to":"external:todoStore.getTodos","kind":"calls","metadata":{"unresolvedName":"todoStore.getTodos"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useTodoStats","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useTodoStats","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useTodoStats","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useStoreSubscription","kind":"calls","metadata":{"unresolvedName":"useStoreSubscription"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useTodoStats","to":"external:todoStore.getStats","kind":"calls","metadata":{"unresolvedName":"todoStore.getStats"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useCurrentTask","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useCurrentTask","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useCurrentTask","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useStoreSubscription","kind":"calls","metadata":{"unresolvedName":"useStoreSubscription"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/todoStore.ts:useCurrentTask","to":"external:todoStore.getCurrentTask","kind":"calls","metadata":{"unresolvedName":"todoStore.getCurrentTask"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(compareVersions('v0.5.2', '0.5.1')).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(compareVersions('v0.5.2', '0.5.1')).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:compareVersions","kind":"calls","metadata":{"unresolvedName":"compareVersions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(compareVersions('0.5.1', 'v0.5.1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(compareVersions('0.5.1', 'v0.5.1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(compareVersions('0.5', '0.5.1')).toBeLessThan","kind":"calls","metadata":{"unresolvedName":"expect(compareVersions('0.5', '0.5.1')).toBeLessThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(hasUpdateAvailable(baseState)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(hasUpdateAvailable(baseState)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:hasUpdateAvailable","kind":"calls","metadata":{"unresolvedName":"hasUpdateAvailable"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(shouldShowUpdateToast(baseState)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(shouldShowUpdateToast(baseState)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:shouldShowUpdateToast","kind":"calls","metadata":{"unresolvedName":"shouldShowUpdateToast"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(shouldShowUpdateToast({ ...baseState, dismissedVersion: '0.5.2' })).toBe","kind":"calls","metadata":{"unresolvedName":"expect(shouldShowUpdateToast({ ...baseState, dismissedVersion: '0.5.2' })).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(compareVersions('v0.5.2', '0.5.1')).toBeGreaterThan","kind":"calls","metadata":{"unresolvedName":"expect(compareVersions('v0.5.2', '0.5.1')).toBeGreaterThan"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:compareVersions","kind":"calls","metadata":{"unresolvedName":"compareVersions"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(compareVersions('0.5.1', 'v0.5.1')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(compareVersions('0.5.1', 'v0.5.1')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(compareVersions('0.5', '0.5.1')).toBeLessThan","kind":"calls","metadata":{"unresolvedName":"expect(compareVersions('0.5', '0.5.1')).toBeLessThan"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(hasUpdateAvailable(baseState)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(hasUpdateAvailable(baseState)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:hasUpdateAvailable","kind":"calls","metadata":{"unresolvedName":"hasUpdateAvailable"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(shouldShowUpdateToast(baseState)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(shouldShowUpdateToast(baseState)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:shouldShowUpdateToast","kind":"calls","metadata":{"unresolvedName":"shouldShowUpdateToast"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(shouldShowUpdateToast({ ...baseState, dismissedVersion: '0.5.2' })).toBe","kind":"calls","metadata":{"unresolvedName":"expect(shouldShowUpdateToast({ ...baseState, dismissedVersion: '0.5.2' })).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:localStorage.clear","kind":"calls","metadata":{"unresolvedName":"localStorage.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:vi.stubGlobal","kind":"calls","metadata":{"unresolvedName":"vi.stubGlobal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:vi.fn().mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.fn().mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:store.checkForUpdates","kind":"calls","metadata":{"unresolvedName":"store.checkForUpdates"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(store.getSnapshot().latestRelease?.version).toBe","kind":"calls","metadata":{"unresolvedName":"expect(store.getSnapshot().latestRelease?.version).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:store.getSnapshot","kind":"calls","metadata":{"unresolvedName":"store.getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(hasUpdateAvailable(store.getSnapshot())).toBe","kind":"calls","metadata":{"unresolvedName":"expect(hasUpdateAvailable(store.getSnapshot())).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:hasUpdateAvailable","kind":"calls","metadata":{"unresolvedName":"hasUpdateAvailable"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:store.dismissCurrentVersion","kind":"calls","metadata":{"unresolvedName":"store.dismissCurrentVersion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(store.getSnapshot().dismissedVersion).toBe","kind":"calls","metadata":{"unresolvedName":"expect(store.getSnapshot().dismissedVersion).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(shouldShowUpdateToast(store.getSnapshot())).toBe","kind":"calls","metadata":{"unresolvedName":"expect(shouldShowUpdateToast(store.getSnapshot())).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:shouldShowUpdateToast","kind":"calls","metadata":{"unresolvedName":"shouldShowUpdateToast"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(localStorage.getItem('piagentui:update-check')).toContain","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('piagentui:update-check')).toContain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(localStorage.getItem('opencode:update-check')).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('opencode:update-check')).toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(RELEASES_API_URL).toBe","kind":"calls","metadata":{"unresolvedName":"expect(RELEASES_API_URL).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(RELEASES_PAGE_URL).toBe","kind":"calls","metadata":{"unresolvedName":"expect(RELEASES_PAGE_URL).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:localStorage.clear","kind":"calls","metadata":{"unresolvedName":"localStorage.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:localStorage.clear","kind":"calls","metadata":{"unresolvedName":"localStorage.clear"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:vi.stubGlobal","kind":"calls","metadata":{"unresolvedName":"vi.stubGlobal"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:vi.fn().mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.fn().mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:store.checkForUpdates","kind":"calls","metadata":{"unresolvedName":"store.checkForUpdates"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(store.getSnapshot().latestRelease?.version).toBe","kind":"calls","metadata":{"unresolvedName":"expect(store.getSnapshot().latestRelease?.version).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:store.getSnapshot","kind":"calls","metadata":{"unresolvedName":"store.getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(hasUpdateAvailable(store.getSnapshot())).toBe","kind":"calls","metadata":{"unresolvedName":"expect(hasUpdateAvailable(store.getSnapshot())).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:hasUpdateAvailable","kind":"calls","metadata":{"unresolvedName":"hasUpdateAvailable"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:store.dismissCurrentVersion","kind":"calls","metadata":{"unresolvedName":"store.dismissCurrentVersion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(store.getSnapshot().dismissedVersion).toBe","kind":"calls","metadata":{"unresolvedName":"expect(store.getSnapshot().dismissedVersion).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(shouldShowUpdateToast(store.getSnapshot())).toBe","kind":"calls","metadata":{"unresolvedName":"expect(shouldShowUpdateToast(store.getSnapshot())).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:shouldShowUpdateToast","kind":"calls","metadata":{"unresolvedName":"shouldShowUpdateToast"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(localStorage.getItem('piagentui:update-check')).toContain","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('piagentui:update-check')).toContain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(localStorage.getItem('opencode:update-check')).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('opencode:update-check')).toBeNull"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(store.getSnapshot().latestRelease?.version).toBe","kind":"calls","metadata":{"unresolvedName":"expect(store.getSnapshot().latestRelease?.version).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:store.getSnapshot","kind":"calls","metadata":{"unresolvedName":"store.getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:store.dismissCurrentVersion","kind":"calls","metadata":{"unresolvedName":"store.dismissCurrentVersion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(localStorage.getItem('piagentui:update-check')).toContain","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('piagentui:update-check')).toContain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(localStorage.getItem('opencode:update-check')).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('opencode:update-check')).toBeNull"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(RELEASES_API_URL).toBe","kind":"calls","metadata":{"unresolvedName":"expect(RELEASES_API_URL).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.test.ts:","to":"external:expect(RELEASES_PAGE_URL).toBe","kind":"calls","metadata":{"unresolvedName":"expect(RELEASES_PAGE_URL).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"external:react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:isPlainObject","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:isPlainObject","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:normalizeVersion","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:normalizeVersion","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:normalizeVersion","to":"external:version.trim().replace(/^v/i, '').replace","kind":"calls","metadata":{"unresolvedName":"version.trim().replace(/^v/i, '').replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:normalizeVersion","to":"external:version.trim().replace","kind":"calls","metadata":{"unresolvedName":"version.trim().replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:normalizeVersion","to":"external:version.trim","kind":"calls","metadata":{"unresolvedName":"version.trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:compareVersions","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:compareVersions","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:compareVersions","to":"external:normalizeVersion(a)\r\n .split('.')\r\n .map","kind":"calls","metadata":{"unresolvedName":"normalizeVersion(a)\r\n .split('.')\r\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:compareVersions","to":"external:normalizeVersion(a)\r\n .split","kind":"calls","metadata":{"unresolvedName":"normalizeVersion(a)\r\n .split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:compareVersions","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:normalizeVersion","kind":"calls","metadata":{"unresolvedName":"normalizeVersion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:compareVersions","to":"external:Number.parseInt","kind":"calls","metadata":{"unresolvedName":"Number.parseInt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:compareVersions","to":"external:normalizeVersion(b)\r\n .split('.')\r\n .map","kind":"calls","metadata":{"unresolvedName":"normalizeVersion(b)\r\n .split('.')\r\n .map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:compareVersions","to":"external:normalizeVersion(b)\r\n .split","kind":"calls","metadata":{"unresolvedName":"normalizeVersion(b)\r\n .split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:compareVersions","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:hasUpdateAvailable","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:hasUpdateAvailable","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:hasUpdateAvailable","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:compareVersions","kind":"calls","metadata":{"unresolvedName":"compareVersions"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:shouldShowUpdateToast","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:shouldShowUpdateToast","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:shouldShowUpdateToast","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:hasUpdateAvailable","kind":"calls","metadata":{"unresolvedName":"hasUpdateAvailable"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:loadPersistedState","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:loadPersistedState","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:loadPersistedState","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:loadPersistedState","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:persistState","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:persistState","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:persistState","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:persistState","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:persistState","to":"external:localStorage.removeItem","kind":"calls","metadata":{"unresolvedName":"localStorage.removeItem"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:parseRelease","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:parseRelease","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:parseRelease","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:isPlainObject","kind":"calls","metadata":{"unresolvedName":"isPlainObject"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:parseRelease","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:normalizeVersion","kind":"calls","metadata":{"unresolvedName":"normalizeVersion"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:getDefaultCurrentVersion","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:getDefaultCurrentVersion","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:","to":"external:this.subscribers.add","kind":"calls","metadata":{"unresolvedName":"this.subscribers.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:","to":"external:this.subscribers.delete","kind":"calls","metadata":{"unresolvedName":"this.subscribers.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:notify","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:notify","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:notify","to":"external:this.subscribers.forEach","kind":"calls","metadata":{"unresolvedName":"this.subscribers.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:notify","to":"symbol-name:callback","kind":"calls","metadata":{"unresolvedName":"callback"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:setState","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:setState","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:setState","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:persistState","kind":"calls","metadata":{"unresolvedName":"persistState"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:setState","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:applyRelease","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:applyRelease","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:applyRelease","to":"external:this.setState","kind":"calls","metadata":{"unresolvedName":"this.setState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:checkForUpdates","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:checkForUpdates","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:checkForUpdates","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:checkForUpdates","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:checkForUpdates","to":"symbol-name:fetch","kind":"calls","metadata":{"unresolvedName":"fetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:checkForUpdates","to":"external:response.json","kind":"calls","metadata":{"unresolvedName":"response.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:checkForUpdates","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:parseRelease","kind":"calls","metadata":{"unresolvedName":"parseRelease"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:checkForUpdates","to":"external:this.applyRelease","kind":"calls","metadata":{"unresolvedName":"this.applyRelease"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:","to":"symbol-name:fetch","kind":"calls","metadata":{"unresolvedName":"fetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:","to":"external:response.json","kind":"calls","metadata":{"unresolvedName":"response.json"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:parseRelease","kind":"calls","metadata":{"unresolvedName":"parseRelease"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:","to":"external:this.applyRelease","kind":"calls","metadata":{"unresolvedName":"this.applyRelease"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:hideToastForCurrentVersion","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:hideToastForCurrentVersion","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:hideToastForCurrentVersion","to":"external:this.notify","kind":"calls","metadata":{"unresolvedName":"this.notify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:dismissCurrentVersion","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:dismissCurrentVersion","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:dismissCurrentVersion","to":"external:this.setState","kind":"calls","metadata":{"unresolvedName":"this.setState"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:exportUpdateSettingsBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:exportUpdateSettingsBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:exportUpdateSettingsBackup","to":"external:updateStore.getSnapshot","kind":"calls","metadata":{"unresolvedName":"updateStore.getSnapshot"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:importUpdateSettingsBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:importUpdateSettingsBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:importUpdateSettingsBackup","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:importUpdateSettingsBackup","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:importUpdateSettingsBackup","to":"external:localStorage.removeItem","kind":"calls","metadata":{"unresolvedName":"localStorage.removeItem"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:useUpdateStore","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:useUpdateStore","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:useUpdateStore","to":"symbol-name:useSyncExternalStore","kind":"calls","metadata":{"unresolvedName":"useSyncExternalStore"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"external:@testing-library/jest-dom/vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/i18n.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:setItem","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:setItem","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:setItem","to":"external:storage.set","kind":"calls","metadata":{"unresolvedName":"storage.set"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:removeItem","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:removeItem","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:removeItem","to":"external:storage.delete","kind":"calls","metadata":{"unresolvedName":"storage.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:clear","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:clear","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:observe","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:observe","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:unobserve","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:unobserve","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:disconnect","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:disconnect","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:[Symbol.iterator]","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:[Symbol.iterator]","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:addListener","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:addListener","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:removeListener","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:removeListener","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:addEventListener","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:addEventListener","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:removeEventListener","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/test/setup.ts:removeEventListener","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts:getThemePreset","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts:getThemePreset","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts:getThemePreset","to":"external:builtinThemes.find","kind":"calls","metadata":{"unresolvedName":"builtinThemes.find"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts:themeColorsToCSSVars","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts:themeColorsToCSSVars","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts:themeColorsToCSSVars","to":"external:lines.push","kind":"calls","metadata":{"unresolvedName":"lines.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/themes/index.ts:themeColorsToCSSVars","to":"external:lines.join","kind":"calls","metadata":{"unresolvedName":"lines.join"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/event.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/session.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/event.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/event.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/permission.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/event.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/project.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/message.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/compat.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/model.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/compat.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/project.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/compat.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/session.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api/compat.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/chat.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/ui.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:isUserMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:isUserMessage","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:isAssistantMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:isAssistantMessage","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:hasVisibleContent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:hasVisibleContent","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:hasVisibleContent","to":"external:message.parts.some","kind":"calls","metadata":{"unresolvedName":"message.parts.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:hasVisibleContent","to":"external:part.text.trim","kind":"calls","metadata":{"unresolvedName":"part.text.trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:","to":"external:part.text.trim","kind":"calls","metadata":{"unresolvedName":"part.text.trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:getMessageText","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:getMessageText","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/index.ts:getMessageText","to":"external:message.parts\r\n .filter","kind":"calls","metadata":{"unresolvedName":"message.parts\r\n .filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isUserMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isUserMessage","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isAssistantMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isAssistantMessage","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isToolPart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isToolPart","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleTextPart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleTextPart","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleTextPart","to":"external:part.text.trim","kind":"calls","metadata":{"unresolvedName":"part.text.trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleReasoningPart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleReasoningPart","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleReasoningPart","to":"external:part.text.trim","kind":"calls","metadata":{"unresolvedName":"part.text.trim"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isRenderablePart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isRenderablePart","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isRenderablePart","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleTextPart","kind":"calls","metadata":{"unresolvedName":"isVisibleTextPart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isRenderablePart","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isVisibleReasoningPart","kind":"calls","metadata":{"unresolvedName":"isVisibleReasoningPart"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isAbortedMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:isAbortedMessage","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:hasRenderableParts","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:hasRenderableParts","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:hasRenderableParts","to":"external:message.parts.some","kind":"calls","metadata":{"unresolvedName":"message.parts.some"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:hasVisibleContent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:hasVisibleContent","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:hasVisibleContent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:hasRenderableParts","kind":"calls","metadata":{"unresolvedName":"hasRenderableParts"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:getMessageText","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:getMessageText","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts:getMessageText","to":"external:message.parts\r\n .filter","kind":"calls","metadata":{"unresolvedName":"message.parts\r\n .filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/ui.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/ui.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/features/attachment/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:collectActiveDirectories","kind":"calls","metadata":{"unresolvedName":"collectActiveDirectories"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:collectActiveDirectories","kind":"calls","metadata":{"unresolvedName":"collectActiveDirectories"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:collectActiveDirectories","kind":"calls","metadata":{"unresolvedName":"collectActiveDirectories"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:collectActiveDirectories","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:collectActiveDirectories","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:collectActiveDirectories","to":"external:directories.some","kind":"calls","metadata":{"unresolvedName":"directories.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:collectActiveDirectories","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:collectActiveDirectories","to":"external:directories.push","kind":"calls","metadata":{"unresolvedName":"directories.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:collectActiveDirectories","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:pushDirectory","kind":"calls","metadata":{"unresolvedName":"pushDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:collectActiveDirectories","to":"external:paneDirectories.forEach","kind":"calls","metadata":{"unresolvedName":"paneDirectories.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:collectActiveDirectories","to":"external:projectDirectories.forEach","kind":"calls","metadata":{"unresolvedName":"projectDirectories.forEach"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:pushDirectory","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:pushDirectory","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:pushDirectory","to":"external:directories.some","kind":"calls","metadata":{"unresolvedName":"directories.some"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:pushDirectory","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"calls","metadata":{"unresolvedName":"isSameDirectory"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/activeScope.ts:pushDirectory","to":"external:directories.push","kind":"calls","metadata":{"unresolvedName":"directories.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:stripAnsi","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:stripAnsi","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:stripAnsi","to":"external:text.replace","kind":"calls","metadata":{"unresolvedName":"text.replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:parseAnsi","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:parseAnsi","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:parseAnsi","to":"external:ANSI_RE.exec","kind":"calls","metadata":{"unresolvedName":"ANSI_RE.exec"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:parseAnsi","to":"external:text.slice","kind":"calls","metadata":{"unresolvedName":"text.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:parseAnsi","to":"external:segments.push","kind":"calls","metadata":{"unresolvedName":"segments.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:parseAnsi","to":"external:match[0].slice","kind":"calls","metadata":{"unresolvedName":"match[0].slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:parseAnsi","to":"external:params.split(';').map","kind":"calls","metadata":{"unresolvedName":"params.split(';').map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:parseAnsi","to":"external:params.split","kind":"calls","metadata":{"unresolvedName":"params.split"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:hasAnsi","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:hasAnsi","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ansiUtils.ts:hasAnsi","to":"external:ANSI_RE.test","kind":"calls","metadata":{"unresolvedName":"ANSI_RE.test"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:restoreProperty","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:restoreProperty","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:restoreProperty","to":"external:Object.defineProperty","kind":"calls","metadata":{"unresolvedName":"Object.defineProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:restoreProperty","to":"external:Reflect.deleteProperty","kind":"calls","metadata":{"unresolvedName":"Reflect.deleteProperty"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:restoreProperty","kind":"calls","metadata":{"unresolvedName":"restoreProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:vi.fn().mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.fn().mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:vi.fn().mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.fn().mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:Object.defineProperty","kind":"calls","metadata":{"unresolvedName":"Object.defineProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:expect(writeText).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(writeText).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:expect(execCommand).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(execCommand).not.toHaveBeenCalled"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:vi.fn().mockRejectedValue","kind":"calls","metadata":{"unresolvedName":"vi.fn().mockRejectedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:expect(execCommand).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(execCommand).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:restoreProperty","kind":"calls","metadata":{"unresolvedName":"restoreProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:vi.restoreAllMocks","kind":"calls","metadata":{"unresolvedName":"vi.restoreAllMocks"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:vi.fn().mockResolvedValue","kind":"calls","metadata":{"unresolvedName":"vi.fn().mockResolvedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:vi.fn().mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.fn().mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:Object.defineProperty","kind":"calls","metadata":{"unresolvedName":"Object.defineProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:expect(writeText).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(writeText).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:expect(execCommand).not.toHaveBeenCalled","kind":"calls","metadata":{"unresolvedName":"expect(execCommand).not.toHaveBeenCalled"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:vi.fn().mockRejectedValue","kind":"calls","metadata":{"unresolvedName":"vi.fn().mockRejectedValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:vi.fn","kind":"calls","metadata":{"unresolvedName":"vi.fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:vi.fn().mockReturnValue","kind":"calls","metadata":{"unresolvedName":"vi.fn().mockReturnValue"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:Object.defineProperty","kind":"calls","metadata":{"unresolvedName":"Object.defineProperty"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"calls","metadata":{"unresolvedName":"copyTextToClipboard"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:expect(writeText).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(writeText).toHaveBeenCalledWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.test.ts:","to":"external:expect(execCommand).toHaveBeenCalledWith","kind":"calls","metadata":{"unresolvedName":"expect(execCommand).toHaveBeenCalledWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText","to":"external:document.createElement","kind":"calls","metadata":{"unresolvedName":"document.createElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText","to":"external:textArea.setAttribute","kind":"calls","metadata":{"unresolvedName":"textArea.setAttribute"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText","to":"external:document.getSelection","kind":"calls","metadata":{"unresolvedName":"document.getSelection"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText","to":"external:Array.from","kind":"calls","metadata":{"unresolvedName":"Array.from"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText","to":"external:selection.getRangeAt(index).cloneRange","kind":"calls","metadata":{"unresolvedName":"selection.getRangeAt(index).cloneRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText","to":"external:selection.getRangeAt","kind":"calls","metadata":{"unresolvedName":"selection.getRangeAt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText","to":"external:document.body.appendChild","kind":"calls","metadata":{"unresolvedName":"document.body.appendChild"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText","to":"external:textArea.focus","kind":"calls","metadata":{"unresolvedName":"textArea.focus"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText","to":"external:textArea.select","kind":"calls","metadata":{"unresolvedName":"textArea.select"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText","to":"external:textArea.setSelectionRange","kind":"calls","metadata":{"unresolvedName":"textArea.setSelectionRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText","to":"external:document.execCommand","kind":"calls","metadata":{"unresolvedName":"document.execCommand"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText","to":"external:document.body.removeChild","kind":"calls","metadata":{"unresolvedName":"document.body.removeChild"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText","to":"external:selection.removeAllRanges","kind":"calls","metadata":{"unresolvedName":"selection.removeAllRanges"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText","to":"external:savedRanges.forEach","kind":"calls","metadata":{"unresolvedName":"savedRanges.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText","to":"external:selection.addRange","kind":"calls","metadata":{"unresolvedName":"selection.addRange"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText","to":"external:activeElement?.focus","kind":"calls","metadata":{"unresolvedName":"activeElement?.focus"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","to":"external:navigator.clipboard.writeText","kind":"calls","metadata":{"unresolvedName":"navigator.clipboard.writeText"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:copyTextToClipboard","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:fallbackCopyText","kind":"calls","metadata":{"unresolvedName":"fallbackCopyText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:readTextFromClipboard","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:readTextFromClipboard","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/clipboard.ts:readTextFromClipboard","to":"external:navigator.clipboard.readText","kind":"calls","metadata":{"unresolvedName":"navigator.clipboard.readText"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/dateUtils.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/dateUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/dateUtils.ts:formatRelativeTime","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/dateUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/dateUtils.ts:formatRelativeTime","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/dateUtils.ts:formatRelativeTime","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/dateUtils.ts:formatRelativeTime","to":"external:Math.floor","kind":"calls","metadata":{"unresolvedName":"Math.floor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/dateUtils.ts:formatRelativeTime","to":"external:new Date(timestamp).toLocaleDateString","kind":"calls","metadata":{"unresolvedName":"new Date(timestamp).toLocaleDateString"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts:extractContentFromUnifiedDiff","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts:extractContentFromUnifiedDiff","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts:extractContentFromUnifiedDiff","to":"external:diff.split","kind":"calls","metadata":{"unresolvedName":"diff.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts:extractContentFromUnifiedDiff","to":"external:line.startsWith","kind":"calls","metadata":{"unresolvedName":"line.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts:extractContentFromUnifiedDiff","to":"external:line.slice","kind":"calls","metadata":{"unresolvedName":"line.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts:extractContentFromUnifiedDiff","to":"external:before.trimEnd","kind":"calls","metadata":{"unresolvedName":"before.trimEnd"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/diffUtils.ts:extractContentFromUnifiedDiff","to":"external:after.trimEnd","kind":"calls","metadata":{"unresolvedName":"after.trimEnd"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:resetPathModeCache","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:resetPathModeCache","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:subscribePathMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:subscribePathMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:subscribePathMode","to":"external:_listeners.add","kind":"calls","metadata":{"unresolvedName":"_listeners.add"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:subscribePathMode","to":"external:_listeners.delete","kind":"calls","metadata":{"unresolvedName":"_listeners.delete"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:notifyListeners","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:notifyListeners","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:notifyListeners","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getPathMode","kind":"calls","metadata":{"unresolvedName":"getPathMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:notifyListeners","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getEffectivePathStyle","kind":"calls","metadata":{"unresolvedName":"getEffectivePathStyle"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:notifyListeners","to":"external:_listeners.forEach","kind":"calls","metadata":{"unresolvedName":"_listeners.forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:notifyListeners","to":"symbol-name:listener","kind":"calls","metadata":{"unresolvedName":"listener"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getPathMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getPathMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getPathMode","to":"external:serverStorage.get","kind":"calls","metadata":{"unresolvedName":"serverStorage.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:setPathMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:setPathMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:setPathMode","to":"external:serverStorage.set","kind":"calls","metadata":{"unresolvedName":"serverStorage.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:setPathMode","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:notifyListeners","kind":"calls","metadata":{"unresolvedName":"notifyListeners"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDetectedPathStyle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDetectedPathStyle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDetectedPathStyle","to":"external:serverStorage.get","kind":"calls","metadata":{"unresolvedName":"serverStorage.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:setDetectedPathStyle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:setDetectedPathStyle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:setDetectedPathStyle","to":"external:serverStorage.set","kind":"calls","metadata":{"unresolvedName":"serverStorage.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:setDetectedPathStyle","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getPathMode","kind":"calls","metadata":{"unresolvedName":"getPathMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:setDetectedPathStyle","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:notifyListeners","kind":"calls","metadata":{"unresolvedName":"notifyListeners"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getEffectivePathStyle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getEffectivePathStyle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getEffectivePathStyle","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getPathMode","kind":"calls","metadata":{"unresolvedName":"getPathMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getEffectivePathStyle","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDetectedPathStyle","kind":"calls","metadata":{"unresolvedName":"getDetectedPathStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isWindowsPathMode","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isWindowsPathMode","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isWindowsPathMode","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getEffectivePathStyle","kind":"calls","metadata":{"unresolvedName":"getEffectivePathStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","to":"external:dir.replace","kind":"calls","metadata":{"unresolvedName":"dir.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","to":"external:/^[a-zA-Z]:$/.test","kind":"calls","metadata":{"unresolvedName":"/^[a-zA-Z]:$/.test"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isWindowsPathMode","kind":"calls","metadata":{"unresolvedName":"isWindowsPathMode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:formatPathForApi","to":"external:trimmed.replace","kind":"calls","metadata":{"unresolvedName":"trimmed.replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:detectPathStyleFromResponse","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:detectPathStyleFromResponse","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:detectPathStyleFromResponse","to":"external:path.match","kind":"calls","metadata":{"unresolvedName":"path.match"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:autoDetectPathStyle","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:autoDetectPathStyle","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:autoDetectPathStyle","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:detectPathStyleFromResponse","kind":"calls","metadata":{"unresolvedName":"detectPathStyleFromResponse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:autoDetectPathStyle","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:setDetectedPathStyle","kind":"calls","metadata":{"unresolvedName":"setDetectedPathStyle"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","to":"external:dir\r\n .replace(/\\\\/g, '/') // 反斜杠 → 正斜杠\r\n .replace","kind":"calls","metadata":{"unresolvedName":"dir\r\n .replace(/\\\\/g, '/') // 反斜杠 → 正斜杠\r\n .replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","to":"external:dir\r\n .replace","kind":"calls","metadata":{"unresolvedName":"dir\r\n .replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeForComparison","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeForComparison","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeForComparison","to":"external:dir\r\n .replace(/\\\\/g, '/') // 反斜杠 → 正斜杠\r\n .replace","kind":"calls","metadata":{"unresolvedName":"dir\r\n .replace(/\\\\/g, '/') // 反斜杠 → 正斜杠\r\n .replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeForComparison","to":"external:dir\r\n .replace","kind":"calls","metadata":{"unresolvedName":"dir\r\n .replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isSameDirectory","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeForComparison","kind":"calls","metadata":{"unresolvedName":"normalizeForComparison"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDirectoryName","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDirectoryName","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDirectoryName","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:normalizeToForwardSlash","kind":"calls","metadata":{"unresolvedName":"normalizeToForwardSlash"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDirectoryName","to":"external:normalized.split('/').filter","kind":"calls","metadata":{"unresolvedName":"normalized.split('/').filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDirectoryName","to":"external:normalized.split","kind":"calls","metadata":{"unresolvedName":"normalized.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:getDirectoryName","to":"symbol-name:decodeURIComponent","kind":"calls","metadata":{"unresolvedName":"decodeURIComponent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isWindowsAbsolutePath","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isWindowsAbsolutePath","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isWindowsAbsolutePath","to":"external:/^[a-zA-Z]:/.test","kind":"calls","metadata":{"unresolvedName":"/^[a-zA-Z]:/.test"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isAbsolutePath","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isAbsolutePath","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isAbsolutePath","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isWindowsAbsolutePath","kind":"calls","metadata":{"unresolvedName":"isWindowsAbsolutePath"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/directoryUtils.ts:isAbsolutePath","to":"external:path.startsWith","kind":"calls","metadata":{"unresolvedName":"path.startsWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:base64ToBytes","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:base64ToBytes","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:base64ToBytes","to":"symbol-name:atob","kind":"calls","metadata":{"unresolvedName":"atob"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:base64ToBytes","to":"external:binary.charCodeAt","kind":"calls","metadata":{"unresolvedName":"binary.charCodeAt"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:triggerBrowserDownload","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:triggerBrowserDownload","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:triggerBrowserDownload","to":"external:URL.createObjectURL","kind":"calls","metadata":{"unresolvedName":"URL.createObjectURL"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:triggerBrowserDownload","to":"external:document.createElement","kind":"calls","metadata":{"unresolvedName":"document.createElement"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:triggerBrowserDownload","to":"external:document.body.appendChild","kind":"calls","metadata":{"unresolvedName":"document.body.appendChild"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:triggerBrowserDownload","to":"external:a.click","kind":"calls","metadata":{"unresolvedName":"a.click"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:triggerBrowserDownload","to":"symbol-name:setTimeout","kind":"calls","metadata":{"unresolvedName":"setTimeout"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:triggerBrowserDownload","to":"external:URL.revokeObjectURL","kind":"calls","metadata":{"unresolvedName":"URL.revokeObjectURL"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:triggerBrowserDownload","to":"external:document.body.removeChild","kind":"calls","metadata":{"unresolvedName":"document.body.removeChild"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:","to":"external:URL.revokeObjectURL","kind":"calls","metadata":{"unresolvedName":"URL.revokeObjectURL"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:","to":"external:document.body.removeChild","kind":"calls","metadata":{"unresolvedName":"document.body.removeChild"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:tauriSaveFile","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:tauriSaveFile","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:tauriSaveFile","to":"external:Promise.all","kind":"calls","metadata":{"unresolvedName":"Promise.all"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:tauriSaveFile","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:tauriSaveFile","to":"external:fileName.split('.').pop()?.toLowerCase","kind":"calls","metadata":{"unresolvedName":"fileName.split('.').pop()?.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:tauriSaveFile","to":"external:fileName.split('.').pop","kind":"calls","metadata":{"unresolvedName":"fileName.split('.').pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:tauriSaveFile","to":"external:fileName.split","kind":"calls","metadata":{"unresolvedName":"fileName.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:tauriSaveFile","to":"external:ext.toUpperCase","kind":"calls","metadata":{"unresolvedName":"ext.toUpperCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:tauriSaveFile","to":"symbol-name:save","kind":"calls","metadata":{"unresolvedName":"save"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:tauriSaveFile","to":"symbol-name:writeFile","kind":"calls","metadata":{"unresolvedName":"writeFile"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:downloadFileContent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:downloadFileContent","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:downloadFileContent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:isBinaryContent","kind":"calls","metadata":{"unresolvedName":"isBinaryContent"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:downloadFileContent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:base64ToBytes","kind":"calls","metadata":{"unresolvedName":"base64ToBytes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:downloadFileContent","to":"external:new TextEncoder().encode","kind":"calls","metadata":{"unresolvedName":"new TextEncoder().encode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:downloadFileContent","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:saveData","kind":"calls","metadata":{"unresolvedName":"saveData"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:saveData","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:saveData","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:saveData","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:saveData","to":"external:tauriSaveFile(data, fileName).catch","kind":"calls","metadata":{"unresolvedName":"tauriSaveFile(data, fileName).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:saveData","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:tauriSaveFile","kind":"calls","metadata":{"unresolvedName":"tauriSaveFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:saveData","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:saveData","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:triggerBrowserDownload","kind":"calls","metadata":{"unresolvedName":"triggerBrowserDownload"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/downloadUtils.ts:","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:logError","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:logError","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:logError","to":"external:console.error","kind":"calls","metadata":{"unresolvedName":"console.error"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:withErrorHandling","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:withErrorHandling","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:withErrorHandling","to":"external:fn().catch","kind":"calls","metadata":{"unresolvedName":"fn().catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:withErrorHandling","to":"symbol-name:fn","kind":"calls","metadata":{"unresolvedName":"fn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:withErrorHandling","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:logError","kind":"calls","metadata":{"unresolvedName":"logError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:logError","kind":"calls","metadata":{"unresolvedName":"logError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:createErrorHandler","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:createErrorHandler","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:createErrorHandler","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:logError","kind":"calls","metadata":{"unresolvedName":"logError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:logError","kind":"calls","metadata":{"unresolvedName":"logError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:handleError","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:handleError","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:handleError","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:logError","kind":"calls","metadata":{"unresolvedName":"logError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/errorHandling.ts:logError","kind":"calls","metadata":{"unresolvedName":"logError"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatDuration(999)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatDuration(999)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration","kind":"calls","metadata":{"unresolvedName":"formatDuration"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatDuration(123.456)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatDuration(123.456)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatDuration(1500)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatDuration(1500)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatDuration((3 * 60 + 12) * 1000)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatDuration((3 * 60 + 12) * 1000)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatDuration((1 * 60 * 60 + 21 * 60 + 12) * 1000)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatDuration((1 * 60 * 60 + 21 * 60 + 12) * 1000)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatDuration(60 * 60 * 1000)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatDuration(60 * 60 * 1000)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatDuration(((24 + 21) * 60 + 10) * 60 * 1000)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatDuration(((24 + 21) * 60 + 10) * 60 * 1000)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatDuration(24 * 60 * 60 * 1000)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatDuration(24 * 60 * 60 * 1000)).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatDuration(999)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatDuration(999)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration","kind":"calls","metadata":{"unresolvedName":"formatDuration"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatDuration(123.456)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatDuration(123.456)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatDuration(1500)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatDuration(1500)).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatDuration((3 * 60 + 12) * 1000)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatDuration((3 * 60 + 12) * 1000)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration","kind":"calls","metadata":{"unresolvedName":"formatDuration"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatDuration((1 * 60 * 60 + 21 * 60 + 12) * 1000)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatDuration((1 * 60 * 60 + 21 * 60 + 12) * 1000)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration","kind":"calls","metadata":{"unresolvedName":"formatDuration"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatDuration(60 * 60 * 1000)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatDuration(60 * 60 * 1000)).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatDuration(((24 + 21) * 60 + 10) * 60 * 1000)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatDuration(((24 + 21) * 60 + 10) * 60 * 1000)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration","kind":"calls","metadata":{"unresolvedName":"formatDuration"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatDuration(24 * 60 * 60 * 1000)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatDuration(24 * 60 * 60 * 1000)).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:new Date(2026, 3, 17, 10, 30, 45).getTime","kind":"calls","metadata":{"unresolvedName":"new Date(2026, 3, 17, 10, 30, 45).getTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatTime(ms)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatTime(ms)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatTime","kind":"calls","metadata":{"unresolvedName":"formatTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatDateTime(ms)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatDateTime(ms)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDateTime","kind":"calls","metadata":{"unresolvedName":"formatDateTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatDetailedDateTime(ms)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatDetailedDateTime(ms)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","kind":"calls","metadata":{"unresolvedName":"formatDetailedDateTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatCompletedAt(ms, 'time')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatCompletedAt(ms, 'time')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCompletedAt","kind":"calls","metadata":{"unresolvedName":"formatCompletedAt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatCompletedAt(ms, 'dateTime')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatCompletedAt(ms, 'dateTime')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:new Date(2026, 3, 17, 10, 30, 45).getTime","kind":"calls","metadata":{"unresolvedName":"new Date(2026, 3, 17, 10, 30, 45).getTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatTime(ms)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatTime(ms)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatTime","kind":"calls","metadata":{"unresolvedName":"formatTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:new Date(2026, 3, 17, 10, 30, 45).getTime","kind":"calls","metadata":{"unresolvedName":"new Date(2026, 3, 17, 10, 30, 45).getTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatDateTime(ms)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatDateTime(ms)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDateTime","kind":"calls","metadata":{"unresolvedName":"formatDateTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:new Date(2026, 3, 17, 10, 30, 45).getTime","kind":"calls","metadata":{"unresolvedName":"new Date(2026, 3, 17, 10, 30, 45).getTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatDetailedDateTime(ms)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatDetailedDateTime(ms)).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","kind":"calls","metadata":{"unresolvedName":"formatDetailedDateTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:new Date(2026, 3, 17, 10, 30, 45).getTime","kind":"calls","metadata":{"unresolvedName":"new Date(2026, 3, 17, 10, 30, 45).getTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatCompletedAt(ms, 'time')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatCompletedAt(ms, 'time')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCompletedAt","kind":"calls","metadata":{"unresolvedName":"formatCompletedAt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.test.ts:","to":"external:expect(formatCompletedAt(ms, 'dateTime')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatCompletedAt(ms, 'dateTime')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatToolName","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatToolName","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatToolName","to":"external:name.replace(/[-_]/g, ' ').replace","kind":"calls","metadata":{"unresolvedName":"name.replace(/[-_]/g, ' ').replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatToolName","to":"external:name.replace","kind":"calls","metadata":{"unresolvedName":"name.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatToolName","to":"external:c.toUpperCase","kind":"calls","metadata":{"unresolvedName":"c.toUpperCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration","to":"external:Math.round","kind":"calls","metadata":{"unresolvedName":"Math.round"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration","to":"external:s.toFixed","kind":"calls","metadata":{"unresolvedName":"s.toFixed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration","to":"external:Math.floor","kind":"calls","metadata":{"unresolvedName":"Math.floor"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration","to":"external:[`${d}d`, h > 0 ? `${h}h` : '', m > 0 ? `${m}m` : ''].filter(Boolean).join","kind":"calls","metadata":{"unresolvedName":"[`${d}d`, h > 0 ? `${h}h` : '', m > 0 ? `${m}m` : ''].filter(Boolean).join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration","to":"external:[`${d}d`, h > 0 ? `${h}h` : '', m > 0 ? `${m}m` : ''].filter","kind":"calls","metadata":{"unresolvedName":"[`${d}d`, h > 0 ? `${h}h` : '', m > 0 ? `${m}m` : ''].filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration","to":"external:[`${h}h`, m > 0 ? `${m}m` : '', remS > 0 ? `${remS}s` : ''].filter","kind":"calls","metadata":{"unresolvedName":"[`${h}h`, m > 0 ? `${m}m` : '', remS > 0 ? `${remS}s` : ''].filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration","to":"external:[`${m}m`, remS > 0 ? `${remS}s` : ''].filter(Boolean).join","kind":"calls","metadata":{"unresolvedName":"[`${m}m`, remS > 0 ? `${remS}s` : ''].filter(Boolean).join"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDuration","to":"external:[`${m}m`, remS > 0 ? `${remS}s` : ''].filter","kind":"calls","metadata":{"unresolvedName":"[`${m}m`, remS > 0 ? `${remS}s` : ''].filter"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCost","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCost","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCost","to":"external:cost.toFixed","kind":"calls","metadata":{"unresolvedName":"cost.toFixed"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatTime","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatTime","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatTime","to":"external:date.getHours().toString().padStart","kind":"calls","metadata":{"unresolvedName":"date.getHours().toString().padStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatTime","to":"external:date.getHours().toString","kind":"calls","metadata":{"unresolvedName":"date.getHours().toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatTime","to":"external:date.getHours","kind":"calls","metadata":{"unresolvedName":"date.getHours"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatTime","to":"external:date.getMinutes().toString().padStart","kind":"calls","metadata":{"unresolvedName":"date.getMinutes().toString().padStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatTime","to":"external:date.getMinutes().toString","kind":"calls","metadata":{"unresolvedName":"date.getMinutes().toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatTime","to":"external:date.getMinutes","kind":"calls","metadata":{"unresolvedName":"date.getMinutes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDateTime","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDateTime","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDateTime","to":"external:date.getFullYear().toString().padStart","kind":"calls","metadata":{"unresolvedName":"date.getFullYear().toString().padStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDateTime","to":"external:date.getFullYear().toString","kind":"calls","metadata":{"unresolvedName":"date.getFullYear().toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDateTime","to":"external:date.getFullYear","kind":"calls","metadata":{"unresolvedName":"date.getFullYear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDateTime","to":"external:(date.getMonth() + 1).toString().padStart","kind":"calls","metadata":{"unresolvedName":"(date.getMonth() + 1).toString().padStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDateTime","to":"external:(date.getMonth() + 1).toString","kind":"calls","metadata":{"unresolvedName":"(date.getMonth() + 1).toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDateTime","to":"external:date.getMonth","kind":"calls","metadata":{"unresolvedName":"date.getMonth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDateTime","to":"external:date.getDate().toString().padStart","kind":"calls","metadata":{"unresolvedName":"date.getDate().toString().padStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDateTime","to":"external:date.getDate().toString","kind":"calls","metadata":{"unresolvedName":"date.getDate().toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDateTime","to":"external:date.getDate","kind":"calls","metadata":{"unresolvedName":"date.getDate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDateTime","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatTime","kind":"calls","metadata":{"unresolvedName":"formatTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","to":"external:date.getFullYear().toString().padStart","kind":"calls","metadata":{"unresolvedName":"date.getFullYear().toString().padStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","to":"external:date.getFullYear().toString","kind":"calls","metadata":{"unresolvedName":"date.getFullYear().toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","to":"external:date.getFullYear","kind":"calls","metadata":{"unresolvedName":"date.getFullYear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","to":"external:(date.getMonth() + 1).toString().padStart","kind":"calls","metadata":{"unresolvedName":"(date.getMonth() + 1).toString().padStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","to":"external:(date.getMonth() + 1).toString","kind":"calls","metadata":{"unresolvedName":"(date.getMonth() + 1).toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","to":"external:date.getMonth","kind":"calls","metadata":{"unresolvedName":"date.getMonth"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","to":"external:date.getDate().toString().padStart","kind":"calls","metadata":{"unresolvedName":"date.getDate().toString().padStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","to":"external:date.getDate().toString","kind":"calls","metadata":{"unresolvedName":"date.getDate().toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","to":"external:date.getDate","kind":"calls","metadata":{"unresolvedName":"date.getDate"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","to":"external:date.getHours().toString().padStart","kind":"calls","metadata":{"unresolvedName":"date.getHours().toString().padStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","to":"external:date.getHours().toString","kind":"calls","metadata":{"unresolvedName":"date.getHours().toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","to":"external:date.getHours","kind":"calls","metadata":{"unresolvedName":"date.getHours"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","to":"external:date.getMinutes().toString().padStart","kind":"calls","metadata":{"unresolvedName":"date.getMinutes().toString().padStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","to":"external:date.getMinutes().toString","kind":"calls","metadata":{"unresolvedName":"date.getMinutes().toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","to":"external:date.getMinutes","kind":"calls","metadata":{"unresolvedName":"date.getMinutes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","to":"external:date.getSeconds().toString().padStart","kind":"calls","metadata":{"unresolvedName":"date.getSeconds().toString().padStart"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","to":"external:date.getSeconds().toString","kind":"calls","metadata":{"unresolvedName":"date.getSeconds().toString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDetailedDateTime","to":"external:date.getSeconds","kind":"calls","metadata":{"unresolvedName":"date.getSeconds"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCompletedAt","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCompletedAt","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCompletedAt","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatDateTime","kind":"calls","metadata":{"unresolvedName":"formatDateTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatCompletedAt","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatTime","kind":"calls","metadata":{"unresolvedName":"formatTime"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatNumber","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatNumber","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatNumber","to":"external:(num / 1000000).toFixed","kind":"calls","metadata":{"unresolvedName":"(num / 1000000).toFixed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatNumber","to":"external:(num / 1000).toFixed","kind":"calls","metadata":{"unresolvedName":"(num / 1000).toFixed"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/formatUtils.ts:formatNumber","to":"external:num.toString","kind":"calls","metadata":{"unresolvedName":"num.toString"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/lib/shiki.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:normalizeLanguage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:normalizeLanguage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:normalizeLanguage","to":"external:lang.toLowerCase","kind":"calls","metadata":{"unresolvedName":"lang.toLowerCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:detectLanguage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:detectLanguage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:detectLanguage","to":"external:filePath.split(/[/\\\\]/).pop()?.toLowerCase","kind":"calls","metadata":{"unresolvedName":"filePath.split(/[/\\\\]/).pop()?.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:detectLanguage","to":"external:filePath.split(/[/\\\\]/).pop","kind":"calls","metadata":{"unresolvedName":"filePath.split(/[/\\\\]/).pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:detectLanguage","to":"external:filePath.split","kind":"calls","metadata":{"unresolvedName":"filePath.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:detectLanguage","to":"external:filePath.split('.').pop()?.toLowerCase","kind":"calls","metadata":{"unresolvedName":"filePath.split('.').pop()?.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/languageUtils.ts:detectLanguage","to":"external:filePath.split('.').pop","kind":"calls","metadata":{"unresolvedName":"filePath.split('.').pop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts:getLineCount","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts:getLineCount","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts:getLineCount","to":"external:text.charCodeAt","kind":"calls","metadata":{"unresolvedName":"text.charCodeAt"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts:getLineNumberColumnWidth","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts:getLineNumberColumnWidth","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts:getLineNumberColumnWidth","to":"symbol-name:String","kind":"calls","metadata":{"unresolvedName":"String"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/lineNumberUtils.ts:getLineNumberColumnWidth","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/logger.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/logger.ts:noop","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/logger.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/logger.ts:noop","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:basename","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:basename","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:basename","to":"external:path.replace(/\\\\/g, '/').split('/').filter(Boolean).pop","kind":"calls","metadata":{"unresolvedName":"path.replace(/\\\\/g, '/').split('/').filter(Boolean).pop"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:basename","to":"external:path.replace(/\\\\/g, '/').split('/').filter","kind":"calls","metadata":{"unresolvedName":"path.replace(/\\\\/g, '/').split('/').filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:basename","to":"external:path.replace(/\\\\/g, '/').split","kind":"calls","metadata":{"unresolvedName":"path.replace(/\\\\/g, '/').split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:basename","to":"external:path.replace","kind":"calls","metadata":{"unresolvedName":"path.replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:resolveFileIcon","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:resolveFileIcon","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:resolveFileIcon","to":"external:basename(path).toLowerCase","kind":"calls","metadata":{"unresolvedName":"basename(path).toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:resolveFileIcon","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:basename","kind":"calls","metadata":{"unresolvedName":"basename"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:resolveFileIcon","to":"external:name.endsWith","kind":"calls","metadata":{"unresolvedName":"name.endsWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:resolveFolderIcon","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:resolveFolderIcon","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:resolveFolderIcon","to":"external:basename(path).toLowerCase","kind":"calls","metadata":{"unresolvedName":"basename(path).toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:resolveFolderIcon","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:basename","kind":"calls","metadata":{"unresolvedName":"basename"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:getMaterialIconUrl","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:getMaterialIconUrl","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:getMaterialIconUrl","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:resolveFolderIcon","kind":"calls","metadata":{"unresolvedName":"resolveFolderIcon"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:getMaterialIconUrl","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/materialIcons.ts:resolveFileIcon","kind":"calls","metadata":{"unresolvedName":"resolveFileIcon"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api/types.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/types/message.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:getEnvelopeInfo","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:getEnvelopeInfo","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toUIMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toUIMessage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toUIMessage","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:getEnvelopeInfo","kind":"calls","metadata":{"unresolvedName":"getEnvelopeInfo"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toUIMessageInfo","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toUIMessageInfo","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toUIPart","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toUIPart","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toApiMessageWithParts","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:toApiMessageWithParts","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:isUserUIMessage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:isUserUIMessage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/messageConversion.ts:isUserUIMessage","to":"symbol-name:isUserMessage","kind":"calls","metadata":{"unresolvedName":"isUserMessage"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:getPreviewCategory","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:getPreviewCategory","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:getPreviewCategory","to":"external:mimeType.indexOf","kind":"calls","metadata":{"unresolvedName":"mimeType.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:getPreviewCategory","to":"external:mimeType.slice","kind":"calls","metadata":{"unresolvedName":"mimeType.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:getPreviewCategory","to":"external:PREVIEWABLE_MEDIA.has","kind":"calls","metadata":{"unresolvedName":"PREVIEWABLE_MEDIA.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:getPreviewCategory","to":"external:PREVIEWABLE_APP_SUBTYPES.has","kind":"calls","metadata":{"unresolvedName":"PREVIEWABLE_APP_SUBTYPES.has"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:isBinaryContent","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:isBinaryContent","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:isTextualMedia","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:isTextualMedia","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:isTextualMedia","to":"external:TEXTUAL_MEDIA_TYPES.has","kind":"calls","metadata":{"unresolvedName":"TEXTUAL_MEDIA_TYPES.has"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:buildDataUrl","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:buildDataUrl","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:buildTextDataUrl","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:buildTextDataUrl","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:buildTextDataUrl","to":"symbol-name:encodeURIComponent","kind":"calls","metadata":{"unresolvedName":"encodeURIComponent"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:decodeBase64Text","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:decodeBase64Text","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:decodeBase64Text","to":"symbol-name:atob","kind":"calls","metadata":{"unresolvedName":"atob"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:decodeBase64Text","to":"external:binary.charCodeAt","kind":"calls","metadata":{"unresolvedName":"binary.charCodeAt"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:decodeBase64Text","to":"external:new TextDecoder('utf-8').decode","kind":"calls","metadata":{"unresolvedName":"new TextDecoder('utf-8').decode"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:formatMimeType","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:formatMimeType","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:formatMimeType","to":"external:mimeType.indexOf","kind":"calls","metadata":{"unresolvedName":"mimeType.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:formatMimeType","to":"external:mimeType.toUpperCase","kind":"calls","metadata":{"unresolvedName":"mimeType.toUpperCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:formatMimeType","to":"external:mimeType.slice","kind":"calls","metadata":{"unresolvedName":"mimeType.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:formatMimeType","to":"external:mimeType.slice(slash + 1).replace","kind":"calls","metadata":{"unresolvedName":"mimeType.slice(slash + 1).replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/mimeUtils.ts:formatMimeType","to":"external:minor.toUpperCase","kind":"calls","metadata":{"unresolvedName":"minor.toUpperCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:parseModelKey","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:parseModelKey","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:parseModelKey","to":"external:key.indexOf","kind":"calls","metadata":{"unresolvedName":"key.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:parseModelKey","to":"external:key.slice","kind":"calls","metadata":{"unresolvedName":"key.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:findModelByKey","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:findModelByKey","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:findModelByKey","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:parseModelKey","kind":"calls","metadata":{"unresolvedName":"parseModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:findModelByKey","to":"external:models.find","kind":"calls","metadata":{"unresolvedName":"models.find"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelUsageStats","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelUsageStats","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelUsageStats","to":"external:serverStorage.get","kind":"calls","metadata":{"unresolvedName":"serverStorage.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelUsageStats","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:recordModelUsage","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:recordModelUsage","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:recordModelUsage","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:recordModelUsage","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelUsageStats","kind":"calls","metadata":{"unresolvedName":"getModelUsageStats"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:recordModelUsage","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:recordModelUsage","to":"external:serverStorage.set","kind":"calls","metadata":{"unresolvedName":"serverStorage.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:recordModelUsage","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:recordModelUsage","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelUsageCount","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelUsageCount","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelUsageCount","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelUsageCount","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelUsageStats","kind":"calls","metadata":{"unresolvedName":"getModelUsageStats"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelVariantPrefs","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelVariantPrefs","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelVariantPrefs","to":"external:serverStorage.get","kind":"calls","metadata":{"unresolvedName":"serverStorage.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelVariantPrefs","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:saveModelVariantPref","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:saveModelVariantPref","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:saveModelVariantPref","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelVariantPrefs","kind":"calls","metadata":{"unresolvedName":"getModelVariantPrefs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:saveModelVariantPref","to":"external:serverStorage.set","kind":"calls","metadata":{"unresolvedName":"serverStorage.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:saveModelVariantPref","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:saveModelVariantPref","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelVariantPref","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelVariantPref","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelVariantPref","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelVariantPrefs","kind":"calls","metadata":{"unresolvedName":"getModelVariantPrefs"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getSessionModelSelections","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getSessionModelSelections","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getSessionModelSelections","to":"external:serverStorage.get","kind":"calls","metadata":{"unresolvedName":"serverStorage.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getSessionModelSelections","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getSessionModelSelection","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getSessionModelSelection","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getSessionModelSelection","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getSessionModelSelections","kind":"calls","metadata":{"unresolvedName":"getSessionModelSelections"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:saveSessionModelSelection","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:saveSessionModelSelection","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:saveSessionModelSelection","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getSessionModelSelections","kind":"calls","metadata":{"unresolvedName":"getSessionModelSelections"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:saveSessionModelSelection","to":"external:serverStorage.set","kind":"calls","metadata":{"unresolvedName":"serverStorage.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:saveSessionModelSelection","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:saveSessionModelSelection","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByFrequency","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByFrequency","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByFrequency","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelUsageStats","kind":"calls","metadata":{"unresolvedName":"getModelUsageStats"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByFrequency","to":"external:[...models].sort","kind":"calls","metadata":{"unresolvedName":"[...models].sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByFrequency","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsAlphabetically","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsAlphabetically","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsAlphabetically","to":"external:[...models].sort","kind":"calls","metadata":{"unresolvedName":"[...models].sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsAlphabetically","to":"external:a.name.localeCompare","kind":"calls","metadata":{"unresolvedName":"a.name.localeCompare"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByProvider","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByProvider","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByProvider","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelUsageStats","kind":"calls","metadata":{"unresolvedName":"getModelUsageStats"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByProvider","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByProvider","to":"external:models.reduce","kind":"calls","metadata":{"unresolvedName":"models.reduce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByProvider","to":"external:acc[model.providerId].push","kind":"calls","metadata":{"unresolvedName":"acc[model.providerId].push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByProvider","to":"external:Object.keys(groups).sort","kind":"calls","metadata":{"unresolvedName":"Object.keys(groups).sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByProvider","to":"external:Object.keys","kind":"calls","metadata":{"unresolvedName":"Object.keys"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByProvider","to":"external:sortedProviders.flatMap","kind":"calls","metadata":{"unresolvedName":"sortedProviders.flatMap"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByProvider","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByFrequency","kind":"calls","metadata":{"unresolvedName":"sortModelsByFrequency"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","to":"external:acc[model.providerId].push","kind":"calls","metadata":{"unresolvedName":"acc[model.providerId].push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:groupModelsByProvider","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:groupModelsByProvider","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:groupModelsByProvider","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelUsageStats","kind":"calls","metadata":{"unresolvedName":"getModelUsageStats"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:groupModelsByProvider","to":"external:models.reduce","kind":"calls","metadata":{"unresolvedName":"models.reduce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:groupModelsByProvider","to":"external:acc[key].models.push","kind":"calls","metadata":{"unresolvedName":"acc[key].models.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:groupModelsByProvider","to":"external:Object.values(groupMap).sort","kind":"calls","metadata":{"unresolvedName":"Object.values(groupMap).sort"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:groupModelsByProvider","to":"external:Object.values","kind":"calls","metadata":{"unresolvedName":"Object.values"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:groupModelsByProvider","to":"external:a.models.reduce","kind":"calls","metadata":{"unresolvedName":"a.models.reduce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:groupModelsByProvider","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:groupModelsByProvider","to":"external:b.models.reduce","kind":"calls","metadata":{"unresolvedName":"b.models.reduce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:groupModelsByProvider","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:sortModelsByFrequency","kind":"calls","metadata":{"unresolvedName":"sortModelsByFrequency"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","to":"external:acc[key].models.push","kind":"calls","metadata":{"unresolvedName":"acc[key].models.push"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","to":"external:a.models.reduce","kind":"calls","metadata":{"unresolvedName":"a.models.reduce"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","to":"external:b.models.reduce","kind":"calls","metadata":{"unresolvedName":"b.models.reduce"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getRecentModels","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getRecentModels","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getRecentModels","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelUsageStats","kind":"calls","metadata":{"unresolvedName":"getModelUsageStats"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getRecentModels","to":"external:models\r\n .filter","kind":"calls","metadata":{"unresolvedName":"models\r\n .filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getRecentModels","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getRecentModels","to":"external:usedModels.slice","kind":"calls","metadata":{"unresolvedName":"usedModels.slice"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModelKeys","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModelKeys","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModelKeys","to":"external:serverStorage.get","kind":"calls","metadata":{"unresolvedName":"serverStorage.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModelKeys","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:isModelPinned","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:isModelPinned","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:isModelPinned","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:isModelPinned","to":"external:getPinnedModelKeys().includes","kind":"calls","metadata":{"unresolvedName":"getPinnedModelKeys().includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:isModelPinned","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModelKeys","kind":"calls","metadata":{"unresolvedName":"getPinnedModelKeys"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:toggleModelPin","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:toggleModelPin","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:toggleModelPin","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:toggleModelPin","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModelKeys","kind":"calls","metadata":{"unresolvedName":"getPinnedModelKeys"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:toggleModelPin","to":"external:pinned.indexOf","kind":"calls","metadata":{"unresolvedName":"pinned.indexOf"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:toggleModelPin","to":"external:pinned.splice","kind":"calls","metadata":{"unresolvedName":"pinned.splice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:toggleModelPin","to":"external:pinned.push","kind":"calls","metadata":{"unresolvedName":"pinned.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:toggleModelPin","to":"external:serverStorage.set","kind":"calls","metadata":{"unresolvedName":"serverStorage.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:toggleModelPin","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:toggleModelPin","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModels","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModels","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModels","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModelKeys","kind":"calls","metadata":{"unresolvedName":"getPinnedModelKeys"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModels","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModels","to":"external:keySet.has","kind":"calls","metadata":{"unresolvedName":"keySet.has"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModels","to":"external:modelMap.set","kind":"calls","metadata":{"unresolvedName":"modelMap.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModels","to":"external:pinnedKeys.map(k => modelMap.get(k)).filter","kind":"calls","metadata":{"unresolvedName":"pinnedKeys.map(k => modelMap.get(k)).filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModels","to":"external:pinnedKeys.map","kind":"calls","metadata":{"unresolvedName":"pinnedKeys.map"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getPinnedModels","to":"external:modelMap.get","kind":"calls","metadata":{"unresolvedName":"modelMap.get"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSound","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSound","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSound","to":"external:soundStore.getSnapshot","kind":"calls","metadata":{"unresolvedName":"soundStore.getSnapshot"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSound","to":"external:soundStore.getCustomAudioBlob","kind":"calls","metadata":{"unresolvedName":"soundStore.getCustomAudioBlob"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSound","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playSound","kind":"calls","metadata":{"unresolvedName":"playSound"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSoundDeduped","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSoundDeduped","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSoundDeduped","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSoundDeduped","to":"external:recentPlays.get","kind":"calls","metadata":{"unresolvedName":"recentPlays.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSoundDeduped","to":"external:recentPlays.set","kind":"calls","metadata":{"unresolvedName":"recentPlays.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSoundDeduped","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSound","kind":"calls","metadata":{"unresolvedName":"playNotificationSound"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:initNotificationSound","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:initNotificationSound","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:initNotificationSound","to":"external:notificationStore.onPush","kind":"calls","metadata":{"unresolvedName":"notificationStore.onPush"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:initNotificationSound","to":"external:recentPlays.set","kind":"calls","metadata":{"unresolvedName":"recentPlays.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:initNotificationSound","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:initNotificationSound","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSound","kind":"calls","metadata":{"unresolvedName":"playNotificationSound"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:","to":"external:recentPlays.set","kind":"calls","metadata":{"unresolvedName":"recentPlays.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:","to":"external:Date.now","kind":"calls","metadata":{"unresolvedName":"Date.now"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/notificationSoundBridge.ts:playNotificationSound","kind":"calls","metadata":{"unresolvedName":"playNotificationSound"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:selectOpenRouterModel","kind":"calls","metadata":{"unresolvedName":"selectOpenRouterModel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","to":"external:expect(match?.id).toBe","kind":"calls","metadata":{"unresolvedName":"expect(match?.id).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","to":"external:expect(formatOpenRouterPricePerMillion('0.00000175')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatOpenRouterPricePerMillion('0.00000175')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:formatOpenRouterPricePerMillion","kind":"calls","metadata":{"unresolvedName":"formatOpenRouterPricePerMillion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","to":"external:expect(formatOpenRouterPricePerMillion('0')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatOpenRouterPricePerMillion('0')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","to":"external:expect(formatOpenRouterPricePerMillion(undefined)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatOpenRouterPricePerMillion(undefined)).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:selectOpenRouterModel","kind":"calls","metadata":{"unresolvedName":"selectOpenRouterModel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","to":"external:expect(match?.id).toBe","kind":"calls","metadata":{"unresolvedName":"expect(match?.id).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:selectOpenRouterModel","kind":"calls","metadata":{"unresolvedName":"selectOpenRouterModel"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","to":"external:expect(match?.id).toBe","kind":"calls","metadata":{"unresolvedName":"expect(match?.id).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","to":"external:expect(formatOpenRouterPricePerMillion('0.00000175')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatOpenRouterPricePerMillion('0.00000175')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:formatOpenRouterPricePerMillion","kind":"calls","metadata":{"unresolvedName":"formatOpenRouterPricePerMillion"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","to":"external:expect(formatOpenRouterPricePerMillion('0')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatOpenRouterPricePerMillion('0')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.test.ts:","to":"external:expect(formatOpenRouterPricePerMillion(undefined)).toBe","kind":"calls","metadata":{"unresolvedName":"expect(formatOpenRouterPricePerMillion(undefined)).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:normalize","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:normalize","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:normalize","to":"external:(value ?? '').toLowerCase().replace","kind":"calls","metadata":{"unresolvedName":"(value ?? '').toLowerCase().replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:normalize","to":"external:(value ?? '').toLowerCase","kind":"calls","metadata":{"unresolvedName":"(value ?? '').toLowerCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:providerFromOpenRouterId","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:providerFromOpenRouterId","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:providerFromOpenRouterId","to":"external:id.split","kind":"calls","metadata":{"unresolvedName":"id.split"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:isFreeVariant","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:isFreeVariant","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:isFreeVariant","to":"external:id.endsWith","kind":"calls","metadata":{"unresolvedName":"id.endsWith"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:scoreModel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:scoreModel","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:scoreModel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:normalize","kind":"calls","metadata":{"unresolvedName":"normalize"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:scoreModel","to":"external:entry.id.endsWith","kind":"calls","metadata":{"unresolvedName":"entry.id.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:scoreModel","to":"external:normalizedEntryID.endsWith","kind":"calls","metadata":{"unresolvedName":"normalizedEntryID.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:scoreModel","to":"external:normalizedEntryName.includes","kind":"calls","metadata":{"unresolvedName":"normalizedEntryName.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:scoreModel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:providerFromOpenRouterId","kind":"calls","metadata":{"unresolvedName":"providerFromOpenRouterId"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:scoreModel","to":"external:Math.abs","kind":"calls","metadata":{"unresolvedName":"Math.abs"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:scoreModel","to":"external:Math.max","kind":"calls","metadata":{"unresolvedName":"Math.max"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:scoreModel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:isFreeVariant","kind":"calls","metadata":{"unresolvedName":"isFreeVariant"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:selectOpenRouterModel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:selectOpenRouterModel","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:selectOpenRouterModel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:scoreModel","kind":"calls","metadata":{"unresolvedName":"scoreModel"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:formatOpenRouterPricePerMillion","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:formatOpenRouterPricePerMillion","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:formatOpenRouterPricePerMillion","to":"symbol-name:Number","kind":"calls","metadata":{"unresolvedName":"Number"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:formatOpenRouterPricePerMillion","to":"external:Number.isFinite","kind":"calls","metadata":{"unresolvedName":"Number.isFinite"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:formatOpenRouterPricePerMillion","to":"external:perMillion\n .toFixed(perMillion >= 10 ? 2 : 4)\n .replace","kind":"calls","metadata":{"unresolvedName":"perMillion\n .toFixed(perMillion >= 10 ? 2 : 4)\n .replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:formatOpenRouterPricePerMillion","to":"external:perMillion\n .toFixed","kind":"calls","metadata":{"unresolvedName":"perMillion\n .toFixed"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:getModelProviderLabel","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:getModelProviderLabel","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:getModelProviderLabel","to":"external:entry.name.split","kind":"calls","metadata":{"unresolvedName":"entry.name.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:getModelProviderLabel","to":"external:provider?.trim","kind":"calls","metadata":{"unresolvedName":"provider?.trim"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:getModelProviderLabel","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/openRouterModelMetadata.ts:providerFromOpenRouterId","kind":"calls","metadata":{"unresolvedName":"providerFromOpenRouterId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:makeKey","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:makeKey","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:makeKey","to":"external:serverStore.getActiveServerId","kind":"calls","metadata":{"unresolvedName":"serverStore.getActiveServerId"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:get","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:get","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:get","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:get","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:makeKey","kind":"calls","metadata":{"unresolvedName":"makeKey"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:set","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:set","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:set","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:set","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:makeKey","kind":"calls","metadata":{"unresolvedName":"makeKey"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:remove","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:remove","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:remove","to":"external:localStorage.removeItem","kind":"calls","metadata":{"unresolvedName":"localStorage.removeItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:remove","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:makeKey","kind":"calls","metadata":{"unresolvedName":"makeKey"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:getJSON","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:getJSON","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:getJSON","to":"external:serverStorage.get","kind":"calls","metadata":{"unresolvedName":"serverStorage.get"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:getJSON","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:setJSON","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:setJSON","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:setJSON","to":"external:serverStorage.set","kind":"calls","metadata":{"unresolvedName":"serverStorage.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:setJSON","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:exportPerServerStorageBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:exportPerServerStorageBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:exportPerServerStorageBackup","to":"external:localStorage.key","kind":"calls","metadata":{"unresolvedName":"localStorage.key"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:exportPerServerStorageBackup","to":"external:key.startsWith","kind":"calls","metadata":{"unresolvedName":"key.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:exportPerServerStorageBackup","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:importPerServerStorageBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:importPerServerStorageBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:importPerServerStorageBackup","to":"external:localStorage.key","kind":"calls","metadata":{"unresolvedName":"localStorage.key"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:importPerServerStorageBackup","to":"external:key.startsWith","kind":"calls","metadata":{"unresolvedName":"key.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:importPerServerStorageBackup","to":"external:keysToRemove.push","kind":"calls","metadata":{"unresolvedName":"keysToRemove.push"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:importPerServerStorageBackup","to":"external:localStorage.removeItem","kind":"calls","metadata":{"unresolvedName":"localStorage.removeItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:importPerServerStorageBackup","to":"external:Object.entries","kind":"calls","metadata":{"unresolvedName":"Object.entries"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:importPerServerStorageBackup","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"external:expect(parsePtyFrame('hello\\r\\n')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parsePtyFrame('hello\\r\\n')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parsePtyFrame","kind":"calls","metadata":{"unresolvedName":"parsePtyFrame"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"external:new TextEncoder().encode","kind":"calls","metadata":{"unresolvedName":"new TextEncoder().encode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"external:bytes.set","kind":"calls","metadata":{"unresolvedName":"bytes.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"external:expect(parsePtyFrame(bytes.buffer)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parsePtyFrame(bytes.buffer)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"external:expect(parsePtyFrame('\\0{\"cursor\":73}')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parsePtyFrame('\\0{\"cursor\":73}')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"external:expect(parsePtyFrame('\\0{\"cursor\":\"oops\"}')).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(parsePtyFrame('\\0{\"cursor\":\"oops\"}')).toBeNull"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"external:expect(parsePtyFrame('hello\\r\\n')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parsePtyFrame('hello\\r\\n')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parsePtyFrame","kind":"calls","metadata":{"unresolvedName":"parsePtyFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"external:new TextEncoder().encode","kind":"calls","metadata":{"unresolvedName":"new TextEncoder().encode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"external:bytes.set","kind":"calls","metadata":{"unresolvedName":"bytes.set"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"external:expect(parsePtyFrame(bytes.buffer)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parsePtyFrame(bytes.buffer)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parsePtyFrame","kind":"calls","metadata":{"unresolvedName":"parsePtyFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"external:expect(parsePtyFrame('\\0{\"cursor\":73}')).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parsePtyFrame('\\0{\"cursor\":73}')).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parsePtyFrame","kind":"calls","metadata":{"unresolvedName":"parsePtyFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"external:new TextEncoder().encode","kind":"calls","metadata":{"unresolvedName":"new TextEncoder().encode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"external:expect(parsePtyFrame(bytes.buffer)).toEqual","kind":"calls","metadata":{"unresolvedName":"expect(parsePtyFrame(bytes.buffer)).toEqual"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parsePtyFrame","kind":"calls","metadata":{"unresolvedName":"parsePtyFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"external:expect(parsePtyFrame('\\0{\"cursor\":\"oops\"}')).toBeNull","kind":"calls","metadata":{"unresolvedName":"expect(parsePtyFrame('\\0{\"cursor\":\"oops\"}')).toBeNull"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parsePtyFrame","kind":"calls","metadata":{"unresolvedName":"parsePtyFrame"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parseControlPayload","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parseControlPayload","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parseControlPayload","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parseControlPayload","to":"external:Number.isSafeInteger","kind":"calls","metadata":{"unresolvedName":"Number.isSafeInteger"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parsePtyFrame","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parsePtyFrame","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parsePtyFrame","to":"external:chunk.startsWith","kind":"calls","metadata":{"unresolvedName":"chunk.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parsePtyFrame","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parseControlPayload","kind":"calls","metadata":{"unresolvedName":"parseControlPayload"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parsePtyFrame","to":"external:chunk.slice","kind":"calls","metadata":{"unresolvedName":"chunk.slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parsePtyFrame","to":"external:decoder.decode","kind":"calls","metadata":{"unresolvedName":"decoder.decode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/ptyProtocol.ts:parsePtyFrame","to":"external:bytes.subarray","kind":"calls","metadata":{"unresolvedName":"bytes.subarray"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/sessionHelpers.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/api","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/sessionHelpers.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/sessionHelpers.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/sessionHelpers.ts:restoreModelSelection","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/sessionHelpers.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/sessionHelpers.ts:restoreModelSelection","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/sessionHelpers.ts:restoreModelSelection","to":"external:models.find","kind":"calls","metadata":{"unresolvedName":"models.find"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/sessionHelpers.ts:restoreModelSelection","to":"external:model.variants.includes","kind":"calls","metadata":{"unresolvedName":"model.variants.includes"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/sessionHelpers.ts:restoreModelSelection","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/modelUtils.ts:getModelKey","kind":"calls","metadata":{"unresolvedName":"getModelKey"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"symbol-name:beforeEach","kind":"calls","metadata":{"unresolvedName":"beforeEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:localStorage.clear","kind":"calls","metadata":{"unresolvedName":"localStorage.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:sessionStorage.clear","kind":"calls","metadata":{"unresolvedName":"sessionStorage.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:vi.resetModules","kind":"calls","metadata":{"unresolvedName":"vi.resetModules"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","kind":"calls","metadata":{"unresolvedName":"exportSettingsBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:new TextDecoder().decode","kind":"calls","metadata":{"unresolvedName":"new TextDecoder().decode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect(backup.schemaVersion).toBe","kind":"calls","metadata":{"unresolvedName":"expect(backup.schemaVersion).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect((backup.modules.theme as { presetId: string }).presetId).toBe","kind":"calls","metadata":{"unresolvedName":"expect((backup.modules.theme as { presetId: string }).presetId).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importSettingsBackup","kind":"calls","metadata":{"unresolvedName":"importSettingsBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect(localStorage.getItem('theme-preset')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('theme-preset')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect(localStorage.getItem('theme-mode')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('theme-mode')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect(localStorage.getItem('opencode-sidebar-expanded')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('opencode-sidebar-expanded')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect(localStorage.getItem('opencode-right-panel-width')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('opencode-right-panel-width')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect(localStorage.getItem('notifications-enabled')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('notifications-enabled')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect(localStorage.getItem('srv:local:last-directory')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('srv:local:last-directory')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect(localStorage.getItem('srv:local:opencode-auto-approve-enabled')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('srv:local:opencode-auto-approve-enabled')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect(localStorage.getItem('opencode:toast-enabled')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('opencode:toast-enabled')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect(sessionStorage.getItem('opencode-active-server')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(sessionStorage.getItem('opencode-active-server')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:sessionStorage.getItem","kind":"calls","metadata":{"unresolvedName":"sessionStorage.getItem"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:localStorage.clear","kind":"calls","metadata":{"unresolvedName":"localStorage.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:sessionStorage.clear","kind":"calls","metadata":{"unresolvedName":"sessionStorage.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:vi.resetModules","kind":"calls","metadata":{"unresolvedName":"vi.resetModules"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","kind":"calls","metadata":{"unresolvedName":"exportSettingsBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:new TextDecoder().decode","kind":"calls","metadata":{"unresolvedName":"new TextDecoder().decode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect(backup.schemaVersion).toBe","kind":"calls","metadata":{"unresolvedName":"expect(backup.schemaVersion).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect((backup.modules.theme as { presetId: string }).presetId).toBe","kind":"calls","metadata":{"unresolvedName":"expect((backup.modules.theme as { presetId: string }).presetId).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"symbol-name:import","kind":"calls","metadata":{"unresolvedName":"import"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","kind":"calls","metadata":{"unresolvedName":"exportSettingsBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:new TextDecoder().decode","kind":"calls","metadata":{"unresolvedName":"new TextDecoder().decode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:localStorage.clear","kind":"calls","metadata":{"unresolvedName":"localStorage.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:sessionStorage.clear","kind":"calls","metadata":{"unresolvedName":"sessionStorage.clear"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importSettingsBackup","kind":"calls","metadata":{"unresolvedName":"importSettingsBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect(localStorage.getItem('theme-preset')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('theme-preset')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect(localStorage.getItem('theme-mode')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('theme-mode')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect(localStorage.getItem('opencode-sidebar-expanded')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('opencode-sidebar-expanded')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect(localStorage.getItem('opencode-right-panel-width')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('opencode-right-panel-width')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect(localStorage.getItem('notifications-enabled')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('notifications-enabled')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect(localStorage.getItem('srv:local:last-directory')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('srv:local:last-directory')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect(localStorage.getItem('srv:local:opencode-auto-approve-enabled')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('srv:local:opencode-auto-approve-enabled')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect(localStorage.getItem('opencode:toast-enabled')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(localStorage.getItem('opencode:toast-enabled')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:expect(sessionStorage.getItem('opencode-active-server')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(sessionStorage.getItem('opencode-active-server')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.test.ts:","to":"external:sessionStorage.getItem","kind":"calls","metadata":{"unresolvedName":"sessionStorage.getItem"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/constants/storage.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportNotificationBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportNotificationBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportNotificationBackup","to":"external:localStorage.getItem","kind":"calls","metadata":{"unresolvedName":"localStorage.getItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportNotificationBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:exportNotificationPreferencesBackup","kind":"calls","metadata":{"unresolvedName":"exportNotificationPreferencesBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportNotificationBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:exportNotificationEventSettingsBackup","kind":"calls","metadata":{"unresolvedName":"exportNotificationEventSettingsBackup"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importNotificationBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importNotificationBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importNotificationBackup","to":"external:localStorage.setItem","kind":"calls","metadata":{"unresolvedName":"localStorage.setItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importNotificationBackup","to":"external:localStorage.removeItem","kind":"calls","metadata":{"unresolvedName":"localStorage.removeItem"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importNotificationBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts:importNotificationPreferencesBackup","kind":"calls","metadata":{"unresolvedName":"importNotificationPreferencesBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importNotificationBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationEventSettingsStore.ts:importNotificationEventSettingsBackup","kind":"calls","metadata":{"unresolvedName":"importNotificationEventSettingsBackup"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:normalizeBackupFile","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:normalizeBackupFile","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:normalizeBackupFile","to":"external:new Date().toISOString","kind":"calls","metadata":{"unresolvedName":"new Date().toISOString"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:buildBackupFileName","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:buildBackupFileName","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:buildBackupFileName","to":"external:createdAt.replace(/[:]/g, '-').replace","kind":"calls","metadata":{"unresolvedName":"createdAt.replace(/[:]/g, '-').replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:buildBackupFileName","to":"external:createdAt.replace","kind":"calls","metadata":{"unresolvedName":"createdAt.replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","to":"external:new Date().toISOString","kind":"calls","metadata":{"unresolvedName":"new Date().toISOString"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:exportThemeBackup","kind":"calls","metadata":{"unresolvedName":"exportThemeBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:exportLayoutBackup","kind":"calls","metadata":{"unresolvedName":"exportLayoutBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:exportServerSettingsBackup","kind":"calls","metadata":{"unresolvedName":"exportServerSettingsBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:exportPerServerStorageBackup","kind":"calls","metadata":{"unresolvedName":"exportPerServerStorageBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:exportServiceSettingsBackup","kind":"calls","metadata":{"unresolvedName":"exportServiceSettingsBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:exportKeybindingBackup","kind":"calls","metadata":{"unresolvedName":"exportKeybindingBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportNotificationBackup","kind":"calls","metadata":{"unresolvedName":"exportNotificationBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:exportSoundBackup","kind":"calls","metadata":{"unresolvedName":"exportSoundBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:exportUpdateSettingsBackup","kind":"calls","metadata":{"unresolvedName":"exportUpdateSettingsBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:buildBackupFileName","kind":"calls","metadata":{"unresolvedName":"buildBackupFileName"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","to":"external:new TextEncoder().encode","kind":"calls","metadata":{"unresolvedName":"new TextEncoder().encode"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:exportSettingsBackup","to":"external:JSON.stringify","kind":"calls","metadata":{"unresolvedName":"JSON.stringify"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importSettingsBackup","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importSettingsBackup","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importSettingsBackup","to":"external:file.text","kind":"calls","metadata":{"unresolvedName":"file.text"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importSettingsBackup","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:normalizeBackupFile","kind":"calls","metadata":{"unresolvedName":"normalizeBackupFile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/themeStore.ts:importThemeBackup","kind":"calls","metadata":{"unresolvedName":"importThemeBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/layoutStore.ts:importLayoutBackup","kind":"calls","metadata":{"unresolvedName":"importLayoutBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serverStore.ts:importServerSettingsBackup","kind":"calls","metadata":{"unresolvedName":"importServerSettingsBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/perServerStorage.ts:importPerServerStorageBackup","kind":"calls","metadata":{"unresolvedName":"importPerServerStorageBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/serviceStore.ts:importServiceSettingsBackup","kind":"calls","metadata":{"unresolvedName":"importServiceSettingsBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/keybindingStore.ts:importKeybindingBackup","kind":"calls","metadata":{"unresolvedName":"importKeybindingBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importNotificationBackup","kind":"calls","metadata":{"unresolvedName":"importNotificationBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/soundStore.ts:importSoundBackup","kind":"calls","metadata":{"unresolvedName":"importSoundBackup"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:importSettingsBackup","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/updateStore.ts:importUpdateSettingsBackup","kind":"calls","metadata":{"unresolvedName":"importUpdateSettingsBackup"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:previewBackupMeta","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:previewBackupMeta","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:previewBackupMeta","to":"external:file.text().then","kind":"calls","metadata":{"unresolvedName":"file.text().then"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:previewBackupMeta","to":"external:file.text","kind":"calls","metadata":{"unresolvedName":"file.text"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:previewBackupMeta","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/settingsBackup.ts:","to":"external:JSON.parse","kind":"calls","metadata":{"unresolvedName":"JSON.parse"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/store/notificationStore.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:getAudioContext","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:getAudioContext","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:isSoundSupported","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:isSoundSupported","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:volumeToGain","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:volumeToGain","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:chime'","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:chime'","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:chime'","to":"external:[523.25, 659.25].forEach","kind":"calls","metadata":{"unresolvedName":"[523.25, 659.25].forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:chime'","to":"external:ctx.createOscillator","kind":"calls","metadata":{"unresolvedName":"ctx.createOscillator"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:chime'","to":"external:ctx.createGain","kind":"calls","metadata":{"unresolvedName":"ctx.createGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:chime'","to":"external:osc.frequency.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:chime'","to":"external:gain.gain.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:chime'","to":"external:gain.gain.linearRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.linearRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:chime'","to":"external:gain.gain.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:chime'","to":"external:osc.connect(gain).connect","kind":"calls","metadata":{"unresolvedName":"osc.connect(gain).connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:chime'","to":"external:osc.connect","kind":"calls","metadata":{"unresolvedName":"osc.connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:chime'","to":"external:osc.start","kind":"calls","metadata":{"unresolvedName":"osc.start"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:chime'","to":"external:osc.stop","kind":"calls","metadata":{"unresolvedName":"osc.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:ctx.createOscillator","kind":"calls","metadata":{"unresolvedName":"ctx.createOscillator"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:ctx.createGain","kind":"calls","metadata":{"unresolvedName":"ctx.createGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.frequency.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:gain.gain.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:gain.gain.linearRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.linearRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:gain.gain.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.connect(gain).connect","kind":"calls","metadata":{"unresolvedName":"osc.connect(gain).connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.connect","kind":"calls","metadata":{"unresolvedName":"osc.connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.start","kind":"calls","metadata":{"unresolvedName":"osc.start"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.stop","kind":"calls","metadata":{"unresolvedName":"osc.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:success'","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:success'","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:success'","to":"external:[440, 554.37, 659.25].forEach","kind":"calls","metadata":{"unresolvedName":"[440, 554.37, 659.25].forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:success'","to":"external:ctx.createOscillator","kind":"calls","metadata":{"unresolvedName":"ctx.createOscillator"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:success'","to":"external:ctx.createGain","kind":"calls","metadata":{"unresolvedName":"ctx.createGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:success'","to":"external:osc.frequency.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:success'","to":"external:gain.gain.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:success'","to":"external:gain.gain.linearRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.linearRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:success'","to":"external:gain.gain.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:success'","to":"external:osc.connect(gain).connect","kind":"calls","metadata":{"unresolvedName":"osc.connect(gain).connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:success'","to":"external:osc.connect","kind":"calls","metadata":{"unresolvedName":"osc.connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:success'","to":"external:osc.start","kind":"calls","metadata":{"unresolvedName":"osc.start"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:success'","to":"external:osc.stop","kind":"calls","metadata":{"unresolvedName":"osc.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:ctx.createOscillator","kind":"calls","metadata":{"unresolvedName":"ctx.createOscillator"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:ctx.createGain","kind":"calls","metadata":{"unresolvedName":"ctx.createGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.frequency.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:gain.gain.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:gain.gain.linearRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.linearRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:gain.gain.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.connect(gain).connect","kind":"calls","metadata":{"unresolvedName":"osc.connect(gain).connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.connect","kind":"calls","metadata":{"unresolvedName":"osc.connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.start","kind":"calls","metadata":{"unresolvedName":"osc.start"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.stop","kind":"calls","metadata":{"unresolvedName":"osc.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bell'","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bell'","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bell'","to":"external:ctx.createOscillator","kind":"calls","metadata":{"unresolvedName":"ctx.createOscillator"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bell'","to":"external:ctx.createGain","kind":"calls","metadata":{"unresolvedName":"ctx.createGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bell'","to":"external:osc.frequency.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bell'","to":"external:osc.frequency.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bell'","to":"external:gain.gain.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bell'","to":"external:gain.gain.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bell'","to":"external:osc.connect(gain).connect","kind":"calls","metadata":{"unresolvedName":"osc.connect(gain).connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bell'","to":"external:osc.connect","kind":"calls","metadata":{"unresolvedName":"osc.connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bell'","to":"external:osc.start","kind":"calls","metadata":{"unresolvedName":"osc.start"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bell'","to":"external:osc.stop","kind":"calls","metadata":{"unresolvedName":"osc.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:knock'","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:knock'","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:knock'","to":"external:[0, 0.15].forEach","kind":"calls","metadata":{"unresolvedName":"[0, 0.15].forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:knock'","to":"external:ctx.createOscillator","kind":"calls","metadata":{"unresolvedName":"ctx.createOscillator"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:knock'","to":"external:ctx.createGain","kind":"calls","metadata":{"unresolvedName":"ctx.createGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:knock'","to":"external:osc.frequency.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:knock'","to":"external:osc.frequency.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:knock'","to":"external:gain.gain.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:knock'","to":"external:gain.gain.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:knock'","to":"external:osc.connect(gain).connect","kind":"calls","metadata":{"unresolvedName":"osc.connect(gain).connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:knock'","to":"external:osc.connect","kind":"calls","metadata":{"unresolvedName":"osc.connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:knock'","to":"external:osc.start","kind":"calls","metadata":{"unresolvedName":"osc.start"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:knock'","to":"external:osc.stop","kind":"calls","metadata":{"unresolvedName":"osc.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:ctx.createOscillator","kind":"calls","metadata":{"unresolvedName":"ctx.createOscillator"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:ctx.createGain","kind":"calls","metadata":{"unresolvedName":"ctx.createGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.frequency.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.frequency.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:gain.gain.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:gain.gain.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.connect(gain).connect","kind":"calls","metadata":{"unresolvedName":"osc.connect(gain).connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.connect","kind":"calls","metadata":{"unresolvedName":"osc.connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.start","kind":"calls","metadata":{"unresolvedName":"osc.start"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.stop","kind":"calls","metadata":{"unresolvedName":"osc.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:alert'","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:alert'","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:alert'","to":"external:[0, 0.12].forEach","kind":"calls","metadata":{"unresolvedName":"[0, 0.12].forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:alert'","to":"external:ctx.createOscillator","kind":"calls","metadata":{"unresolvedName":"ctx.createOscillator"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:alert'","to":"external:ctx.createGain","kind":"calls","metadata":{"unresolvedName":"ctx.createGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:alert'","to":"external:osc.frequency.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:alert'","to":"external:gain.gain.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:alert'","to":"external:gain.gain.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:alert'","to":"external:osc.connect(gain).connect","kind":"calls","metadata":{"unresolvedName":"osc.connect(gain).connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:alert'","to":"external:osc.connect","kind":"calls","metadata":{"unresolvedName":"osc.connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:alert'","to":"external:osc.start","kind":"calls","metadata":{"unresolvedName":"osc.start"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:alert'","to":"external:osc.stop","kind":"calls","metadata":{"unresolvedName":"osc.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:ctx.createOscillator","kind":"calls","metadata":{"unresolvedName":"ctx.createOscillator"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:ctx.createGain","kind":"calls","metadata":{"unresolvedName":"ctx.createGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.frequency.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:gain.gain.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:gain.gain.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.connect(gain).connect","kind":"calls","metadata":{"unresolvedName":"osc.connect(gain).connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.connect","kind":"calls","metadata":{"unresolvedName":"osc.connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.start","kind":"calls","metadata":{"unresolvedName":"osc.start"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.stop","kind":"calls","metadata":{"unresolvedName":"osc.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:tap'","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:tap'","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:tap'","to":"external:ctx.createOscillator","kind":"calls","metadata":{"unresolvedName":"ctx.createOscillator"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:tap'","to":"external:ctx.createGain","kind":"calls","metadata":{"unresolvedName":"ctx.createGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:tap'","to":"external:osc.frequency.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:tap'","to":"external:osc.frequency.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:tap'","to":"external:gain.gain.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:tap'","to":"external:gain.gain.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:tap'","to":"external:osc.connect(gain).connect","kind":"calls","metadata":{"unresolvedName":"osc.connect(gain).connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:tap'","to":"external:osc.connect","kind":"calls","metadata":{"unresolvedName":"osc.connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:tap'","to":"external:osc.start","kind":"calls","metadata":{"unresolvedName":"osc.start"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:tap'","to":"external:osc.stop","kind":"calls","metadata":{"unresolvedName":"osc.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:ping'","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:ping'","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:ping'","to":"external:ctx.createOscillator","kind":"calls","metadata":{"unresolvedName":"ctx.createOscillator"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:ping'","to":"external:ctx.createGain","kind":"calls","metadata":{"unresolvedName":"ctx.createGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:ping'","to":"external:osc.frequency.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:ping'","to":"external:gain.gain.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:ping'","to":"external:gain.gain.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:ping'","to":"external:osc.connect(gain).connect","kind":"calls","metadata":{"unresolvedName":"osc.connect(gain).connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:ping'","to":"external:osc.connect","kind":"calls","metadata":{"unresolvedName":"osc.connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:ping'","to":"external:osc.start","kind":"calls","metadata":{"unresolvedName":"osc.start"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:ping'","to":"external:osc.stop","kind":"calls","metadata":{"unresolvedName":"osc.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bubble'","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bubble'","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bubble'","to":"external:ctx.createOscillator","kind":"calls","metadata":{"unresolvedName":"ctx.createOscillator"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bubble'","to":"external:ctx.createGain","kind":"calls","metadata":{"unresolvedName":"ctx.createGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bubble'","to":"external:osc.frequency.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bubble'","to":"external:osc.frequency.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bubble'","to":"external:gain.gain.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bubble'","to":"external:gain.gain.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bubble'","to":"external:osc.connect(gain).connect","kind":"calls","metadata":{"unresolvedName":"osc.connect(gain).connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bubble'","to":"external:osc.connect","kind":"calls","metadata":{"unresolvedName":"osc.connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bubble'","to":"external:osc.start","kind":"calls","metadata":{"unresolvedName":"osc.start"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:bubble'","to":"external:osc.stop","kind":"calls","metadata":{"unresolvedName":"osc.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:pop'","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:pop'","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:pop'","to":"external:ctx.createOscillator","kind":"calls","metadata":{"unresolvedName":"ctx.createOscillator"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:pop'","to":"external:ctx.createGain","kind":"calls","metadata":{"unresolvedName":"ctx.createGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:pop'","to":"external:osc.frequency.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:pop'","to":"external:osc.frequency.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:pop'","to":"external:gain.gain.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:pop'","to":"external:gain.gain.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:pop'","to":"external:osc.connect(gain).connect","kind":"calls","metadata":{"unresolvedName":"osc.connect(gain).connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:pop'","to":"external:osc.connect","kind":"calls","metadata":{"unresolvedName":"osc.connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:pop'","to":"external:osc.start","kind":"calls","metadata":{"unresolvedName":"osc.start"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:pop'","to":"external:osc.stop","kind":"calls","metadata":{"unresolvedName":"osc.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:error'","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:error'","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:error'","to":"external:[0, 0.15].forEach","kind":"calls","metadata":{"unresolvedName":"[0, 0.15].forEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:error'","to":"external:ctx.createOscillator","kind":"calls","metadata":{"unresolvedName":"ctx.createOscillator"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:error'","to":"external:ctx.createGain","kind":"calls","metadata":{"unresolvedName":"ctx.createGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:error'","to":"external:osc.frequency.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:error'","to":"external:osc.frequency.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:error'","to":"external:gain.gain.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:error'","to":"external:gain.gain.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:error'","to":"external:osc.connect(gain).connect","kind":"calls","metadata":{"unresolvedName":"osc.connect(gain).connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:error'","to":"external:osc.connect","kind":"calls","metadata":{"unresolvedName":"osc.connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:error'","to":"external:osc.start","kind":"calls","metadata":{"unresolvedName":"osc.start"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:error'","to":"external:osc.stop","kind":"calls","metadata":{"unresolvedName":"osc.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:ctx.createOscillator","kind":"calls","metadata":{"unresolvedName":"ctx.createOscillator"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:ctx.createGain","kind":"calls","metadata":{"unresolvedName":"ctx.createGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.frequency.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.frequency.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:gain.gain.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:gain.gain.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.connect(gain).connect","kind":"calls","metadata":{"unresolvedName":"osc.connect(gain).connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.connect","kind":"calls","metadata":{"unresolvedName":"osc.connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.start","kind":"calls","metadata":{"unresolvedName":"osc.start"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:osc.stop","kind":"calls","metadata":{"unresolvedName":"osc.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:buzz'","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:buzz'","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:buzz'","to":"external:ctx.createOscillator","kind":"calls","metadata":{"unresolvedName":"ctx.createOscillator"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:buzz'","to":"external:ctx.createGain","kind":"calls","metadata":{"unresolvedName":"ctx.createGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:buzz'","to":"external:osc.frequency.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:buzz'","to":"external:gain.gain.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:buzz'","to":"external:gain.gain.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:buzz'","to":"external:osc.connect(gain).connect","kind":"calls","metadata":{"unresolvedName":"osc.connect(gain).connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:buzz'","to":"external:osc.connect","kind":"calls","metadata":{"unresolvedName":"osc.connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:buzz'","to":"external:osc.start","kind":"calls","metadata":{"unresolvedName":"osc.start"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:buzz'","to":"external:osc.stop","kind":"calls","metadata":{"unresolvedName":"osc.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:warning'","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:warning'","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:warning'","to":"external:ctx.createOscillator","kind":"calls","metadata":{"unresolvedName":"ctx.createOscillator"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:warning'","to":"external:ctx.createGain","kind":"calls","metadata":{"unresolvedName":"ctx.createGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:warning'","to":"external:osc.frequency.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"osc.frequency.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:warning'","to":"external:gain.gain.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:warning'","to":"external:gain.gain.exponentialRampToValueAtTime","kind":"calls","metadata":{"unresolvedName":"gain.gain.exponentialRampToValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:warning'","to":"external:osc.connect(gain).connect","kind":"calls","metadata":{"unresolvedName":"osc.connect(gain).connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:warning'","to":"external:osc.connect","kind":"calls","metadata":{"unresolvedName":"osc.connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:warning'","to":"external:osc.start","kind":"calls","metadata":{"unresolvedName":"osc.start"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:'builtin:warning'","to":"external:osc.stop","kind":"calls","metadata":{"unresolvedName":"osc.stop"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playBuiltinSound","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playBuiltinSound","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playBuiltinSound","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:getAudioContext","kind":"calls","metadata":{"unresolvedName":"getAudioContext"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playBuiltinSound","to":"external:ctx.resume().catch","kind":"calls","metadata":{"unresolvedName":"ctx.resume().catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playBuiltinSound","to":"external:ctx.resume","kind":"calls","metadata":{"unresolvedName":"ctx.resume"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playBuiltinSound","to":"external:ctx.createGain","kind":"calls","metadata":{"unresolvedName":"ctx.createGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playBuiltinSound","to":"external:masterGain.gain.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"masterGain.gain.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playBuiltinSound","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:volumeToGain","kind":"calls","metadata":{"unresolvedName":"volumeToGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playBuiltinSound","to":"external:masterGain.connect","kind":"calls","metadata":{"unresolvedName":"masterGain.connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playBuiltinSound","to":"symbol-name:synth","kind":"calls","metadata":{"unresolvedName":"synth"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playCustomSound","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playCustomSound","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playCustomSound","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:getAudioContext","kind":"calls","metadata":{"unresolvedName":"getAudioContext"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playCustomSound","to":"external:ctx.resume","kind":"calls","metadata":{"unresolvedName":"ctx.resume"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playCustomSound","to":"symbol-name:fetch","kind":"calls","metadata":{"unresolvedName":"fetch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playCustomSound","to":"external:response.arrayBuffer","kind":"calls","metadata":{"unresolvedName":"response.arrayBuffer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playCustomSound","to":"external:audioData.arrayBuffer","kind":"calls","metadata":{"unresolvedName":"audioData.arrayBuffer"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playCustomSound","to":"external:ctx.decodeAudioData","kind":"calls","metadata":{"unresolvedName":"ctx.decodeAudioData"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playCustomSound","to":"external:ctx.createBufferSource","kind":"calls","metadata":{"unresolvedName":"ctx.createBufferSource"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playCustomSound","to":"external:ctx.createGain","kind":"calls","metadata":{"unresolvedName":"ctx.createGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playCustomSound","to":"external:gainNode.gain.setValueAtTime","kind":"calls","metadata":{"unresolvedName":"gainNode.gain.setValueAtTime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playCustomSound","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:volumeToGain","kind":"calls","metadata":{"unresolvedName":"volumeToGain"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playCustomSound","to":"external:source.connect(gainNode).connect","kind":"calls","metadata":{"unresolvedName":"source.connect(gainNode).connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playCustomSound","to":"external:source.connect","kind":"calls","metadata":{"unresolvedName":"source.connect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playCustomSound","to":"external:source.start","kind":"calls","metadata":{"unresolvedName":"source.start"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playSound","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playSound","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playSound","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:isSoundSupported","kind":"calls","metadata":{"unresolvedName":"isSoundSupported"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playSound","to":"external:playCustomSound(customAudioData, volume).catch","kind":"calls","metadata":{"unresolvedName":"playCustomSound(customAudioData, volume).catch"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playSound","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playCustomSound","kind":"calls","metadata":{"unresolvedName":"playCustomSound"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playSound","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playSound","to":"external:soundId.startsWith","kind":"calls","metadata":{"unresolvedName":"soundId.startsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playSound","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:playBuiltinSound","kind":"calls","metadata":{"unresolvedName":"playBuiltinSound"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/soundPlayer.ts:","to":"external:console.warn","kind":"calls","metadata":{"unresolvedName":"console.warn"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/stringUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/stringUtils.ts:getInitials","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/stringUtils.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/stringUtils.ts:getInitials","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/stringUtils.ts:getInitials","to":"external:name.replace","kind":"calls","metadata":{"unresolvedName":"name.replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/stringUtils.ts:getInitials","to":"external:clean.split(' ').filter","kind":"calls","metadata":{"unresolvedName":"clean.split(' ').filter"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/stringUtils.ts:getInitials","to":"external:clean.split","kind":"calls","metadata":{"unresolvedName":"clean.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/stringUtils.ts:getInitials","to":"external:parts[0].slice(0, 2).toUpperCase","kind":"calls","metadata":{"unresolvedName":"parts[0].slice(0, 2).toUpperCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/stringUtils.ts:getInitials","to":"external:parts[0].slice","kind":"calls","metadata":{"unresolvedName":"parts[0].slice"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/stringUtils.ts:getInitials","to":"external:(parts[0][0] + parts[1][0]).toUpperCase","kind":"calls","metadata":{"unresolvedName":"(parts[0][0] + parts[1][0]).toUpperCase"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"external:vitest","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"external:expect(isTauri()).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isTauri()).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"external:expect(isTauri()).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isTauri()).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"external:expect(isTauri()).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isTauri()).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"symbol-name:afterEach","kind":"calls","metadata":{"unresolvedName":"afterEach"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"external:expect(isTauriMobile()).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isTauriMobile()).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauriMobile","kind":"calls","metadata":{"unresolvedName":"isTauriMobile"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"external:expect(isTauriMobile()).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isTauriMobile()).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauriMobile","kind":"calls","metadata":{"unresolvedName":"isTauriMobile"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"external:expect(isTauriMobile()).toBe","kind":"calls","metadata":{"unresolvedName":"expect(isTauriMobile()).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauriMobile","kind":"calls","metadata":{"unresolvedName":"isTauriMobile"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"symbol-name:it","kind":"calls","metadata":{"unresolvedName":"it"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"external:expect(extToMime('png')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(extToMime('png')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"symbol-name:extToMime","kind":"calls","metadata":{"unresolvedName":"extToMime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"external:expect(extToMime('jpg')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(extToMime('jpg')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"external:expect(extToMime('svg')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(extToMime('svg')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"external:expect(extToMime('mp3')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(extToMime('mp3')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"external:expect(extToMime('mp4')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(extToMime('mp4')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"external:expect(extToMime('xyz')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(extToMime('xyz')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"external:expect(extToMime('foo')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(extToMime('foo')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"external:expect(extToMime('png')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(extToMime('png')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"symbol-name:extToMime","kind":"calls","metadata":{"unresolvedName":"extToMime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"external:expect(extToMime('jpg')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(extToMime('jpg')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"external:expect(extToMime('svg')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(extToMime('svg')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"external:expect(extToMime('mp3')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(extToMime('mp3')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"symbol-name:extToMime","kind":"calls","metadata":{"unresolvedName":"extToMime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"external:expect(extToMime('mp4')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(extToMime('mp4')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"external:expect(extToMime('xyz')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(extToMime('xyz')).toBe"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"symbol-name:expect","kind":"calls","metadata":{"unresolvedName":"expect"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"symbol-name:extToMime","kind":"calls","metadata":{"unresolvedName":"extToMime"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.test.ts:","to":"external:expect(extToMime('foo')).toBe","kind":"calls","metadata":{"unresolvedName":"expect(extToMime('foo')).toBe"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauriMobile","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauriMobile","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauriMobile","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauriMobile","to":"external:/Android|iPhone|iPad|iPod/i.test","kind":"calls","metadata":{"unresolvedName":"/Android|iPhone|iPad|iPod/i.test"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:getDesktopPlatform","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:getDesktopPlatform","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:getDesktopPlatform","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauri","kind":"calls","metadata":{"unresolvedName":"isTauri"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:getDesktopPlatform","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:isTauriMobile","kind":"calls","metadata":{"unresolvedName":"isTauriMobile"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:getDesktopPlatform","to":"external:navigator.userAgent.toLowerCase","kind":"calls","metadata":{"unresolvedName":"navigator.userAgent.toLowerCase"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:getDesktopPlatform","to":"external:ua.includes","kind":"calls","metadata":{"unresolvedName":"ua.includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:usesCustomDesktopTitlebar","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:usesCustomDesktopTitlebar","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:usesCustomDesktopTitlebar","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:getDesktopPlatform","kind":"calls","metadata":{"unresolvedName":"getDesktopPlatform"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:extToMime","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/src/utils/tauri.ts:extToMime","kind":"defines"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts","to":"external:vite","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts","to":"external:@vitejs/plugin-react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts","to":"external:@tailwindcss/vite","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts","to":"external:node:fs","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:katexWoff2Only","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:katexWoff2Only","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:katexWoff2Only","to":"external:id.split('?')[0].replace","kind":"calls","metadata":{"unresolvedName":"id.split('?')[0].replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:katexWoff2Only","to":"external:id.split","kind":"calls","metadata":{"unresolvedName":"id.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:katexWoff2Only","to":"external:normalizedId.endsWith","kind":"calls","metadata":{"unresolvedName":"normalizedId.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:katexWoff2Only","to":"external:code.replace","kind":"calls","metadata":{"unresolvedName":"code.replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:transform","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:transform","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:transform","to":"external:id.split('?')[0].replace","kind":"calls","metadata":{"unresolvedName":"id.split('?')[0].replace"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:transform","to":"external:id.split","kind":"calls","metadata":{"unresolvedName":"id.split"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:transform","to":"external:normalizedId.endsWith","kind":"calls","metadata":{"unresolvedName":"normalizedId.endsWith"}},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:transform","to":"external:code.replace","kind":"calls","metadata":{"unresolvedName":"code.replace"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:manualChunks","kind":"contains"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts","to":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:manualChunks","kind":"defines"},{"from":"D:/Documents/Github/PiAgentUI/PiAgentUi/vite.config.ts:manualChunks","to":"external:id.includes","kind":"calls","metadata":{"unresolvedName":"id.includes"}},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/vitest.config.ts","to":"external:vitest/config","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/vitest.config.ts","to":"external:@vitejs/plugin-react","kind":"imports"},{"from":"file:D:/Documents/Github/PiAgentUI/PiAgentUi/vitest.config.ts","to":"external:@tailwindcss/vite","kind":"imports"}]} \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..7397700 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,5 @@ +dist +node_modules +public/material-icons +src-tauri/target +coverage diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..337e2a7 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,7 @@ +{ + "semi": false, + "singleQuote": true, + "trailingComma": "all", + "arrowParens": "avoid", + "printWidth": 120 +} diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000..b8595ca --- /dev/null +++ b/.tool-versions @@ -0,0 +1,2 @@ +node 22.22.0 +rust 1.85.0 diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..0bb870f --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,796 @@ +# Changelog + +## [v0.6.10] - 2026-05-17 + +- fix: refresh sidebar child session links (a49908a) +- ci: deploy pages from dev (bc50843) +- fix: route permission replies through session (75bd8ac) +- fix: avoid iOS toolbar bottom gap (d880fac) +- fix: keep provider enabled for visible models (2462adf) +- fix: show detailed completion time on hover (9ca1ab6) + +## [v0.6.9] - 2026-05-16 + +- fix(terminal): correct clipboard paste behavior (bf6f902) +- ci(docker): add image workflow guardrails (da80d45) +- fix(docker): avoid qemu frontend builds (2d4d00b) + +## [v0.6.8] - 2026-05-16 + +- fix(diff): keep split word diff text themed (53e1d9a) +- feat(docker): add optional host backend access (279ac15) +- fix(message): preserve aborted messages with content (86fd11f) + +## [v0.6.7] - 2026-05-15 + +- fix(input): prevent IME confirmation from sending messages (5f4e0bb) +- feat(terminal): add scoped clipboard keybindings (2f8a933) + +## [v0.6.6] - 2026-05-13 + +- fix(session): 修复 PR #90 的子目录加载竞态并理顺范围刷新语义 (5360b59) +- fix(session): 目录切换时合并活动会话刷新状态 (4aca25d) +- feat(file-explorer): 按目录恢复文件树展开状态 (e29498d) + +## [v0.6.5] - 2026-05-10 + +- ui: show bash working directory (48d5b28) +- fix: skip shiki fallback for unsupported languages (d4ea3be) + +## [v0.6.4] - 2026-05-04 + +- fix: keep delete change bars continuous (843d861) + +## [v0.6.3] - 2026-05-04 + +- ui: simplify tool diff result headers (a5889a5) +- build: reduce bundled asset size (3e4aaa2) +- fix: align wrapped diff empty textures (d4b187b) +- fix: smooth split session loading (c4f3bb7) + +## [v0.6.2] - 2026-05-04 + +- fix: smooth wrapped diff scrolling (e46d0e5) +- fix: center collapsed diff buttons on mobile (9c1c6ef) +- fix: keep empty diff buffer textures aligned (3b70696) + +## [v0.6.1] - 2026-05-03 + +- fix: align readonly code gutters with diffs (b9a15d3) +- fix: polish diff gutter and separators (2568070) +- fix: keep chat bottom spacing comfortable (bc42873) +- fix: tighten chat surface bottom spacing (f47dedb) +- fix: PWA safe-area double padding on iOS (0b4fa33) + +## [v0.6.0] - 2026-05-03 + +- test: update diff viewer mock for shared data (13d7c04) +- fix: stabilize preview tab hover width (f2d0564) +- feat: improve file and change previews (7ae977d) +- fix: restore scrolling for inline code previews (09d3e96) +- perf: share diff data with fullscreen viewer (e3ceef8) +- perf: hoist diff viewer data across view modes (4467730) +- fix: improve readonly code selection contrast (4955f56) +- fix: strengthen empty diff buffer texture (849445f) +- fix: add Pierre-style empty diff buffers (16eec59) +- fix: adapt line number gutter width (d37f112) +- fix: center diff separator icons (db857dc) +- fix: port Pierre diff separator styling (789dcf2) +- fix: add Pierre-style diff separator expansion (1ce0d3a) +- fix: refine handwritten diff collapsed separators (ab9c8a6) +- fix: mask readonly code gutters (0a41e2a) +- refactor: extract readonly codemirror view (0b81235) +- fix: refine code search responsive layout (fc12a33) +- fix: anchor code preview search panel (00244e3) +- fix: polish code preview search panel (cd4e8d1) +- fix: smooth syntax theme switching (1f079e1) +- fix: use complete github shiki themes (2fc89fb) +- fix: align shiki theme with github syntax colors (e4c171a) +- feat: add adaptive shiki theme (6cb720e) +- feat: use codemirror for code previews (487cea3) +- fix: optimize sidebar transition rendering (06fe9a2) +- fix: limit message offscreen unmounting to resize (3986e5f) + +## [v0.5.20] - 2026-05-01 + +- fix: preserve git subdirectory projects (e9646b9) + +## [v0.5.19] - 2026-04-29 + +- fix: tighten sidebar search spacing (8b76cb2) +- fix: align desktop titlebar and dialog layout (f5800ba) +- fix: align dialog overlay styling (fe3a3cf) +- fix: unify right panel tab styling (ca6d697) +- fix: align command palette styling (dc67f38) +- fix: polish sidebar popover styling (da633ea) +- fix: preserve route session during refresh (9d3f0a0) +- fix: prevent terminal reconnect loops on global switch (5d0aca2) + +## [v0.5.18] - 2026-04-29 + +- fix: tighten pane focus and interaction regressions (c800e44) +- fix: prevent route sync from overwriting focused panes (fa44f13) + +## [v0.5.17] - 2026-04-28 + +- fix: keep session actions tied to visible focus (0e16597) +- ci: update GitHub artifact actions (d9e49c6) + +## [v0.5.16] - 2026-04-28 + +- fix: hide session actions after mouse selection (1d6b4be) +- ci: upgrade GitHub Actions Node runtimes (ff10d7b) + +## [v0.5.15] - 2026-04-28 + +- fix: restore model selector typography scaling (121b762) + +## [v0.5.14] - 2026-04-28 + +- fix: close the remaining review regressions (58a03dc) +- fix: clear lint regressions and selector focus artifacts (1b85707) +- fix: preserve injected desktop titlebar controls (7e60acf) +- fix: reveal session row actions on keyboard focus (a568535) +- fix: ignore hidden controls during menu dismissal (2db0cd0) +- fix: normalize menu focus target detection (c981584) +- fix: harden menu close paths against hidden targets (c1ac600) +- fix: make portal menus inert only after close (f82b285) +- fix: route tab exits through real control order (ce3ad2d) +- fix: keep selector focus stable during keyboard actions (6fbefae) +- fix: finish keyboard flows for selection popups (110cb06) +- fix: complete keyboard navigation for selection menus (ce247ee) +- fix: stabilize stacked dialog and toolbar menu focus (3d3c542) +- fix: align keyboard paths across dialogs and selectors (8f7b01f) +- fix: tighten follow-up focus and visibility behavior (7618593) +- fix: close the remaining interaction accessibility gaps (f634223) +- fix: polish remaining high-traffic control semantics (5c88ad0) +- fix: resolve remaining session and dialog correctness issues (7bde507) +- fix: tighten menu and diff accessibility (399471d) +- fix: finish button semantics in project controls (c05d5c9) +- fix: improve semantic buttons in settings and sidebar (3a1b5bf) +- fix: harden session updates and menu interactions (1d673df) +- fix: update context usage immediately after compaction (df01835) + +## [v0.5.13] - 2026-04-27 + +- fix: restore drag and drop in secondary desktop windows (36d489e) + +## [v0.5.12] - 2026-04-27 + +- fix: create the Android main window explicitly (1c20510) + +## [v0.5.11] - 2026-04-26 + +- fix: defer desktop windows until the first frame is ready (1b1e186) +- fix: remove titlebar separator that misaligns with sidebar border (ed14752) +- fix: prevent overlay sidebars from being obscured by desktop titlebar (8b20d80) +- feat: add titlebar actions — back/forward, open project, settings, new window (65abc23) +- fix: keep fullscreen viewers below desktop chrome (40e1ef4) + +## [v0.5.10] - 2026-04-26 + +- feat: add manual terminal labels and restore state (b42a90d) +- fix: align terminal PTY handling with upstream (093f2f2) +- fix: avoid macOS traffic light overlap in fullscreen headers (a5a3554) + +## [v0.5.9] - 2026-04-23 + +- fix: harden live tool timing updates (d6c963a) +- feat: resolve issue #74 running tool durations (54490f3) +- feat: store calibrated server time locally (f35c4ab) +- feat: handle server.connected event timestamps (0e77075) +- refactor: extract shared ticking clock hook (1b0c626) + +## [v0.5.8] - 2026-04-21 + +- fix: polish sidebar session and notification layout (51b22f2) +- refactor: modularize settings backup snapshots (a9d59c6) +- fix: reset project dialog state on reopen (b344278) +- feat: add settings backup import and export (93ad2ab) +- fix: rebalance obsidian surface contrast (0837734) +- fix: separate system notification settings from sound config (ccc80e4) +- feat: add separate system notification controls (3236d14) +- feat: add Dracula theme preset (7623377) +- fix: persist model selection across session restore (d8eb318) +- fix: shrink launcher icon mark further for masked shells (4f3e99f) +- fix: reduce app icon mark scale and drop custom Android splash (2552342) +- fix: remove unsupported Android splash attr from canary build (21ea11a) +- fix: shrink Android app icon foreground and add native splash theme (8325bfc) +- feat: redesign app icons for desktop and Android (527d423) + +## [v0.5.7] - 2026-04-19 + +- fix: anchor toasts to the content area beneath desktop titlebar (fe15280) + +## [v0.5.6] - 2026-04-19 + +- chore: sync Tauri app icons from web opencode.svg (f792218) +- polish: slim desktop titlebar down to minimal app chrome (375e8d1) +- feat: add platform-aware desktop titlebar foundation (43fa2da) +- fix: prevent model selector from jumping to wrong provider on split (5b33360) + +## [v0.5.5] - 2026-04-18 + +- fix: remove redundant *Single i18n keys — let i18next handle count=1 natively (9385ef8) +- style: match pane drop highlight radius to pane shell (rounded-lg) (f8acac2) +- feat: enable drag-to-split on active session list items (ac20b7b) + +## [v0.5.4] - 2026-04-18 + +- polish: pane drop overlay — drop text labels, harden edge cases (2be4c13) +- perf: keep pane drop overlay state out of ChatPane re-render path (17025ad) +- feat: drag sessions onto chat pane to split or replace (e413864) +- fix: add keyboard shortcuts to question dialogs (send keybinding to submit, Escape to skip) (dc83e0e) +- fix: narrow shell tool detection to exact 'sh' match across all matchers (f534454) +- Update zh-CN usage stats labels to English (074878e) +- fix: distinguish file writes in tool summary (2f25e93) +- fix: refine message tool summary wording (1d41542) +- fix: guard session error without sessionID (2166183) + +## [v0.5.3] - 2026-04-17 + +- style: use distinct icons for settings tabs (9b2adb1) +- fix: sanitize exported CSS snippet filenames safely (139725c) +- fix: adapt token usage ring track to all themes (75f2ad4) +- refactor: derive theme previews from preset tokens (720c426) +- feat: add reusable CSS overrides for themes (eba9d1d) +- refactor: split settings into agent and workspace tabs (b38ac6b) +- feat: add configurable message completion timestamps (2f01c56) +- feat: add model visibility settings (731efdd) +- style: improve glass effect - thicker base, blur(22px), saturate(200%) (bd27ce1) +- feat(themes): 新增Sakura、Ocean、Obsidian三款预设主题 (bfa449c) +- feat(settings): 添加自定义CSS模板管理功能 (79db9f4) + +## [v0.5.2] - 2026-04-15 + +- test: fix streamed event mock typing (92627ee) +- fix: preserve UTF-8 text in streamed markdown updates (8d89ce4) +- feat: add release update checks with about entry (closes #33) (e29a842) +- fix: preserve files and changes panel state across tab switches (closes #63) (3d57dc9) +- fix: allow pin toggle on selected model in desktop model selector (96e0ab2) +- fix: remove mobile 16px font-size override so input matches message stream (9e1eb6e) + +## [v0.5.1] - 2026-04-13 + +- feat: show agent and model name in step finish info (closes #61) (7299319) +- fix: restore line-height lost during font system migration (3d83f3b) +- fix: split diff view losing syntax highlighting when word diff is active (9f281ec) +- feat: tune default font sizes to match opencode official UI proportions (29c6f76) +- feat: unified typography system with CSS variables and per-axis font scale sliders (4533b15) + +## [v0.5.0] - 2026-04-13 + +- feat: add keep-screen-awake toggle in appearance settings (Wake Lock API) (3a6a13c) +- fix: update inline code test to match simplified style (no border/bg) (edc4beb) +- fix: simplify inline code style and add persistent underline to links (7f2cd73) +- fix: allow share URL to scroll horizontally on mobile (d049ce0) +- fix: ensure bottom padding in PWA standalone for devices without Home Indicator (eb8682c) +- fix: use replaceState on mobile to prevent session history stacking (ceed83d) + +## [v0.4.9] - 2026-04-11 + +- fix: prevent model restoration from overriding user selection during streaming (0c799e3) +- fix: return 404 for /api on frontend-only image (b07a30e) +- fix: align UI hook dependencies with live state (63a2b87) +- refactor: remove dead UI cleanup leftovers (5b82694) +- fix: remove unused resolveAlias function in shiki module (81d5fdb) +- perf: lazy-load shiki languages and optimize Tauri release profile (1be34e0) +- fix: PTY WebSocket auth fails behind reverse proxy (4bbb3c5) +- fix: prevent session fetch storm on SSE reconnect in SessionContext (ae26e6c) +- refactor: unify SSE and PTY into a single transparent bridge (73e638f) +- fix: use tungstenite message variants for PTY bridge (6210294) +- fix: bridge Tauri mobile PTY through native client (e33bde5) + +## [v0.4.8] - 2026-04-10 + +- feat: queue follow-up messages behind active turns (90756e3) +- fix: GPT apply_patch diff not rendering and error messages invisible in chat (6d6f81d) +- fix: align prompt history cursor navigation (4dd2bf4) +- fix: tighten session alerts and mobile code copy (8e02c0a) + +## [v0.4.7] - 2026-04-09 + +- fix: update command test to mock sdk instead of removed http module (f7521bc) +- fix: patch sdk migration review findings (e45b2b5) +- refactor: collapse remaining sdk helper types (c9d2a74) +- refactor: align remaining api models with sdk (f9c9272) +- refactor: align user message model fields with sdk (e427ccd) +- refactor: align event types with sdk (826cd49) +- refactor: tighten message part guards (b83098f) +- refactor: align tool part types with sdk (cecab44) +- refactor: align event payload adapters with sdk (d9ffe50) +- refactor: tighten sdk adapters and message conversions (a5aa326) +- refactor: align config and skill types with sdk (4eed10c) +- refactor: trim remaining sdk type wrappers (bfa0bde) +- refactor: collapse API types onto sdk definitions (e5e7305) +- refactor: replace API type wrappers with sdk aliases (89d42ac) +- fix: finish sdk migration cleanup (a90d0aa) +- fix: align API layer with official opencode sdk (ae4308c) +- fix: eliminate UI flicker, merge duplicate effects, avoid object mutation (a6e4cc1) +- fix: stabilize git workspace recents and worktree actions (abd0ee5) + +## [v0.4.6] - 2026-04-07 + +- fix: keep active child sessions visible across projects (9d8a725) +- fix: polish folder recents load more control (cbb1d59) +- fix: fade changes stats as one line (f05f8af) +- fix: compact changes panel header (231904f) + +## [v0.4.5] - 2026-04-06 + +- fix: refine changes menu spacing (ad48921) +- feat: sync file explorer status with change modes (b655d50) +- fix: align undo state with visible messages (752cae6) +- fix: clear command drafts after dispatch (4851435) +- fix: show history compacted messages (cc7d980) +- fix: simplify changes panel mode switch (ceb721b) +- feat: add git and branch review modes (71a8c0d) +- feat: add git setup and current-turn session changes (769f3ab) + +## [v0.4.4] - 2026-04-06 + +- fix: keep edit mode checkboxes compact on mobile (3d7c342) +- feat: support shift-select in recents edit mode (6181f5f) +- style: refine edit mode selection visuals (c7ca524) +- feat: add batch edit mode for sidebar recents and rewrite folder drag-sort (a1326d5) +- fix: persist panel layout and terminal positions (e1aeea8) + +## [v0.4.3] - 2026-04-05 + +- fix: improve pane navigation and sidebar drag affordances (a3dd889) +- fix: keep input focus after sending (161e7b8) +- fix: render bash tool commands inline (b6a6db2) +- fix: remove sidebar footer divider (d6e59b9) +- fix: prefer pointer outline interaction on hybrid devices (a20ebc0) + +## [v0.4.2] - 2026-04-03 + +- fix: switch folder recents to the clicked directory (d579407) +- fix: support sticky ctrl+alt combos in mobile terminal keyboard (4d9c5b3) +- fix: use tauri plugin-opener for external links in terminal and MCP auth (9b80bf3) +- fix: add background tint and equal spacing to plain code block copy button (102b5d4) +- fix: prevent global mode from being overridden by pane directory sync (b7a665c) + +## [v0.4.1] - 2026-04-03 + +- fix: disable split-pane entry points on small touch screens (3c1a607) + +## [v0.4.0] - 2026-04-03 + +- fix: align request dialogs with the input dock width (59b5962) +- perf: fix memo-defeating patterns in message rendering pipeline (f678d36) +- fix: stabilize ChatPane tree structure across fullscreen toggle (79b28f1) +- fix: preserve DOM across pane fullscreen toggle and hide split button in fullscreen (13c7f5e) +- fix: keep split resizing off the render path (750dd50) +- fix: normalize panel PTY restoration and dedupe terminal tabs (d1b4565) +- feat: add pane fullscreen mode and refine split header actions (cf959e0) +- fix: remove split container transition side effects (5332f61) +- fix: stabilize split-pane header interactions (6631e01) +- refactor: streamline split-pane chrome and transitions (cdb4a8b) +- fix: avoid first-frame tool expansion flicker on session switch (a71dea2) +- refactor: finish pane-first cleanup and auto-approve wiring (8af9e57) +- fix: unify router state and focused-pane directory sync (2cbb177) +- refactor: remove legacy focused-session compatibility layer (e4d0616) +- refactor: unify chat shell around focused pane state (e45dd17) +- fix: sidebar selectedSessionId follows focused pane in split mode (a82abaf) +- fix: isolate per-pane state — fullAutoMode, agent selection, session eviction, clearSession (18bc9af) +- fix: prevent duplicate SSE subscriptions in split-pane mode (e15ad08) +- feat: add split-pane UI with full-parity ChatPane, SplitContainer, PaneHeader, SplitToolbar (3af6b14) +- refactor: parameterize useChatSession for multi-instance support (1b37d8d) +- refactor: make session infrastructure multi-instance ready (e0ce47d) +- fix: hide assistant fork action when no text can be copied (f734462) +- fix: keep composer action blur out of transform layers (6eb3bf0) + +## [v0.3.8] - 2026-03-31 + +- feat: add fullscreen button to file preview and changes diff preview (9e4ca2d) +- feat: enable fork from assistant messages to preserve AI replies (f2a0079) +- refactor: unify floating component shadows to a consistent two-tier system (shadow-sm / shadow-lg) (1cf526e) +- chore: upgrade dependencies (vite 8, i18next 26, lucide-react 1.x, etc.) (41498bf) +- fix: adjust ModelSelector padding so scrollbar doesn't overlap list content (e7d6e4f) +- refactor: unify ModelSelector into a single component for both PC and mobile (5b81638) +- fix: sync session title to messageStore on SSE update for real-time header refresh (b74bb6a) +- fix: align mobile header toggle spacing (1052826) + +## [v0.3.7] - 2026-03-28 + +- fix: remove double border on attachment meta when no content preview (d29a2f4) +- fix: hide floating actions (undo/redo/permission) during todo panel swap (a3a7231) +- fix: apply glass effect to mobile collapsed capsule (2075818) +- fix: fallback fetch after send to prevent missing user message on SSE drop (e2138df) +- fix: skip overlay scrollbar on elements with no-scrollbar class (506cf24) +- feat: child sessions displayed under parent in sidebar with toggle for always-show (97ce7d8) +- feat: add diff toggle for folder recents (a1ed95e) +- fix: wire compact model selector to global shortcut (d14fb42) + +## [v0.3.6] - 2026-03-28 + +- test: add chatViewport mock to InputBox and InputToolbar tests (7eb80ac) +- fix: remove unused let binding in overlayScrollbar (ab9eaba) +- feat: add horizontal overlay scrollbar support (ad8d21d) +- refactor: rewrite outline index with visual config, focus-based interaction and entry windowing (18bccf9) +- fix: align compact model selector trigger (480dd04) +- refactor: centralize chat viewport state (8512fcb) +- fix: improve coarse pointer support in desktop UI (4cfc8e5) + +## [v0.3.5] - 2026-03-27 + +- fix: use previous stable tag for release changelog (b00cff7) +- fix: load chat header title from session detail (0b8443c) +- fix: stabilize chat history loading scroll behavior (87190c6) +- fix: animate todo panel swap without layout jank (ca8a672) +- feat: add frosted glass toggle in appearance settings (662070c) +- fix: apply overlay scrollbar to textarea, hide all native scrollbars (5dce51f) +- fix: frosted glass not rendering in Tauri production build & overlay scrollbar positioning (96e72c1) +- feat: replace native scrollbars with global overlay scrollbar system (da09781) +- refactor: simplify @ and / menus with cleaner layout and unified style (f5bddec) +- refactor: redesign ModelSelector for glass aesthetic (33a9dd2) +- refactor: unify frosted glass system with CSS utility classes (0e459f9) +- style: introduce frosted glass effect to all floating surfaces (ae10178) +- fix: remove extra padding from message toggles (4eb916a) + +## [v0.3.4] - 2026-03-24 + +- fix: align markdown copy buttons with header text (80e59ce) +- fix: render markdown images without streamdown wrapper controls (650851f) +- fix: remove code size-based rendering limits (42171e7) +- fix: remove contain-intrinsic-size that caused scroll jank (7942144) + +## [v0.3.3] - 2026-03-24 + +- fix: resolve TypeScript errors in MarkdownRenderer for release (1abcdf1) +- fix: exclude task tool from compact inline permission mode (5f39aff) +- style: remove left accent line from TaskRenderer, restore badge status colors (1cb6044) +- style: refine TaskRenderer visual hierarchy (263b74b) +- fix: show tool description from input while running, not just after completion (b65d16e) +- fix: reduce excessive right padding in expanded reasoning content (885668d) +- fix: panel dropdown menu hover overflow — use inset padding with rounded items (02653bf) +- fix: table copy button pinned outside scroll, mobile always-visible copy buttons (2cdef17) +- style: unify tool output header height to h-8 (32px) (c566b1a) +- style: unify message flow border-radius to a tighter 3-tier system (4a8a89f) +- refactor: redesign markdown code blocks, tables, and inline code styles (11f6222) + +## [v0.3.2] - 2026-03-24 + +- fix: align fullscreen diff test mocks with typed children (fdf1a74) +- fix: restore release validation after fullscreen refactor (ef2d755) +- fix: adjust outline index spacing for visual balance (fb98097) +- refactor: unify fullscreen components into generic FullscreenViewer (9e6d8ed) +- refactor: redesign settings UI with section-based layout and cleaner primitives (478351a) + +## [v0.3.1] - 2026-03-23 + +- fix: unify chevron arrow direction - collapsed points right, expanded points down (3557e5a) +- feat: compact inline permission - hide duplicate content when tool body already renders (63d571b) +- refactor: redesign descriptive steps summary - merge categories, per-category errors, truncation (870f490) +- fix: move diff stats next to title and remove exit code from descriptive steps (74e69c0) +- fix: deferred permission unmount and multi-select question answer parsing (a8dc9bd) +- fix: auto-expand readable tools that finish instantly in immersive mode (06dd4d4) + +## [v0.3.0] - 2026-03-22 + +- fix: lint warnings, error tool diff stats, descriptive steps partial error coloring (ea53836) +- feat: add diff stats summary to descriptive steps, fix write tool diff display (ce29807) +- fix: immersive mode keeps non-readable tool groups collapsed even during execution (be61de2) +- fix: resolve lint errors and remove unused eslint-disable directives (6037d19) +- feat: add immersive mode with smart tool expand/collapse (0d4252d) +- fix: skip QuestionRenderer when user dismissed or error (2029584) +- feat: add QuestionRenderer with InlineQuestion-style read-only answered view (207f0c6) +- fix: allow long bash commands to wrap in terminal view (8a7ddfd) +- simplify: BashRenderer remove buttons, click command to copy, inline exit code (72186b5) +- refactor: BashRenderer with fixed bottom bar, exit code, fullscreen, mobile-friendly buttons (cb7bb70) +- fix: restore height limit and fullscreen button in compact mode (8f8689d) +- feat: add BashRenderer with terminal style, Shiki highlighting, ANSI color support (856d74d) +- feat: descriptive steps default collapsed, show output status on tool row (b25a0f2) +- refactor: unify InlinePermission with tool output style, remove unused inline variant (ac510d7) +- feat: add compact tool output mode (hide input, no collapse, no height limit) (1036133) +- feat: add descriptive tool steps mode (d7e153f) +- refactor: remove ambient tool mode and make inline requests opt-in (06034a2) + +## [v0.2.10] - 2026-03-21 + +- feat: restore forked prompts in the composer (0792cf6) +- fix: keep folder recents aligned with live updates (a0c8899) +- fix: improve long duration formatting (62e6d94) + +## [v0.2.9] - 2026-03-19 + +- fix: preserve custom audio when switching to builtin sounds (57119da) +- fix: resolve all eslint warnings across codebase (4b31da3) +- feat: add notification sound system with per-event configuration (b6019e2) +- perf: defer offscreen chat message rendering (52d8ba8) +- refactor: unify file and changes preview panels (9f315d8) + +## [v0.2.8] - 2026-03-18 + +- fix: wrap panel tab label case blocks (d353b80) +- feat: expand right panel resize range (3e67623) +- feat: add tabbed session changes workspaces (ace0259) +- feat: add tabbed file preview workspaces (ffad629) +- fix: stabilize mobile terminal toolbar layout (1eb23b7) +- feat: refine mobile terminal extra keys behavior (6e04254) +- feat: add mobile extra keys toolbar for terminal (Termux-style) (2b185ac) +- feat: show collapsed folder activity status (0bd1378) +- feat: mark completed sessions as unread in recents (90cf8c3) + +## [v0.2.7] - 2026-03-18 + +- feat: add markdown reasoning display mode (20fa476) +- fix: avoid action overlap in folder recents on mobile (83b40b9) +- feat: animate folder recents expansion (1b8ea13) +- fix: preserve folder recents expansion across tab switches (058c289) +- fix: limit streaming layout animation to bottom-follow mode (95c6aca) +- fix: restore reasoning thinking shimmer transition (5c631c8) +- feat: refine reasoning markdown presentation (71a012a) +- fix(chat): extract formatDuration to shared formatUtils (c405092) +- fix(chat): preserve aborted turn durations (13633fb) +- feat: add diff gutter style setting (markers vs change bars) (4c5e7b8) +- fix(i18n): improve permission dialog labels for request/rule clarity (e3730d5) +- refactor: replace react-markdown with Streamdown for streaming-optimized markdown rendering (fcf3307) +- refactor: extract useResponsiveMaxHeight hook for shared viewport-aware sizing (1993eb8) +- fix: make ContentBlock maxHeight responsive to viewport size (b584071) +- fix: resolve drag-to-reorder race condition causing stale closures (b08a763) + +## [v0.2.6] - 2026-03-17 + +- refactor: redesign folder recents with drag-to-reorder and compact session items (88b4139) +- fix: resolve bugs introduced by Python-to-Rust router migration (335b82e) +- refactor: migrate gateway router from Python to Rust (290087f) +- Feature: Add ability for router to read config from environment variables (bddc46b) +- refactor: create new Rust project opencodeui-router (dd96377) +- Update image previews in README.md (be84586) +- fix: 服务器编辑/删除按钮始终可见 (0037a17) + +## [v0.2.5] - 2026-03-16 + +- fix: 修复胶囊按钮和弹窗 header 图标与文字对齐 (a65e34e) +- fix: 工具 icon 光晕不再被父容器裁切 (c946f19) +- fix: 移动端设置 tab 选中态被 overflow 裁切 (027fcf9) +- refactor: 设置界面优化 — 修复双滚动条、服务器编辑/删除确认 (ec75fad) +- fix(i18n): 保留开发者工具常见英文术语不翻译 (f4a6022) +- fix(i18n): 修正中文翻译质量 (f2bd269) +- feat: add full i18n support with react-i18next (en + zh-CN) (bcd9850) + +## [v0.2.4] - 2026-03-16 + +- fix: 会话级 Full Auto 恢复原有行为 — 只在当前所在页面的 session 生效,切走后不再自动放行 (e98bd4e) +- fix: Full Auto 全局模式在 SSE 事件层拦截,确保非当前会话的权限请求也能自动放行 (1046837) +- feat: Full Auto 三态模式 — 单击循环 off/会话级(黄)/全局(红),会话级只放行当前会话,全局放行所有,纯内存刷新即清 (db95fc7) +- fix: 去掉 steps header 入场动画,保持与其他元素一致不做特殊处理 (1e725a5) +- fix: 虚拟滚动横向滚动条修复 — 去掉 probe 元素改用 scrollWidth 历史最大值追踪,SplitDiffView proxy scrollbar 加 gutter 占位对齐 (beee631) + +## [v0.2.3] - 2026-03-15 + +- fix: probe 最长行选取改用 monoDisplayWidth 估算渲染宽度,CJK/全角字符按双倍计,修复含中文注释时横向滚动不到位 (d1fb35a) +- Revert "fix: probe 元素去掉 overflow:hidden 修复横向滚动不到位 — hidden 在两个方向截断内容导致 scrollWidth 偏小" (0e5353f) +- fix: probe 元素去掉 overflow:hidden 修复横向滚动不到位 — hidden 在两个方向截断内容导致 scrollWidth 偏小 (c9788fc) +- fix: lint warnings — ref 写入移入 useEffect,CodePreview 提取 tokens 避免 render 期间读 ref,修复 CodePreview 测试,清理多余依赖和 eslint-disable (96955f7) +- fix: 消除胶囊⇄输入框切换闪烁 — FloatingActions 改为同一 DOM 切换定位避免 remount,胶囊去掉入场动画和防抖回归纯 UI (bc3cc0c) +- fix: 移动端胶囊⇄输入框过渡优化 — 胶囊退场不延迟避免与输入框重叠闪烁,收起方向加 120ms 防抖消除滚动边界抖动 (4060e83) +- refactor: 统一动画体系 — UndoStatus 去自带动画改由 PresenceItem 控制,CollapsedCapsule 从 CSS animate-in 换成 usePresence,PresenceItem 加 shrink-0 防挤压,清理 CSS 死代码 (5106ac0) +- fix: probe 元素精确撑开 scrollWidth 修复横向滚动不到位,去掉 backdrop-blur (0f3b764) +- Revert "fix: 代码预览/diff 横向滚动重构 — CodePreview/UnifiedDiffView 改原生滚动+sticky gutter,SplitDiffView 用 probe 元素精确撑宽,去掉 backdrop-blur" (9d12d72) +- fix: 代码预览/diff 横向滚动重构 — CodePreview/UnifiedDiffView 改原生滚动+sticky gutter,SplitDiffView 用 probe 元素精确撑宽,去掉 backdrop-blur (9e37646) +- feat: usePresence hook + 浮动按钮/权限框/提问框入场退场动画 — 命令式 animate() 零额外 bundle (fb8c59f) +- fix: 消息流底部间距增大,为浮动按钮预留空间 (7f32fa2) +- fix: 删除 Output 的 Running... 文字,Input/Output spinner 统一无文字对齐 (e8c409e) +- fix: 单工具调用始终 compact 布局,消除流结束时的缩进跳变 — SmoothHeight 平滑过渡 + steps header 入场动画 (031502f) +- fix: 代码预览和 diff 行号背景色统一 — gutter 去掉硬编码背景,继承父容器颜色 (9ef8223) + +## [v0.2.2] - 2026-03-15 + +- ci: 恢复 codegen-units=1 减小产物体积,Rust cache 按平台隔离,精简工作流 (5018e3b) +- chore: 清理 suppressAutoScroll 死代码 (d47085e) +- fix: loadMore 不跳变 — 去掉 inner wrapper,消息反序直接作为 flex 子元素,prepend 时临时禁用 content-visibility (657e7a4) +- refactor: 用 column-reverse 替代 ResizeObserver 实现原生 stick-to-bottom (591a8eb) +- refactor: DiffView 复用 DiffViewer 组件,删除 150 行重复 diff 渲染代码 (e78d987) + +## [v0.2.1] - 2026-03-14 + +- refactor: 用 ResizeObserver 替代 RAF 轮询实现流式自动滚动 (10d9e6a) +- fix: 空消息不参与可见列表,消除 abort 时的滚动跳变 (9dbaa4d) + +## [v0.2.0] - 2026-03-14 + +- feat: RECENTS 列表标记活跃 session 状态 (closes #25) (98ecce9) +- fix: motion animate() 类型歧义 — 改用 motion/mini 单签名 API 解决 tsc -b TS2769 (7927bcf) +- fix: 移除 ContentBlock loading skeleton 骨架条,避免输出短于占位时的负增长跳变 (f6db986) +- feat: 消息入场生长动画 — 用户和助手消息统一从 height 0 平滑展开 (ce055fb) +- fix: SmoothHeight 激活时锁定 outer 高度,修复动画不触发的问题 (e5f6cf5) +- feat: 命令式 animate() 动画方案 — 高性能 + 零 React 组件开销 (4481aba) +- fix: 修复流结束后闪烁回弹问题 (192944e) +- fix: 修复流式文本不实时渲染的问题,移除 useSmoothStream (005b6bf) +- refactor: 连续助手消息分组渲染,共享容器浑然一体 (cfadad0) +- Revert "fix: 复制按钮始终占位,避免 text 到达时布局跳变" (1af197a) +- fix: 移除未使用的 hasMoreHistory 解构变量,修复 TS6133 编译错误 (cf9419b) +- fix: 复制按钮始终占位,避免 text 到达时布局跳变 (d51e7a8) +- fix: 移除 'Beginning of conversation' 常驻提示,仅保留加载中 spinner (11484c6) + +## [v0.1.18] - 2026-03-13 + +- ci: 加速 release 编译 — Rust 多线程 codegen + Android 双架构并行 (2398c54) +- fix: FloatingActions 高度抖动、滚动按钮误显示 (466f4ea) +- refactor: gutter/content 分离架构 + 水平滚动独立化 + FullscreenViewer 确定高度 (e327e59) +- perf: streaming 渲染地基优化 — rAF 滚动、delta 批量化、布局稳定性 (f689910) + +## [v0.1.17] - 2026-03-11 + +- fix: update CodePreview test mock to use useSyntaxHighlightRef (a10075f) +- fix: move history loading indicator below top spacing so it's visible (4cfc71c) +- fix: remove MAX_HISTORY_MESSAGES cap and restore loading UI (43d2273) +- perf: reduce sidebar resize lag with CSS containment and DOM-only sidebar drag (63bc0c5) +- fix: enable virtual scrolling in CodePreview by adding height constraint (43c9e3a) +- fix: mobile input collapses when tapping FloatingActions buttons (a777334) +- refactor: simplify loadMore pagination and remove prependedCount (8614df4) +- refactor: rewrite messageStore and ChatArea, remove IndexedDB cache layer (eecdeaf) +- refactor: remove loading spinners/skeletons and reduce scroll-related re-renders (eb7ebff) + +## [v0.1.16] - 2026-03-11 + +- fix: scroll jitter after streaming ends caused by content-visibility height mismatch (765052a) +- fix: stop auto-scroll jitter when user scrolls slightly during streaming (171a62e) + +## [v0.1.15] - 2026-03-10 + +- fix: default revertSteps to 0 in FloatingActions (400fbb4) +- chore: bump version to 0.1.15 (3f57df2) +- fix: slow scroll during streaming causes jitter by pulling user back to bottom (860683e) +- fix: isFocused stuck after toolbar button click prevents capsule collapse (aaaa727) +- refactor: extract FloatingActions and CollapsedCapsule components from InputBox (273bd98) +- refactor: extract useInputHistory hook from InputBox (d920da9) +- refactor: extract useAttachmentRail hook from InputBox (2150d82) +- refactor: extract useMobileCollapse hook from InputBox (c5fd39b) +- fix: mobile input capsule state not resetting on session switch + blur collapsing on toolbar interaction (474938e) + +## [v0.1.14] - 2026-03-10 + +- fix: session switch scroll + eliminate all content flicker during load (d823799) +- fix: infinite history loading loop + stabilize observer + cleaner scroll-to-bottom (fe28777) +- fix: smooth shimmer gradient + disable browser scroll restoration + multi-frame scroll-to-bottom (2144260) +- fix: shimmer highlight sweep + remove unused visibleMessageIds state (ae767ca) +- fix: outline click retract, prepend scroll preservation, cross-message merge continuation (e3ca11a) +- fix: desktop label click navigation + mobile passive touch events in OutlineIndex (f35f758) +- refactor: rewrite OutlineIndex with clean fisheye engine (1057c1c) +- refactor: replace react-virtuoso with native scroll + content-visibility (2dc550a) +- fix: correct shimmer animation direction (left-to-right) and use linear timing (16bc419) +- fix: endsWithTool skips empty reasoning/text so cross-message tool merging works correctly (fdedbcd) +- style: replace thinking breath-bar with shimmer text animation in italic mode (1bed06b) + +## [v0.1.13] - 2026-03-10 + +- fix: SSE reconnect race conditions and stale timeout constant (7614d53) +- test: add unit tests for HTTP module and Tauri environment detection (79b77af) +- chore: eliminate all 8 lint warnings (0 errors, 0 warnings) (b312bb6) +- fix: URL-encode query string values in buildQueryString (f6a434e) +- fix: add AbortController-based timeout to HTTP request() (7962278) +- fix: pending permission/question cache supports multiple requests per session (b421172) +- fix: SSE parser now handles CRLF line endings and multi-line data correctly (d4553d5) +- chore: remove dead storage key exports (WIDE_MODE, THEME_MODE, SIDEBAR_WIDTH, MODEL_VARIANT_PREFIX) (2901c99) +- refactor: replace bare console.error with unified error handlers across 14 files (7a0c86c) +- refactor: move theme/wideMode into themeStore, eliminate prop drilling through Sidebar and SettingsDialog (9c8b2d7) +- refactor: split messageStore into store, types, and React hooks layers (caef036) +- refactor: extract App.tsx hooks (useViewportHeight, useCancelHint, useCloseServiceDialog) (2dd70e3) +- refactor: split SidePanel into focused sidebar components (673db54) +- refactor: extract InputBox utility functions to input/inputUtils.ts (a1c0eee) +- refactor: split SettingsDialog into focused component files (72f5ed4) +- refactor: consolidate duplicated formatting functions into utils/formatUtils.ts (a981c89) +- refactor: deduplicate diff content extraction (fad37d4) +- refactor: extract ModalShell to unify modal overlay infrastructure (ae9f96e) +- chore: remove unnecessary eslint-disable in logger.ts (118740c) +- chore: clean up dependencies (0c50ac0) +- refactor: add dev-only logger, replace bare console.log with logger.log (91fc303) +- refactor: remove dead code files (test-shiki.ts, editorUtils.ts, toolUtils.ts) (3a3f37a) + +## [v0.1.12] - 2026-03-09 + +- fix: preserve changelog ordering during release prep (039b906) +- chore: ignore generated tauri assets in lint (071e2db) +- fix: keep slash command composer responsive (42cdcf6) +- fix: restore cross-platform Tauri app handling (6b84717) +- perf: replace std default hasher with rapidhash (c6d5bdb) +- refactor: reorganize the file structure of Tauri backend (fa5edf6) +- perf: refactor OpenDirectoryState with papaya HashMap to reduce lock contention (6efd2a0) +- perf: optimize ServiceState.child_pid with AtomicU32 to reduce Mutex contention (a42df0b) +- perf: optimize SseState implementation - replace Mutex+Hashmap with papaya library to reduce contention and improve performance (f586a84) + +## [v0.1.11] - 2026-03-08 + +- feat: add an optional folder-style Recent view while preserving the original session row details and per-folder ordering controls +- feat: aggregate Active sessions across all saved projects instead of limiting the list to the currently selected directory + +## [v0.1.10] - 2026-03-08 + +- fix: harden session message sync and failed sends (b788dce) +- chore: add validated release preparation flow (010ffbe) +- docs: consolidate v0.1.9 release notes (79113da) + +## [v0.1.9] - 2026-03-08 + +- fix: restore message attachment expand animation (2975fe3) +- fix: streamline composer attachment rail interactions (99db58a) +- fix: constrain expanded attachments and preserve composer blank lines (dd2d7ba) +- fix: harden composer attachment rail scrolling (b2bac29) + +## [v0.1.7] - 2026-03-08 + +- fix: truncate tool description overflow in tool call row (3782c67) +- fix: tighten mobile model menu and attachment width (60b34a2) +- fix: preserve utf-8 across tauri stream chunks (1dcb15a) + +## [v0.1.6] - 2026-03-07 + +- fix: restore tauri mobile file attachments (ffe3398) + +## [v0.1.5] - 2026-03-07 + +- chore: keep tauri config formatted on release (48f6045) +- fix: sync settings version with app release (b815d18) +- chore: format release workflow (aef533b) +- ci: add build validation workflow (491a544) +- other: add "zed/\*" as ignored file (8f32b7d) + +## [v0.1.4] - 2026-03-07 + +- fix: split frontend and api slash commands (bdb2e33) +- fix: support clipboard fallback in insecure contexts (edf4dd0) +- fix: align slash command descriptions (9d84a78) + +## [v0.1.3] - 2026-03-07 + +- chore: restore release workflow formatting (73a41a4) +- perf: split code preview from file explorer (b94bfc5) +- perf: lazy load optional panels and split vendor chunks (9e0f7d6) +- chore: add test baseline and clean lint debt (0d5f175) +- chore: establish lint and formatting baseline (762786d) +- fix: shorten input footer disclaimer copy (d691b7b) +- chore: automate lockfile updates in release script (e678349) + +## [v0.1.2] - 2026-03-07 + +- fix: scope active session state to the current directory (2503c6b) + +## [v0.1.1] - 2026-03-07 + +Patch release focused on chat input polish, session list consistency, and smoother permission handling. + +### Fixes + +- Restored collapsed input dock bottom spacing +- Kept the session list in sync across directory filters and live updates +- Returned gracefully to a new chat after deleting the currently open session +- Aligned the todo popover with the input dock for desktop and mobile +- Removed extra polling from permission/question flows and synced reply state immediately + +### Improvements + +- Preloaded `@` root listing and `/` command data when entering a session to reduce first-open lag + +## [v0.1.0] - 2026-03-05 + +First stable release of OpenCodeUI. + +### Features + +- Drag-and-drop file attachment support (desktop & mobile) +- Material file icons for file/folder display +- File @mention from explorer sidebar +- Context breakdown visualization in sidebar +- Live retry status display with expand/collapse +- Attachment detail viewer with copy/save functionality +- Capability-based file attachment upload + +### Fixes + +- Aligned capsule thinking chevron with italic/tool toggle arrows +- Stabilized Tauri desktop file drag-and-drop handling +- Fixed multiple task windows rendering the latest child session +- Eliminated scroll jank from high-frequency re-renders +- Fixed mobile overflow in project and diff headers +- Fixed sidebar notification/session meta row overflow +- Fixed attachment pill truncation and compact tool layout + +### Improvements + +- Migrated all icons to lucide-react +- Unified message part spacing and alignment +- Added Docker support with material icons build step diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.es.md b/README.es.md new file mode 100644 index 0000000..6461266 --- /dev/null +++ b/README.es.md @@ -0,0 +1,212 @@ +

+ Logo de PiAgentUI +

+ +# PiAgentUI + +[English (US)](./README.md) | [Português (BR)](./README.pt-BR.md) | **Español** | [日本語](./README.ja.md) + +PiAgentUI es una interfaz moderna web y de escritorio para **Pi Agent**. No es solo una capa visual de chat: el objetivo es convertirse en una aplicación completa de agentes, en la misma categoría de producto que Codex, Claude Desktop y otros entornos de desarrollo agent-first. + +PiAgentUI trata el runtime real de Pi como la fuente de verdad. Sesiones, metadatos de modelos, uso de contexto, tool calls, skills, configuración MCP y slash commands vienen de Pi siempre que sea posible, en lugar de recrearse como estado falso de interfaz. + +> **Estado del proyecto:** desarrollo local activo. Algunas áreas ya son cercanas a producto, mientras otras siguen cambiando rápidamente. + +## Demostración del software + +Estas capturas muestran la experiencia actual de PiAgentUI: un workspace oscuro y enfocado para agentes, con sesiones reales de Pi, selección de modelos, metadatos MCP, settings, chat con herramientas y paneles laterales. + +![Workspace de chat de PiAgentUI con panel lateral MCP](./src/assets/images/img1.png) + +![Diálogo de settings y conexiones de servidor de PiAgentUI](./src/assets/images/img2.png) + +![Selector de modelos de PiAgentUI dentro de una sesión activa](./src/assets/images/img3.png) + +## Qué hace PiAgentUI hoy + +- **Chat con streaming** — salida en vivo por SSE, reconciliación estable de mensajes, markdown, resaltado de código, partes de razonamiento y tarjetas de herramientas. +- **Sesiones reales de Pi** — lista de sesiones, enrutamiento a la sesión activa, historial seguro tras reinicio, títulos derivados y envío a la sesión seleccionada. +- **Salida de herramientas en tarjetas** — tool calls/results quedan anexados a los mensajes del asistente, sin filtrarse como texto normal en el chat. +- **Uso real de contexto** — el uso de contexto viene del runtime de Pi cuando está disponible; el contexto desconocido/compactado se muestra de forma segura en lugar de `NaN`. +- **Metadatos de modelos** — la identidad de provider/modelo viene de Pi; el catálogo local de OpenRouter se usa solo como enriquecimiento de detalles. +- **Panel de Skills** — las skills reales se leen del prompt efectivo de Pi y se agrupan por origen: global, project, package y other. +- **Panel MCP** — lee servidores MCP configurados en archivos locales/globales y muestra transporte, comando, URL, lifecycle, direct tools y origen. +- **Slash commands de Pi** — `/api/commands/list` expone comandos built-in de Pi y comandos dinámicos de extensiones, prompts y skills. +- **Adjuntos multimodales** — soporte visual para archivos/imágenes/PDF/audio/video según las capacidades del modelo seleccionado. +- **Terminal y archivos** — terminal integrado, explorador de archivos, syntax highlighting, componentes de diff e integración de escritorio con Tauri. +- **UI keyboard-first** — command palette, atajos configurables, split panes, selector de modelo, navegación por proyecto/sesión y layouts responsivos. + +## Dirección del producto + +PiAgentUI está evolucionando hacia una aplicación completa de agentes: + +1. **Acciones visuales para todos los comandos de Pi** — los slash commands siguen disponibles, pero las acciones frecuentes deben convertirse en botones, menús, diálogos o paneles. +2. **Entrada por voz y transcripción en tiempo real** — grabación de micrófono, deltas parciales, inserción de la transcripción final en el composer y configuración de proveedores STT OpenAI-compatible. +3. **Integración MCP más profunda** — más allá de metadatos: conectar, autenticar, inspeccionar herramientas y ejecutar workflows MCP desde la UI. +4. **Control completo de sesiones** — fork, clone, navegación en árbol, import/export/share, branch summaries y gestión de contexto como flujos nativos. +5. **Experiencia de escritorio completa** — app Tauri pulida con descubrimiento local de runtime, settings seguros, notificaciones y controles ricos de workspace. + +## Roadmap de audio y transcripción + +PiAgentUI ya acepta adjuntos de audio cuando el modelo seleccionado declara soporte de entrada de audio. El sistema de voz planeado añade speech-to-text en vivo directamente en el composer. + +Arquitectura recomendada: + +- **Proveedor realtime por defecto:** OpenAI Realtime Transcription con `gpt-realtime-whisper` para transcripción parcial de baja latencia. +- **Fallback por archivo:** OpenAI Audio Transcriptions con `gpt-4o-transcribe`, `gpt-4o-mini-transcribe` o `whisper-1`. +- **Proveedores personalizados:** APIs STT OpenAI-compatible configurables por el usuario, como proveedores que implementan `POST /v1/audio/transcriptions`. + +UX planeada: + +- botón de micrófono en el composer; +- estados de grabación y permisos; +- overlay de transcripción parcial; +- texto final insertado en el input; +- comportamiento configurable de append/replace; +- auto-send desactivado por defecto; +- manejo recuperable de errores de permisos, red y proveedor. + +Ejemplo de configuración de proveedor: + +```json +{ + "kind": "openai-compatible", + "mode": "file", + "baseUrl": "https://api.example.com/v1", + "transcriptionEndpoint": "/audio/transcriptions", + "transcriptionModel": "openai/whisper-large-v3", + "language": "es" +} +``` + +El soporte realtime se trata como una capability separada, porque la compatibilidad HTTP con OpenAI no garantiza compatibilidad WebSocket. + +## Arquitectura + +```text +PiAgentUI +├─ Frontend React/Vite +│ ├─ chat, renderizado de mensajes, input, paneles y settings +│ ├─ stores locales para preferencias de UI +│ └─ clientes SSE/API para endpoints locales de PiAgentUI +├─ Backend como extensión Pi +│ └─ extensions/piagentui-server.ts +│ ├─ expone endpoints locales /api/* +│ ├─ conecta con runtime/sesiones/modelos de Pi +│ ├─ transmite eventos de Pi al navegador +│ └─ lee metadatos locales como MCP config y skills +└─ Runtime Pi Agent + ├─ sesiones + ├─ modelos/providers + ├─ herramientas + ├─ skills + ├─ MCP + └─ slash commands +``` + +La UI no debe inventar estado de runtime cuando Pi ya conoce la respuesta. PiAgentUI puede cachear y enriquecer datos para UX, pero Pi sigue siendo autoritativo para el comportamiento del agente. + +## Stack técnico + +| Área | Stack | +| ------------------- | --------------------------------------------- | +| UI | React 19, TypeScript | +| Build | Vite 8 | +| Estilo | Tailwind CSS v4 y design tokens del proyecto | +| Escritorio | Tauri 2 | +| Markdown | Streamdown / pipeline de markdown | +| Syntax highlighting | Shiki | +| Terminal | xterm.js | +| Tests | Vitest, Testing Library | +| Backend local | Extensión Pi, Node HTTP server, WebSocket/SSE | + +## Desarrollo local + +Instalar dependencias: + +```bash +npm install +``` + +Iniciar el frontend en modo dev: + +```bash +npm run dev +``` + +Build: + +```bash +npm run build +``` + +Tests: + +```bash +npm run test:run +``` + +Type checks: + +```bash +npm run typecheck +npm run typecheck:extensions +``` + +Validación completa: + +```bash +npm run validate +``` + +## Runtime de la extensión Pi + +PiAgentUI se registra como extensión Pi en `package.json`: + +```json +{ + "pi": { + "extensions": ["./extensions/piagentui-server.ts"] + } +} +``` + +Cuando la extensión arranca, escribe metadatos de descubrimiento local en: + +```text +~/.pi/agent/piagentui-port.json +``` + +La app web usa el puerto/token de ese archivo para hablar con el servidor local de la extensión. Algunos cambios de backend requieren reiniciar o recargar el proceso de la extensión Pi antes de verse en el navegador. + +## Endpoints locales importantes + +| Endpoint | Propósito | +| -------------------------------- | ---------------------------------------------------------- | +| `GET /api/models` | Lista real de modelos Pi con capacidades normalizadas | +| `GET /api/sessions` | Lista de sesiones leída desde los archivos de sesión de Pi | +| `GET /api/sessions/:id/messages` | Historial normalizado para renderizado en la UI | +| `GET /api/sessions/:id/context` | Uso de contexto runtime para la sesión activa | +| `POST /api/messages/send` | Envía un mensaje a la sesión Pi solicitada | +| `GET /api/skills` | Skills efectivas de Pi agrupadas por origen | +| `GET /api/mcp/status` | Metadatos de servidores MCP configurados | +| `GET /api/commands/list` | Slash commands built-in y dinámicos de Pi | +| `GET /global/event` | Stream SSE de eventos del backend PiAgentUI | + +## Principios de desarrollo + +- Preferir datos reales del runtime Pi en vez de estado falso solo de UI. +- Mantener OpenRouter como enriquecimiento de catálogo, nunca como sustituto de la identidad provider/modelo de Pi. +- Tratar valores runtime desconocidos explícitamente. +- Escribir tests antes de cambios de comportamiento siempre que sea posible. +- Mantener tool results dentro de tarjetas de herramienta. +- Seguir el sistema visual existente: tema, movimiento, espaciado y patrones de paneles. +- Separar claramente lo implementado del roadmap. + +## Notas del repositorio + +El proyecto todavía contiene nombres heredados de la base original OpenCodeUI en algunos puntos, incluyendo metadatos del paquete y documentación antigua. La dirección actual es PiAgentUI-first, y una limpieza futura debe migrar esos nombres sin romper los workflows locales. + +## Licencia + +Este repositorio sigue la licencia declarada en `package.json`: `GPL-3.0-only`. diff --git a/README.ja.md b/README.ja.md new file mode 100644 index 0000000..a2e524e --- /dev/null +++ b/README.ja.md @@ -0,0 +1,212 @@ +

+ PiAgentUI ロゴ +

+ +# PiAgentUI + +[English (US)](./README.md) | [Português (BR)](./README.pt-BR.md) | [Español](./README.es.md) | **日本語** + +PiAgentUI は **Pi Agent** のためのモダンな Web / デスクトップ UI です。単なるチャット画面ではありません。最終的には Codex や Claude Desktop のような、エージェント中心の本格的な開発アプリになることを目指しています。 + +PiAgentUI は、実際の Pi runtime を信頼できる唯一の情報源として扱います。セッション、モデルメタデータ、コンテキスト使用量、tool call、skills、MCP 設定、slash command は、可能な限り Pi から取得し、UI 側だけの仮の状態として再実装しません。 + +> **プロジェクト状態:** アクティブなローカル開発中です。一部は製品に近い品質ですが、まだ高速に変化している領域もあります。 + +## ソフトウェアプレビュー + +以下のスクリーンショットは、現在の PiAgentUI の体験を示しています。実際の Pi セッション、モデル選択、MCP メタデータ、settings、ツール対応チャット、サイドパネルを備えた、暗色で集中しやすいエージェント workspace です。 + +![MCP サイドパネルを表示した PiAgentUI のチャット workspace](./src/assets/images/img1.png) + +![PiAgentUI の settings と server connections ダイアログ](./src/assets/images/img2.png) + +![アクティブな agent session 内の PiAgentUI model selector](./src/assets/images/img3.png) + +## 現在できること + +- **ストリーミング対応チャット** — SSE によるライブ出力、安定したメッセージ同期、Markdown、コードハイライト、reasoning part、ツールカード。 +- **実際の Pi セッション** — セッション一覧、アクティブセッションへのルーティング、再起動後も安全な履歴読み込み、セッションタイトル生成、選択中セッションへの送信。 +- **ツール出力のカード表示** — tool calls/results は通常のチャット本文として漏れず、アシスタントメッセージに紐づいたカードとして表示されます。 +- **実 runtime のコンテキスト使用量** — 利用可能な場合は Pi runtime から取得し、不明または compacted な値は `NaN` ではなく安全に表示します。 +- **モデルメタデータ** — provider/model の実体は Pi が authoritative であり、ローカル OpenRouter カタログは context、output、modality、pricing、tokenizer などの補助情報としてのみ使います。 +- **Skills パネル** — 有効な Pi prompt から実際の skills を読み取り、global / project / package / other に分類します。 +- **MCP パネル** — ローカル/グローバル設定ファイルから MCP サーバーを読み取り、transport、command、URL、lifecycle、direct tools、source を表示します。 +- **Pi slash commands** — `/api/commands/list` が Pi の built-in commands と、extension / prompt / skill 由来の動的コマンドを公開します。 +- **マルチモーダル添付** — 選択中モデルの能力に応じて、ファイル、画像、PDF、音声、動画の添付 UI を表示します。 +- **ターミナルとファイル操作** — 統合ターミナル、ファイルエクスプローラー、syntax highlighting、diff 関連コンポーネント、Tauri デスクトップ連携。 +- **キーボード中心の UI** — command palette、カスタム keybindings、split panes、モデルセレクター、プロジェクト/セッションナビゲーション、レスポンシブレイアウト。 + +## プロダクトの方向性 + +PiAgentUI は、完全なエージェントアプリへ進化しています。 + +1. **すべての Pi コマンドに視覚的な操作を提供** — slash commands は残しつつ、よく使う操作はボタン、メニュー、ダイアログ、パネルにします。 +2. **音声入力とリアルタイム文字起こし** — マイク録音、部分 transcript delta、最終 transcript の composer 挿入、OpenAI-compatible STT provider 設定。 +3. **より深い MCP 統合** — メタデータ表示だけでなく、接続、認証、ツール確認、MCP workflow 実行を UI から行えるようにします。 +4. **完全なセッション制御** — fork、clone、tree navigation、import/export/share、branch summary、context management をネイティブ UI として提供します。 +5. **デスクトップグレードの体験** — Tauri アプリとして、ローカル runtime discovery、安全な settings、通知、より豊かな workspace control を提供します。 + +## 音声と文字起こしのロードマップ + +PiAgentUI は、選択中モデルが audio input をサポートしている場合、すでに音声ファイル添付を扱えます。計画中の voice system では、composer にリアルタイム speech-to-text を追加します。 + +推奨アーキテクチャ: + +- **デフォルト realtime provider:** 低レイテンシの部分 transcript 用に OpenAI Realtime Transcription と `gpt-realtime-whisper` を使用。 +- **ファイル fallback:** OpenAI Audio Transcriptions の `gpt-4o-transcribe`、`gpt-4o-mini-transcribe`、または `whisper-1` を使用。 +- **カスタム provider:** `POST /v1/audio/transcriptions` を実装する OpenAI-compatible STT API をユーザーが設定可能。 + +計画中の UX: + +- composer のマイクボタン; +- 録音状態と権限状態; +- 部分 transcript overlay; +- 最終 transcript を input に挿入; +- append / replace 動作の設定; +- auto-send はデフォルト無効; +- 権限、ネットワーク、provider エラーを復旧可能な形で表示。 + +provider 設定例: + +```json +{ + "kind": "openai-compatible", + "mode": "file", + "baseUrl": "https://api.example.com/v1", + "transcriptionEndpoint": "/audio/transcriptions", + "transcriptionModel": "openai/whisper-large-v3", + "language": "ja" +} +``` + +OpenAI-compatible な HTTP transcription は WebSocket 互換性を保証しないため、realtime support は別 capability として扱います。 + +## アーキテクチャ + +```text +PiAgentUI +├─ React/Vite frontend +│ ├─ chat, message rendering, input, panels, settings +│ ├─ UI preferences 用の local stores +│ └─ PiAgentUI local endpoints 用の SSE/API clients +├─ Pi extension backend +│ └─ extensions/piagentui-server.ts +│ ├─ local /api/* endpoints を公開 +│ ├─ Pi runtime/session/model APIs への bridge +│ ├─ Pi events を browser に stream +│ └─ MCP config や skills などの local metadata を読み取り +└─ Pi Agent runtime + ├─ sessions + ├─ models/providers + ├─ tools + ├─ skills + ├─ MCP + └─ slash commands +``` + +Pi がすでに知っている runtime state を UI が勝手に作るべきではありません。PiAgentUI は UX のために cache や enrichment を行えますが、agent behavior については Pi が authoritative です。 + +## 技術スタック + +| 領域 | Stack | +| ------------------- | --------------------------------------------- | +| UI | React 19, TypeScript | +| Build | Vite 8 | +| Styling | Tailwind CSS v4 と project design tokens | +| Desktop | Tauri 2 | +| Markdown | Streamdown / markdown rendering pipeline | +| Syntax highlighting | Shiki | +| Terminal | xterm.js | +| Tests | Vitest, Testing Library | +| Local backend | Pi extension, Node HTTP server, WebSocket/SSE | + +## ローカル開発 + +依存関係をインストール: + +```bash +npm install +``` + +frontend dev server を起動: + +```bash +npm run dev +``` + +ビルド: + +```bash +npm run build +``` + +テスト: + +```bash +npm run test:run +``` + +型チェック: + +```bash +npm run typecheck +npm run typecheck:extensions +``` + +完全な検証: + +```bash +npm run validate +``` + +## Pi extension runtime + +PiAgentUI は `package.json` で Pi extension として登録されています。 + +```json +{ + "pi": { + "extensions": ["./extensions/piagentui-server.ts"] + } +} +``` + +extension 起動時、ローカル discovery metadata が以下に書き込まれます。 + +```text +~/.pi/agent/piagentui-port.json +``` + +Web アプリはこのファイルの port/token を使ってローカル extension server と通信します。一部の backend 変更は、ブラウザに反映される前に Pi extension process の再起動または reload が必要です。 + +## 重要なローカル endpoints + +| Endpoint | 目的 | +| -------------------------------- | --------------------------------------------------- | +| `GET /api/models` | Pi の実モデル一覧と正規化された capability metadata | +| `GET /api/sessions` | Pi session files から読み取ったセッション一覧 | +| `GET /api/sessions/:id/messages` | UI rendering 用に正規化されたセッション履歴 | +| `GET /api/sessions/:id/context` | active session の runtime context usage | +| `POST /api/messages/send` | 指定された Pi session にユーザーメッセージを送信 | +| `GET /api/skills` | 有効な Pi skills を source ごとに分類 | +| `GET /api/mcp/status` | 設定済み MCP servers の metadata | +| `GET /api/commands/list` | Pi built-in / dynamic slash commands | +| `GET /global/event` | PiAgentUI backend からの SSE event stream | + +## 開発原則 + +- UI-only の仮状態よりも、Pi runtime の実データを優先する。 +- OpenRouter は catalog enrichment としてのみ使い、Pi の provider/model identity を置き換えない。 +- 不明な runtime 値は明示的に扱う。 +- 振る舞いを変える場合は、可能な限り先にテストを書く。 +- tool results は tool cards 内に保持する。 +- 既存の theme、motion、spacing、panel patterns に合わせる。 +- 実装済み機能と roadmap を明確に分ける。 + +## リポジトリノート + +このプロジェクトには、元の OpenCodeUI ベースから継承した名前が一部残っています。package metadata や古い documentation などです。現在の方向性は PiAgentUI-first であり、将来的な cleanup ではローカル workflow を壊さずに残りの名称を移行する必要があります。 + +## ライセンス + +このリポジトリは `package.json` に記載されているライセンス `GPL-3.0-only` に従います。 diff --git a/README.md b/README.md new file mode 100644 index 0000000..aa71fd4 --- /dev/null +++ b/README.md @@ -0,0 +1,241 @@ +

+ PiAgentUI logo +

+ +

PiAgentUI

+

+ Professional Desktop & Web UI for AI Coding Agents
+ Pi Agent · Claude Code · Codex · OpenCode · Cursor · Copilot +

+ +

+ Version + License + Platform + Framework +

+ +**English (US)** | [Português (BR)](./README.pt-BR.md) | [Español](./README.es.md) | [日本語](./README.ja.md) + +## TL;DR + +PiAgentUI is a **full-featured workspace for AI coding agents** — sessions, model switching, MCP tools, skills browser, voice input, terminal, file explorer, and Tauri desktop app. Built for Pi Agent but compatible with Claude Code, Codex, OpenCode, Cursor, and any agent that speaks SSE/HTTP. + +> **Category:** AI Agent UI · Agent Desktop Client · MCP GUI · Coding Copilot Interface +> **Status:** Active development — production-grade chat, evolving fast. Expect weekly releases. + +## Software preview + +These screenshots show the current PiAgentUI experience: a dark, focused agent workspace with real Pi sessions, model selection, MCP metadata, settings, tool-aware chat, and side panels. + +![PiAgentUI chat workspace with MCP side panel](./src/assets/images/img1.png) + +![PiAgentUI settings and server connections dialog](./src/assets/images/img2.png) + +![PiAgentUI model selector inside an active agent session](./src/assets/images/img3.png) + +## Quick Install + +```bash +# Clone and install +git clone https://github.com/lehhair/OpenCodeUI.git +cd OpenCodeUI +npm install + +# Start dev server +npm run dev + +# Or build desktop app +npm run tauri dev +``` + +Requires **Node.js ≥ 22** and **Pi Agent** installed. The UI auto-discovers the Pi runtime via `~/.pi/agent/piagentui-port.json`. + +## What PiAgentUI does today + +- **Agent chat with streaming** — live assistant output through SSE, stable message reconciliation, markdown rendering, code highlighting, reasoning parts, and tool cards. +- **Real Pi sessions** — session list, active-session routing, restart-safe history loading, derived session titles, and selected-session send routing. +- **Tool output as tool cards** — tool calls/results stay attached to assistant messages instead of leaking as normal chat text. +- **Runtime context usage** — context usage comes from Pi runtime when available; unknown/compacted context is shown safely instead of `NaN`. +- **Model metadata** — Pi provider/model identity remains authoritative, with optional OpenRouter catalog metadata used only for extra details like context, output, modality, pricing, and tokenizer hints. +- **Skills panel** — real skills are parsed from the effective Pi prompt and grouped by source: global, project, package, and other. +- **MCP metadata panel** — reads configured MCP servers from local/global config files and surfaces transport, command, URL, lifecycle, direct tools, and source. +- **Pi slash commands** — `/api/commands/list` exposes Pi built-in commands plus dynamic extension, prompt, and skill commands. +- **Attachments and multimodal input** — file/image/PDF/audio/video attachment affordances follow the selected model capabilities. +- **Terminal and file tooling** — integrated terminal, file explorer, syntax highlighting, diff-oriented components, and Tauri desktop integration. +- **Keyboard-first UI** — command palette, configurable keybindings, split panes, model selector, project/session navigation, and responsive layouts. + +## Product direction + +PiAgentUI is moving toward a complete agent app: + +1. **Visual actions for every Pi command** — slash commands remain available, but frequent actions should become buttons, menus, dialogs, or panels. +2. **Voice input and realtime transcription** — microphone recording, partial transcript deltas, final transcript insertion into the composer, and OpenAI-compatible STT provider configuration. +3. **Deeper MCP integration** — beyond metadata: connect, authenticate, inspect tools, and execute MCP workflows from the UI. +4. **Full session control** — fork, clone, tree navigation, import/export/share, branch summaries, and context management as first-class UI flows. +5. **Desktop-grade experience** — a polished Tauri app with local runtime discovery, secure settings, notifications, and richer workspace controls. + +## Audio and transcription roadmap + +PiAgentUI already supports attaching audio files when the selected model declares audio input support. The planned voice system adds live speech-to-text directly in the composer. + +Recommended architecture: + +- **Default realtime provider:** OpenAI Realtime Transcription with `gpt-realtime-whisper` for low-latency partial transcripts. +- **Default file fallback:** OpenAI Audio Transcriptions with `gpt-4o-transcribe`, `gpt-4o-mini-transcribe`, or `whisper-1`. +- **Custom providers:** user-configurable OpenAI-compatible STT APIs, such as providers that implement `POST /v1/audio/transcriptions`. + +Planned UX: + +- microphone button in the composer; +- recording and permission states; +- partial transcript overlay; +- final transcript inserted into the input; +- optional append/replace behavior; +- auto-send disabled by default; +- recoverable error handling for permissions, network failures, and provider errors. + +Planned provider config shape: + +```json +{ + "kind": "openai-compatible", + "mode": "file", + "baseUrl": "https://api.example.com/v1", + "transcriptionEndpoint": "/audio/transcriptions", + "transcriptionModel": "openai/whisper-large-v3", + "language": "en" +} +``` + +Realtime support is treated as a separate capability because OpenAI-compatible HTTP transcription does not guarantee WebSocket compatibility. + +## Architecture + +```text +PiAgentUI +├─ React/Vite frontend +│ ├─ chat, message rendering, input, panels, settings +│ ├─ local stores for UI preferences +│ └─ SSE/API clients for PiAgentUI local endpoints +├─ Pi extension backend +│ └─ extensions/piagentui-server.ts +│ ├─ exposes local /api/* endpoints +│ ├─ bridges to Pi runtime/session/model APIs +│ ├─ streams Pi events to the browser +│ └─ reads local metadata such as MCP config and skills +└─ Pi Agent runtime + ├─ sessions + ├─ models/providers + ├─ tools + ├─ skills + ├─ MCP + └─ slash commands +``` + +The UI should not invent runtime state when Pi already knows the answer. PiAgentUI can cache and enrich data for UX, but Pi remains authoritative for agent behavior. + +## Tech stack + +| Area | Stack | +| ------------------- | --------------------------------------------- | +| UI | React 19, TypeScript | +| Build | Vite 8 | +| Styling | Tailwind CSS v4 plus project design tokens | +| Desktop | Tauri 2 | +| Markdown | Streamdown / markdown rendering pipeline | +| Syntax highlighting | Shiki | +| Terminal | xterm.js | +| Testing | Vitest, Testing Library | +| Local backend | Pi extension, Node HTTP server, WebSocket/SSE | + +## Local development + +Install dependencies: + +```bash +npm install +``` + +Start the frontend dev server: + +```bash +npm run dev +``` + +Build the app: + +```bash +npm run build +``` + +Run tests: + +```bash +npm run test:run +``` + +Run type checks: + +```bash +npm run typecheck +npm run typecheck:extensions +``` + +Full validation: + +```bash +npm run validate +``` + +## Pi extension runtime + +PiAgentUI is registered as a Pi extension in `package.json`: + +```json +{ + "pi": { + "extensions": ["./extensions/piagentui-server.ts"] + } +} +``` + +When the extension starts, it writes local discovery metadata to: + +```text +~/.pi/agent/piagentui-port.json +``` + +The web app uses that local port/token information to talk to the running extension server. Some backend changes require restarting or reloading the Pi extension process before the browser sees the new behavior. + +## Important local endpoints + +| Endpoint | Purpose | +| -------------------------------- | ------------------------------------------------------ | +| `GET /api/models` | Real Pi model list plus normalized capability metadata | +| `GET /api/sessions` | Session list parsed from Pi session files | +| `GET /api/sessions/:id/messages` | Session history normalized for UI rendering | +| `GET /api/sessions/:id/context` | Runtime context usage for the active session | +| `POST /api/messages/send` | Send user message to the requested Pi session | +| `GET /api/skills` | Effective Pi skills grouped by source | +| `GET /api/mcp/status` | Configured MCP server metadata | +| `GET /api/commands/list` | Built-in and dynamic Pi slash commands | +| `GET /global/event` | SSE event stream from PiAgentUI backend | + +## Development principles + +- Prefer real Pi runtime data over mocked UI-only state. +- Keep OpenRouter metadata as catalog enrichment only; never replace Pi provider/model identity with it. +- Treat unknown runtime values explicitly instead of rendering misleading numbers. +- Add tests before behavior changes whenever possible. +- Keep tool results inside tool cards. +- Keep UI work aligned with the existing theme, motion, spacing, and panel patterns. +- Document what is implemented separately from what is planned. + +## Repository notes + +This project still contains inherited naming from the original OpenCodeUI base in a few places, including package metadata and older documentation files. The current direction is PiAgentUI-first, and future cleanup should migrate remaining OpenCodeUI naming without breaking local workflows. + +## License + +This repository currently follows the license declared in `package.json`: `GPL-3.0-only`. diff --git a/README.pt-BR.md b/README.pt-BR.md new file mode 100644 index 0000000..bc513a8 --- /dev/null +++ b/README.pt-BR.md @@ -0,0 +1,212 @@ +

+ Logo do PiAgentUI +

+ +# PiAgentUI + +[English (US)](./README.md) | **Português (BR)** | [Español](./README.es.md) | [日本語](./README.ja.md) + +PiAgentUI é uma interface moderna web e desktop para o **Pi Agent**. Ele não é apenas uma camada visual de chat: o objetivo é evoluir para um aplicativo completo de agentes, na mesma categoria de produto de Codex, Claude Desktop e outros ambientes agent-first para desenvolvimento. + +O PiAgentUI trata o runtime real do Pi como fonte de verdade. Sessões, metadados de modelo, uso de contexto, tool calls, skills, configuração MCP e slash commands vêm do Pi sempre que possível, em vez de serem recriados como estado falso de interface. + +> **Status do projeto:** desenvolvimento local ativo. Algumas áreas já estão próximas de produto, enquanto outras ainda mudam rapidamente. + +## Demonstração do software + +Estas capturas mostram a experiência atual do PiAgentUI: um workspace escuro e focado para agentes, com sessões reais do Pi, seleção de modelos, metadados MCP, settings, chat com ferramentas e painéis laterais. + +![Workspace de chat do PiAgentUI com painel lateral MCP](./src/assets/images/img1.png) + +![Diálogo de settings e conexões de servidor do PiAgentUI](./src/assets/images/img2.png) + +![Seletor de modelos do PiAgentUI dentro de uma sessão ativa](./src/assets/images/img3.png) + +## O que o PiAgentUI já faz hoje + +- **Chat com streaming** — saída ao vivo via SSE, reconciliação estável de mensagens, markdown, code highlight, partes de reasoning e cards de ferramentas. +- **Sessões reais do Pi** — lista de sessões, roteamento para sessão ativa, histórico seguro após restart, títulos derivados e envio para a sessão selecionada. +- **Tool output em cards** — tool calls/results ficam anexados às mensagens do assistente, sem vazar como texto normal no chat. +- **Uso real de contexto** — o uso de contexto vem do runtime do Pi quando disponível; contexto desconhecido/compactado é exibido de forma segura em vez de `NaN`. +- **Metadados de modelos** — identidade de provider/modelo vem do Pi; o catálogo OpenRouter local é usado apenas como enriquecimento de detalhes. +- **Painel de Skills** — skills reais são lidas do prompt efetivo do Pi e agrupadas por origem: global, project, package e other. +- **Painel MCP** — lê servidores MCP configurados em arquivos locais/globais e mostra transporte, comando, URL, lifecycle, direct tools e origem. +- **Slash commands do Pi** — `/api/commands/list` expõe comandos built-in do Pi e comandos dinâmicos de extensões, prompts e skills. +- **Anexos multimodais** — suporte visual a arquivos/imagens/PDF/áudio/vídeo conforme as capacidades do modelo selecionado. +- **Terminal e arquivos** — terminal integrado, explorador de arquivos, syntax highlighting, componentes de diff e integração desktop via Tauri. +- **UI keyboard-first** — command palette, atalhos configuráveis, split panes, seletor de modelo, navegação por projeto/sessão e layouts responsivos. + +## Direção do produto + +O PiAgentUI está caminhando para virar um app completo de agentes: + +1. **Ações visuais para todos os comandos do Pi** — slash commands continuam disponíveis, mas ações frequentes devem virar botões, menus, diálogos ou painéis. +2. **Entrada por voz e transcrição em tempo real** — gravação de microfone, deltas parciais, inserção da transcrição final no composer e configuração de provedores STT OpenAI-compatible. +3. **Integração MCP mais profunda** — além de metadados: conectar, autenticar, inspecionar ferramentas e executar workflows MCP pela UI. +4. **Controle completo de sessões** — fork, clone, navegação em árvore, import/export/share, branch summaries e gerenciamento de contexto como fluxos nativos. +5. **Experiência desktop completa** — app Tauri polido com descoberta local de runtime, settings seguros, notificações e controles ricos de workspace. + +## Roadmap de áudio e transcrição + +O PiAgentUI já aceita anexos de áudio quando o modelo selecionado declara suporte a áudio. O sistema planejado de voz adiciona speech-to-text ao vivo diretamente no composer. + +Arquitetura recomendada: + +- **Provedor realtime padrão:** OpenAI Realtime Transcription com `gpt-realtime-whisper` para transcrição parcial de baixa latência. +- **Fallback por arquivo:** OpenAI Audio Transcriptions com `gpt-4o-transcribe`, `gpt-4o-mini-transcribe` ou `whisper-1`. +- **Provedores customizados:** APIs STT OpenAI-compatible configuráveis pelo usuário, como provedores que implementam `POST /v1/audio/transcriptions`. + +UX planejada: + +- botão de microfone no composer; +- estados de gravação e permissão; +- overlay de transcrição parcial; +- texto final inserido no input; +- comportamento configurável de append/replace; +- auto-send desligado por padrão; +- tratamento recuperável para erros de permissão, rede e provedor. + +Exemplo de configuração de provider: + +```json +{ + "kind": "openai-compatible", + "mode": "file", + "baseUrl": "https://api.example.com/v1", + "transcriptionEndpoint": "/audio/transcriptions", + "transcriptionModel": "openai/whisper-large-v3", + "language": "pt" +} +``` + +Suporte realtime é tratado como capability separada, porque compatibilidade HTTP com a OpenAI não garante compatibilidade WebSocket. + +## Arquitetura + +```text +PiAgentUI +├─ Frontend React/Vite +│ ├─ chat, renderização de mensagens, input, painéis e settings +│ ├─ stores locais para preferências de UI +│ └─ clientes SSE/API para endpoints locais do PiAgentUI +├─ Backend como extensão Pi +│ └─ extensions/piagentui-server.ts +│ ├─ expõe endpoints locais /api/* +│ ├─ faz ponte com runtime/sessões/modelos do Pi +│ ├─ transmite eventos do Pi para o browser +│ └─ lê metadados locais como MCP config e skills +└─ Runtime Pi Agent + ├─ sessões + ├─ modelos/providers + ├─ ferramentas + ├─ skills + ├─ MCP + └─ slash commands +``` + +A UI não deve inventar estado de runtime quando o Pi já sabe a resposta. O PiAgentUI pode cachear e enriquecer dados para UX, mas o Pi continua autoritativo para o comportamento do agente. + +## Stack técnica + +| Área | Stack | +| ------------------- | -------------------------------------------- | +| UI | React 19, TypeScript | +| Build | Vite 8 | +| Estilo | Tailwind CSS v4 e design tokens do projeto | +| Desktop | Tauri 2 | +| Markdown | Streamdown / pipeline de markdown | +| Syntax highlighting | Shiki | +| Terminal | xterm.js | +| Testes | Vitest, Testing Library | +| Backend local | Extensão Pi, Node HTTP server, WebSocket/SSE | + +## Desenvolvimento local + +Instalar dependências: + +```bash +npm install +``` + +Iniciar o frontend em modo dev: + +```bash +npm run dev +``` + +Build: + +```bash +npm run build +``` + +Testes: + +```bash +npm run test:run +``` + +Type checks: + +```bash +npm run typecheck +npm run typecheck:extensions +``` + +Validação completa: + +```bash +npm run validate +``` + +## Runtime da extensão Pi + +O PiAgentUI é registrado como extensão Pi em `package.json`: + +```json +{ + "pi": { + "extensions": ["./extensions/piagentui-server.ts"] + } +} +``` + +Quando a extensão inicia, ela escreve metadados de descoberta local em: + +```text +~/.pi/agent/piagentui-port.json +``` + +O app web usa a porta/token desse arquivo para falar com o servidor local da extensão. Algumas mudanças de backend exigem reiniciar ou recarregar o processo da extensão Pi antes de aparecerem no browser. + +## Endpoints locais importantes + +| Endpoint | Finalidade | +| -------------------------------- | ----------------------------------------------------- | +| `GET /api/models` | Lista real de modelos Pi com capacidades normalizadas | +| `GET /api/sessions` | Lista de sessões lida dos arquivos de sessão do Pi | +| `GET /api/sessions/:id/messages` | Histórico normalizado para renderização na UI | +| `GET /api/sessions/:id/context` | Uso de contexto runtime para a sessão ativa | +| `POST /api/messages/send` | Envia mensagem para a sessão Pi solicitada | +| `GET /api/skills` | Skills efetivas do Pi agrupadas por origem | +| `GET /api/mcp/status` | Metadados dos servidores MCP configurados | +| `GET /api/commands/list` | Slash commands built-in e dinâmicos do Pi | +| `GET /global/event` | Stream SSE de eventos do backend PiAgentUI | + +## Princípios de desenvolvimento + +- Preferir dados reais do runtime Pi em vez de estado fake só da UI. +- Manter OpenRouter como enriquecimento de catálogo, nunca como substituto da identidade provider/modelo do Pi. +- Tratar valores runtime desconhecidos explicitamente. +- Escrever testes antes de mudanças de comportamento sempre que possível. +- Manter tool results dentro dos cards de ferramenta. +- Seguir o sistema visual existente: tema, movimento, espaçamento e padrões de painéis. +- Separar claramente o que está implementado do que é roadmap. + +## Notas do repositório + +O projeto ainda contém nomes herdados da base original OpenCodeUI em alguns pontos, incluindo metadados do pacote e documentação antiga. A direção atual é PiAgentUI-first, e uma limpeza futura deve migrar esses nomes sem quebrar os workflows locais. + +## Licença + +Este repositório segue a licença declarada em `package.json`: `GPL-3.0-only`. diff --git a/README_EN.md b/README_EN.md new file mode 100644 index 0000000..070c365 --- /dev/null +++ b/README_EN.md @@ -0,0 +1,11 @@ +# PiAgentUI English README + +The English (US) README is now the main project README and includes software screenshots from `src/assets/images/`: + +- [README.md](./README.md) + +Localized versions: + +- [Português (BR)](./README.pt-BR.md) +- [Español](./README.es.md) +- [日本語](./README.ja.md) diff --git a/assets/app-icons/app-icon-android-background.svg b/assets/app-icons/app-icon-android-background.svg new file mode 100644 index 0000000..d3a58c1 --- /dev/null +++ b/assets/app-icons/app-icon-android-background.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/app-icons/app-icon-android-foreground.svg b/assets/app-icons/app-icon-android-foreground.svg new file mode 100644 index 0000000..ad21ada --- /dev/null +++ b/assets/app-icons/app-icon-android-foreground.svg @@ -0,0 +1,19 @@ + + + + diff --git a/assets/app-icons/app-icon.svg b/assets/app-icons/app-icon.svg new file mode 100644 index 0000000..e0f3fdf --- /dev/null +++ b/assets/app-icons/app-icon.svg @@ -0,0 +1,20 @@ + + + + + diff --git a/docker-compose.build.yml b/docker-compose.build.yml new file mode 100644 index 0000000..2ffdc09 --- /dev/null +++ b/docker-compose.build.yml @@ -0,0 +1,31 @@ +# ============================================ +# 本地构建 override(gateway/frontend/backend) +# ============================================ +# 用法: docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build + +services: + gateway: + image: opencodeui-gateway:local + build: + context: . + dockerfile: docker/Dockerfile.gateway + + frontend: + image: opencodeui-frontend:local + build: + context: . + dockerfile: docker/Dockerfile.frontend + + backend: + image: opencodeui-backend:local + build: + context: . + dockerfile: docker/Dockerfile.backend + args: + USE_CHINA_MIRROR: ${USE_CHINA_MIRROR:-1} + APT_MIRROR: ${APT_MIRROR:-http://mirrors.tuna.tsinghua.edu.cn/debian} + APT_SECURITY_MIRROR: ${APT_SECURITY_MIRROR:-http://mirrors.tuna.tsinghua.edu.cn/debian-security} + NPM_CONFIG_REGISTRY: ${NPM_CONFIG_REGISTRY:-https://registry.npmmirror.com} + NODEJS_ORG_MIRROR: ${NODEJS_ORG_MIRROR:-https://npmmirror.com/mirrors/node} + MISE_INSTALL_URL: ${MISE_INSTALL_URL:-https://mise.run} + OPENCODE_INSTALL_URL: ${OPENCODE_INSTALL_URL:-https://opencode.ai/install} diff --git a/docker-compose.host.yml b/docker-compose.host.yml new file mode 100644 index 0000000..12f6cbf --- /dev/null +++ b/docker-compose.host.yml @@ -0,0 +1,15 @@ +# ============================================ +# 宿主机能力 override(可选) +# ============================================ +# 用法: +# docker compose -f docker-compose.yml -f docker-compose.host.yml up -d +# +# 开启后 backend 可以访问宿主机 Docker daemon 和宿主机文件系统。 +# 只在确实需要容器内构建/管理 Docker、访问宿主机路径时使用。 + +services: + backend: + privileged: true + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /:/host diff --git a/docker-compose.standalone.yml b/docker-compose.standalone.yml new file mode 100644 index 0000000..16af6d2 --- /dev/null +++ b/docker-compose.standalone.yml @@ -0,0 +1,25 @@ +# ============================================ +# OpenCode WebUI - 纯前端独立部署 +# ============================================ +# 适用于已有 opencode serve 的场景,只需前端 UI +# +# 使用方法: +# docker compose -f docker-compose.standalone.yml up -d +# +# 环境变量: +# BACKEND_URL - opencode serve 地址(默认 host.docker.internal:4096) +# PORT - 前端监听端口(默认 3000) + +services: + frontend: + image: ghcr.io/lehhair/opencodeui-frontend:latest + container_name: opencodeui + restart: unless-stopped + ports: + - '${PORT:-3000}:3000' + command: ['caddy', 'run', '--config', '/etc/caddy/Caddyfile.standalone'] + environment: + - BACKEND_URL=${BACKEND_URL:-host.docker.internal:4096} + # Linux 需要 host.docker.internal 支持 + extra_hosts: + - 'host.docker.internal:host-gateway' diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..4286d1c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,100 @@ +# ============================================ +# OpenCode WebUI - Docker Compose +# ============================================ +# +# 架构: +# gateway (Caddy) :6658 -> 统一入口(反代 + 端口路由) +# :6659 -> 独立预览端口(前端开发服务专用) +# frontend (Caddy) :3000 -> 静态文件 (GitHub Actions 预构建镜像) +# backend (opencode):4096 -> opencode serve (GitHub Actions 预构建镜像) +# +# 使用方法: +# cp .env.example .env # 填写 API Key +# docker compose up -d # 启动 +# +# 本地构建全部服务 (可选): +# docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build + +services: + # ---- 统一入口:网关 ---- + gateway: + image: ghcr.io/lehhair/opencodeui-gateway:latest + container_name: opencode-gateway + restart: unless-stopped + ports: + - '127.0.0.1:${GATEWAY_PORT:-6658}:6658' + - '127.0.0.1:${PREVIEW_PORT:-6659}:6659' + volumes: + - opencode-router-data:/data + - /var/run/docker.sock:/var/run/docker.sock:ro + depends_on: + - frontend + - backend + environment: + - TARGET_CONTAINER=opencode-backend + - ROUTER_STATE_FILE=/data/routes.json + - ROUTER_SCAN_INTERVAL=${ROUTER_SCAN_INTERVAL:-5} + - ROUTER_TOKEN_LENGTH=${ROUTER_TOKEN_LENGTH:-12} + - ROUTER_PORT_RANGE=${ROUTER_PORT_RANGE:-3000-9999} + - ROUTER_EXCLUDE_PORTS=${ROUTER_EXCLUDE_PORTS:-4096} + - PUBLIC_BASE_URL=${PUBLIC_BASE_URL:-} + - PREVIEW_DOMAIN=${PREVIEW_DOMAIN:-} + - ROUTER_USERNAME=${OPENCODE_SERVER_USERNAME:-opencode} + - ROUTER_PASSWORD=${OPENCODE_SERVER_PASSWORD:-} + networks: + - opencode-net + + # ---- 前端:预构建镜像 ---- + frontend: + image: ghcr.io/lehhair/opencodeui-frontend:latest + container_name: opencode-frontend + restart: unless-stopped + networks: + - opencode-net + + # ---- 后端:预构建镜像 ---- + backend: + image: ghcr.io/lehhair/opencodeui-backend:latest + container_name: opencode-backend + restart: unless-stopped + deploy: + resources: + limits: + memory: 4G + volumes: + - ${WORKSPACE:-./workspace}:/workspace + - opencode-home:/root + working_dir: /workspace + environment: + - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-} + - OPENAI_API_KEY=${OPENAI_API_KEY:-} + - GEMINI_API_KEY=${GEMINI_API_KEY:-} + - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY:-} + - GROQ_API_KEY=${GROQ_API_KEY:-} + - MISTRAL_API_KEY=${MISTRAL_API_KEY:-} + - XAI_API_KEY=${XAI_API_KEY:-} + - OPENCODE_SERVER_PASSWORD=${OPENCODE_SERVER_PASSWORD:-} + - OPENCODE_SERVER_USERNAME=${OPENCODE_SERVER_USERNAME:-opencode} + - DOCKER_API_VERSION=${DOCKER_API_VERSION:-1.40} + - NPM_CONFIG_REGISTRY=${NPM_CONFIG_REGISTRY:-https://registry.npmmirror.com} + - NODEJS_ORG_MIRROR=${NODEJS_ORG_MIRROR:-https://npmmirror.com/mirrors/node} + - PIP_INDEX_URL=${PIP_INDEX_URL:-https://pypi.tuna.tsinghua.edu.cn/simple} + - PIP_TRUSTED_HOST=${PIP_TRUSTED_HOST:-pypi.tuna.tsinghua.edu.cn} + - LANG=C.UTF-8 + - LC_ALL=C.UTF-8 + - TERM=xterm-256color + - COLORTERM=truecolor + - MISE_DATA_DIR=/root/.local/share/mise + - MISE_CONFIG_DIR=/root/.config/mise + - MISE_STATE_DIR=/root/.local/state/mise + - PATH=/root/.local/bin:/root/.cargo/bin:/root/.local/share/mise/shims:/root/.local/share/mise/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + networks: + - opencode-net + +volumes: + opencode-home: + opencode-router-data: + +networks: + opencode-net: + name: opencode-net diff --git a/docker/Caddyfile b/docker/Caddyfile new file mode 100644 index 0000000..d6cc872 --- /dev/null +++ b/docker/Caddyfile @@ -0,0 +1,19 @@ +# OpenCode WebUI - Caddy 配置 +# 纯静态文件服务 + +:3000 { + @api path /api /api/* + handle @api { + respond "API is not served by the frontend-only image" 404 + } + + handle { + root * /srv + file_server + + # SPA 路由 - 所有非文件请求返回 index.html + try_files {path} /index.html + } + + encode gzip +} diff --git a/docker/Caddyfile.gateway b/docker/Caddyfile.gateway new file mode 100644 index 0000000..a73ee0f --- /dev/null +++ b/docker/Caddyfile.gateway @@ -0,0 +1,36 @@ +{ + auto_https off +} + +# ---- 主入口 :6658 — OpenCode 应用 ---- +:6658 { + # API(SSE + WebSocket 自动处理) + handle_path /api/* { + reverse_proxy opencode-backend:4096 { + flush_interval -1 + } + } + + # Routes UI + Preview API(供面板切换预览端口) + @router path /routes /preview/* + handle @router { + reverse_proxy 127.0.0.1:7070 + } + + # 前端(兜底) + handle { + reverse_proxy opencode-frontend:3000 + } +} + +# ---- 开发服务入口 :6659 — 绑独立域名 ---- +# 路径穿透 /p/{token}/ + 独占预览(兜底) +:6659 { + # 动态端口路由(由 router 自动生成) + import /etc/caddy/routes.conf + + # 独占预览(兜底:未匹配路径穿透的请求走 preview 端口) + handle { + import /etc/caddy/preview.conf + } +} diff --git a/docker/Caddyfile.standalone b/docker/Caddyfile.standalone new file mode 100644 index 0000000..2627b9d --- /dev/null +++ b/docker/Caddyfile.standalone @@ -0,0 +1,21 @@ +# OpenCode WebUI - 纯前端独立部署 +# 静态文件 + API 反代到外部 opencode serve + +:3000 { + # API 反代(strip /api 前缀,SSE 需要 flush_interval -1) + handle_path /api/* { + reverse_proxy {$BACKEND_URL:host.docker.internal:4096} { + header_up Host {upstream_hostport} + flush_interval -1 + } + } + + # 前端静态文件 + handle { + root * /srv + file_server + try_files {path} /index.html + } + + encode gzip +} diff --git a/docker/Dockerfile.backend b/docker/Dockerfile.backend new file mode 100644 index 0000000..f7a838c --- /dev/null +++ b/docker/Dockerfile.backend @@ -0,0 +1,114 @@ +# ============================================ +# OpenCode WebUI - Backend +# ============================================ +# Debian slim + opencode serve + agent tooling + +FROM docker:29-cli AS docker-cli + +FROM debian:bookworm-slim + +ARG USE_CHINA_MIRROR=0 +ARG APT_MIRROR=http://mirrors.tuna.tsinghua.edu.cn/debian +ARG APT_SECURITY_MIRROR=http://mirrors.tuna.tsinghua.edu.cn/debian-security +ARG NPM_CONFIG_REGISTRY=https://registry.npmmirror.com +ARG NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node +ARG MISE_INSTALL_URL=https://mise.run +ARG OPENCODE_INSTALL_URL=https://opencode.ai/install + +ENV DEBIAN_FRONTEND=noninteractive \ + LANG=C.UTF-8 \ + LC_ALL=C.UTF-8 \ + TERM=xterm-256color \ + COLORTERM=truecolor \ + EDITOR=vim \ + NPM_CONFIG_REGISTRY=${NPM_CONFIG_REGISTRY} \ + NODEJS_ORG_MIRROR=${NODEJS_ORG_MIRROR} + +RUN if [ "${USE_CHINA_MIRROR}" = "1" ] && [ -f /etc/apt/sources.list.d/debian.sources ]; then \ + sed -i \ + -e "s|http://deb.debian.org/debian|${APT_MIRROR}|g" \ + -e "s|http://security.debian.org/debian-security|${APT_SECURITY_MIRROR}|g" \ + /etc/apt/sources.list.d/debian.sources; \ + fi + +# Agent 常用基础环境。语言运行时交给 mise,安装到持久化的 /root。 +RUN apt-get update && apt-get install -y --no-install-recommends \ + bash \ + ca-certificates \ + curl \ + dnsutils \ + fd-find \ + file \ + fonts-dejavu-core \ + fonts-liberation \ + fonts-noto-cjk \ + fonts-noto-color-emoji \ + g++ \ + git \ + git-lfs \ + gnupg \ + jq \ + less \ + make \ + nano \ + openssh-client \ + patch \ + procps \ + python3 \ + python3-venv \ + ripgrep \ + rsync \ + tini \ + tzdata \ + unzip \ + vim-tiny \ + wget \ + xz-utils \ + zip \ + && rm -rf /var/lib/apt/lists/* + +# Docker CLI + Compose/Buildx plugin,只复制客户端,不安装 dockerd/containerd/runc。 +RUN mkdir -p /usr/local/libexec/docker/cli-plugins +COPY --from=docker-cli /usr/local/bin/docker /usr/local/bin/docker +COPY --from=docker-cli /usr/local/libexec/docker/cli-plugins/docker-compose /usr/local/libexec/docker/cli-plugins/docker-compose +COPY --from=docker-cli /usr/local/libexec/docker/cli-plugins/docker-buildx /usr/local/libexec/docker/cli-plugins/docker-buildx + +# Debian 的 fd 二进制叫 fdfind,补一个常见命令名。 +RUN ln -sf /usr/bin/fdfind /usr/local/bin/fd + +# 安装 mise。GitHub Actions 等 CI 环境会在构建时下载,运行时安装的工具仍落在持久化 /root。 +RUN curl -fsSL "${MISE_INSTALL_URL}" | sh \ + && MISE_BIN="$(find /root -name mise -type f 2>/dev/null | head -1)" \ + && if [ -z "${MISE_BIN}" ]; then echo "mise binary not found" >&2; exit 1; fi \ + && cp "${MISE_BIN}" /usr/local/bin/mise \ + && chmod +x /usr/local/bin/mise \ + && mise --version + +# 安装 opencode。 +RUN curl -fsSL "${OPENCODE_INSTALL_URL}" | bash \ + && OPENCODE_BIN="$(find /root -name opencode -type f 2>/dev/null | head -1)" \ + && if [ -z "${OPENCODE_BIN}" ]; then echo "opencode binary not found" >&2; exit 1; fi \ + && cp "${OPENCODE_BIN}" /usr/local/bin/opencode \ + && chmod +x /usr/local/bin/opencode \ + && opencode --version + +# 工作目录 +RUN mkdir -p /workspace +WORKDIR /workspace + +ENV MISE_DATA_DIR=/root/.local/share/mise \ + MISE_CONFIG_DIR=/root/.config/mise \ + MISE_STATE_DIR=/root/.local/state/mise \ + OPENCODE_DISABLE_AUTOUPDATE=true \ + OPENCODE_DISABLE_TERMINAL_TITLE=true \ + WORKSPACE=/workspace + +ENV PATH="/root/.local/bin:/root/.cargo/bin:/root/.local/share/mise/shims:/root/.local/share/mise/bin:${PATH}" + +COPY ./docker/backend-entrypoint.sh /usr/local/bin/backend-entrypoint.sh +RUN chmod +x /usr/local/bin/backend-entrypoint.sh + +EXPOSE 4096 + +ENTRYPOINT ["tini", "--", "/usr/local/bin/backend-entrypoint.sh"] +CMD ["opencode", "serve", "--port", "4096", "--hostname", "0.0.0.0"] diff --git a/docker/Dockerfile.frontend b/docker/Dockerfile.frontend new file mode 100644 index 0000000..f932e5b --- /dev/null +++ b/docker/Dockerfile.frontend @@ -0,0 +1,48 @@ +# ============================================ +# OpenCode WebUI - Frontend +# ============================================ +# 纯前端静态文件 + Caddy 反向代理 API + +# ---- Stage 1: 构建前端 ---- +# 前端产物是静态文件,和目标 CPU 架构无关。 +# 多架构镜像构建时让 Node builder 始终跑在构建机原生平台,避免 arm64 通过 QEMU 重跑 npm/vite 构建。 +FROM --platform=$BUILDPLATFORM node:22-alpine AS builder + +ARG NPM_REGISTRY=https://registry.npmjs.org/ +ARG NPM_REGISTRY_FALLBACK=https://registry.npmmirror.com/ + +WORKDIR /app +COPY package.json package-lock.json ./ +RUN set -eux; \ + npm config set registry "${NPM_REGISTRY}"; \ + npm config set fetch-retries 5; \ + npm config set fetch-retry-factor 2; \ + npm config set fetch-retry-mintimeout 10000; \ + npm config set fetch-retry-maxtimeout 120000; \ + npm config set audit false; \ + npm config set fund false; \ + if npm ci --ignore-scripts; then \ + exit 0; \ + fi; \ + echo "npm ci failed on ${NPM_REGISTRY}, retrying with ${NPM_REGISTRY_FALLBACK}"; \ + npm cache clean --force; \ + npm config set registry "${NPM_REGISTRY_FALLBACK}"; \ + npm ci --ignore-scripts +COPY . . +RUN node scripts/copy-material-icons.mjs +ENV VITE_API_BASE_URL=/api +RUN npm run build + +# ---- Stage 2: Caddy 运行时 ---- +FROM caddy:2-alpine + +# 前端静态文件 +COPY --from=builder /app/dist /srv + +# Caddy 配置(默认 + standalone) +COPY docker/Caddyfile /etc/caddy/Caddyfile +COPY docker/Caddyfile.standalone /etc/caddy/Caddyfile.standalone + +EXPOSE 3000 + +CMD ["caddy", "run", "--config", "/etc/caddy/Caddyfile"] diff --git a/docker/Dockerfile.gateway b/docker/Dockerfile.gateway new file mode 100644 index 0000000..2959506 --- /dev/null +++ b/docker/Dockerfile.gateway @@ -0,0 +1,27 @@ +FROM rust:1.94-alpine AS router-builder + +RUN apk add --no-cache musl-dev + +WORKDIR /build + +COPY src-router/Cargo.toml src-router/Cargo.lock ./ +COPY src-router/src ./src + +RUN cargo build --release --locked + +FROM caddy:2-alpine + +RUN apk add --no-cache docker-cli + +WORKDIR /app + +COPY --from=router-builder /build/target/release/opencodeui-router /usr/local/bin/opencodeui-router +COPY docker/entrypoint-gateway.sh /app/entrypoint.sh +RUN chmod +x /app/entrypoint.sh +COPY docker/Caddyfile.gateway /etc/caddy/Caddyfile + +RUN touch /etc/caddy/routes.conf && touch /etc/caddy/preview.conf + +EXPOSE 6658 6659 + +CMD ["/app/entrypoint.sh"] diff --git a/docker/backend-entrypoint.sh b/docker/backend-entrypoint.sh new file mode 100644 index 0000000..b17f9e0 --- /dev/null +++ b/docker/backend-entrypoint.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env bash +set -eu + +ensure_mise() { + if command -v mise >/dev/null 2>&1; then + return + fi + + if [ -x /root/.local/bin/mise ]; then + rm -f /usr/local/bin/mise + cp /root/.local/bin/mise /usr/local/bin/mise + chmod +x /usr/local/bin/mise + return + fi + + curl -fsSL "${MISE_INSTALL_URL:-https://mise.run}" | sh + + MISE_BIN="$(find /root -name mise -type f 2>/dev/null | head -1)" + if [ -z "${MISE_BIN}" ]; then + echo "mise install failed: binary not found" >&2 + exit 1 + fi + + rm -f /usr/local/bin/mise + cp "${MISE_BIN}" /usr/local/bin/mise + chmod +x /usr/local/bin/mise +} + +ensure_opencode() { + if opencode --version >/dev/null 2>&1; then + return + fi + + OPENCODE_BIN="$(find /root -name opencode -type f 2>/dev/null | head -1)" + if [ -n "${OPENCODE_BIN}" ]; then + rm -f /usr/local/bin/opencode + cp "${OPENCODE_BIN}" /usr/local/bin/opencode + chmod +x /usr/local/bin/opencode + if opencode --version >/dev/null 2>&1; then + return + fi + fi + + curl -fsSL "${OPENCODE_INSTALL_URL:-https://opencode.ai/install}" | bash + + OPENCODE_BIN="$(find /root -name opencode -type f 2>/dev/null | head -1)" + if [ -z "${OPENCODE_BIN}" ]; then + echo "opencode install failed: binary not found" >&2 + exit 1 + fi + + rm -f /usr/local/bin/opencode + cp "${OPENCODE_BIN}" /usr/local/bin/opencode + chmod +x /usr/local/bin/opencode +} + +ensure_package_mirrors() { + mkdir -p /root/.config/pip + + if [ ! -f /root/.npmrc ]; then + cat > /root/.npmrc < /root/.config/pip/pip.conf </dev/null + wait "$ROUTER_PID" "$CADDY_PID" 2>/dev/null + exit 1 +} + +trap cleanup TERM INT + +opencodeui-router & +ROUTER_PID=$! + +caddy run --config /etc/caddy/Caddyfile & +CADDY_PID=$! + +# Wait for either process to exit, then tear down the other. +# `wait -n` is not available in busybox sh, so poll both. +while kill -0 "$ROUTER_PID" 2>/dev/null && kill -0 "$CADDY_PID" 2>/dev/null; do + wait -n "$ROUTER_PID" "$CADDY_PID" 2>/dev/null || sleep 1 +done + +echo "One of the processes exited, shutting down..." +cleanup diff --git a/docker/nginx.host.conf.example b/docker/nginx.host.conf.example new file mode 100644 index 0000000..9727e9c --- /dev/null +++ b/docker/nginx.host.conf.example @@ -0,0 +1,46 @@ +# ============================================ +# 物理机 Nginx 参考配置 +# ============================================ +# 放到 /etc/nginx/sites-enabled/ 下 +# 将域名请求代理到 Docker 容器 + +server { + listen 80; + server_name opencode.example.com; + + # 前端 + location / { + proxy_pass http://127.0.0.1:3000; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + + # API 反向代理 + location /api/ { + proxy_pass http://127.0.0.1:4096/; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + # SSE + proxy_set_header Connection ''; + proxy_buffering off; + proxy_cache off; + chunked_transfer_encoding off; + proxy_read_timeout 86400s; + proxy_send_timeout 86400s; + } + + # WebSocket(PTY 终端) + location /api/pty/ { + proxy_pass http://127.0.0.1:4096/pty/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header Host $host; + proxy_read_timeout 86400s; + } +} diff --git a/docs/superpowers/plans/2026-05-28-pi-agent-extension-migration.md b/docs/superpowers/plans/2026-05-28-pi-agent-extension-migration.md new file mode 100644 index 0000000..fb9540c --- /dev/null +++ b/docs/superpowers/plans/2026-05-28-pi-agent-extension-migration.md @@ -0,0 +1,845 @@ +# Pi Agent Extension Migration Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Migrate PiAgentUi from OpenCode to Pi Agent while preserving the current UI and interaction model. + +**Architecture:** Build a Pi package/extension as the primary integration. Pi loads `extensions/piagentui-server.ts`, which starts a loopback local server, serves the existing React build, and exposes an owned compatibility API shaped to the current frontend. Tauri/Rust desktop service cleanup is a second track after the Pi package MVP works. + +**Tech Stack:** React 19, Vite 8, TypeScript 5.9, Vitest, Tauri 2/Rust, Pi extension API (`@earendil-works/pi-coding-agent`), Node HTTP, SSE/WebSocket event streaming. + +--- + +## Decisions Required Before Implementation + +Default recommendations are listed; please confirm or override them before code changes. + +1. **MVP session model:** recommended = active Pi session mirror first. The UI controls the currently running Pi session; full session CRUD/fork/switch is deferred. +2. **Desktop/Tauri scope:** recommended = defer process spawning. Tauri can connect to an already-running Pi extension server later, but Track A must not depend on Tauri. +3. **Unsupported features:** recommended = disable/stub PTY, MCP, LSP, provider OAuth, worktrees, and multi-session operations until Pi equivalents are verified. +4. **Token/bootstrap:** recommended = same-origin injected boot data in HTML served by the extension; bearer token stays in memory, never query strings/localStorage. +5. **Endpoint convention:** recommended = keep OpenCode-shaped endpoint paths/envelopes where the current frontend already expects them, then gradually move wrappers to owned names internally. +6. **Product name:** needs user decision. Options: `PiAgentUi`, `Pi Agent UI`, or another exact name. + +Implementation should not begin until these are confirmed. + +--- + +## Non-Negotiable Scope + +- No UI redesign. +- No `/hud` command. +- No `Ctrl+Shift+H` HUD toggle. +- Remove OpenCode runtime usage completely by final migration. +- Remove `@opencode-ai/sdk` by final migration. +- Reuse user Pi settings/auth/model setup; do not collect provider credentials in PiAgentUi. +- Use `better-tau/extensions/mirror-server.ts` as the main reference for a Pi extension serving HTTP/WebSocket from inside Pi. +- Current known `better-tau` unrelated changes must not be touched: `.gitignore`, `extensions/helper-bridge.ts`, `extensions/helper/`. + +--- + +## Core Corrections from Critical Review + +- **Do not conflate Pi package and Tauri app.** Track A is Pi package/extension; Track B is desktop cleanup. +- **Do not flatten message DTOs.** Current UI expects `MessageWithParts { info, parts }`, and many callsites read `message.info.*`. +- **Do not emit raw event envelopes unless `events.ts` is rewritten first.** Current frontend accepts `{ directory, payload: { type, properties } }` from `/global/event`. +- **Use actual Pi lifecycle events.** The shutdown event is `session_shutdown`, not `session_end`. +- **Typecheck extension files.** Existing `tsc -b` does not include `extensions/**/*.ts`. +- **Resolve token bootstrap early.** The UI cannot call protected APIs unless it receives base URL/token safely. +- **Treat `pi.sendUserMessage(...)` as asynchronous fire-and-stream.** It should return `202 accepted`; real message IDs arrive through events. + +--- + +## File/Module Responsibility Map + +### New files + +- `extensions/piagentui-server.ts` + - Pi extension entrypoint. + - Starts loopback HTTP/SSE/WS server. + - Serves built `dist/` assets. + - Injects safe runtime boot data into `index.html`. + - Bridges Pi session lifecycle and messages to current frontend-compatible events. + +- `extensions/piagentui-server-core.ts` + - Pure helpers for testable server behavior: loopback validation, auth validation, body-size guard, path traversal prevention, event envelope helpers. + +- `extensions/piagentui-server-core.test.ts` + - Unit tests for server security helpers. + +- `tsconfig.extension.json` + - TypeScript project for extension files and extension tests/helpers. + +- `src/api/piClient.ts` + - Typed fetch client replacing SDK usage. + - Sends local bearer auth in headers only. + - Normalizes typed errors. + +- `src/api/piClient.test.ts` + - Request/auth/error behavior tests. + +- `src/types/api/compat.ts` + - Owned compatibility DTOs shaped for current UI. + +- `src/api/piContract.ts` + - Owned request/response contracts and current event envelope definitions. + +- `src/api/piEventTranslator.test.ts` + - Contract tests for frontend event processing. + +- `docs/superpowers/specs/2026-05-28-pi-agent-extension-migration-design.md` + - Design spec, endpoint matrix, unsupported features, security, acceptance criteria. + +### Modified files + +- `package.json` + - Add `pi.extensions`. + - Add package metadata needed for Pi package usage. + - Add extension typecheck script. + - Add/remove dependencies in the correct sequence. + - Remove `@opencode-ai/sdk` when no imports remain. + +- `tsconfig.json` + - Include `tsconfig.extension.json` in references. + +- `vite.config.ts` + - Remove OpenCode dev proxy when API layer no longer uses OpenCode server. + - Add Pi extension dev proxy only if chosen. + +- `src/constants/api.ts`, `src/api/http.ts`, `src/store/serverStore.ts` + - Convert from OpenCode server/basic-auth concepts to PiAgentUi local server boot/connection state. + - No provider credential storage. + +- `src/api/sdk.ts` + - Delete after all imports are removed, or temporarily replace with a non-SDK compatibility facade. + +- `src/api/*.ts` + - Replace SDK calls with owned client calls or unsupported-feature stubs. + - Files likely in scope: `agent.ts`, `client.ts`, `command.ts`, `config.ts`, `file.ts`, `global.ts`, `lsp.ts`, `mcp.ts`, `message.ts`, `permission.ts`, `pty.ts`, `session.ts`, `skill.ts`, `todo.ts`, `tool.ts`, `vcs.ts`, `worktree.ts`. + +- `src/types/api/*.ts` + - Replace SDK-derived type aliases with owned DTOs or explicit unsupported types. + - Files likely in scope: `agent.ts`, `common.ts`, `config.ts`, `event.ts`, `file.ts`, `mcp.ts`, `message.ts`, `model.ts`, `permission.ts`, `project.ts`, `pty.ts`, `session.ts`, `skill.ts`, `tool.ts`, `vcs.ts`, `worktree.ts`. + +- `src/main.tsx`, `src/features/settings/components/ServiceSettings.tsx`, `src/hooks/useCloseServiceDialog.ts`, `src/store/serviceStore.ts` + - Track A: ensure OpenCode auto-start does not run while Pi extension mode is active. + - Track B: rename desktop service integration. + +- `src-tauri/src/app/commands/opencode.rs`, `src-tauri/src/app/commands/mod.rs`, `src-tauri/src/app/mod.rs` + - Track B only: rename commands and remove OpenCode process management. + +- `src-tauri/src/app/bridge/args.rs`, `src-tauri/src/app/commands/bridge.rs` + - Track B only: enforce loopback URL allowlist in Rust bridge. + +- `src-tauri/capabilities/default.json`, `src-tauri/tauri.conf.json`, `src-tauri/Cargo.toml` + - Track B only: remove OpenCode branding and tighten security. + +--- + +## Compatibility Contract + +### DTO shape must match current UI + +Current UI expects message shape similar to: + +```ts +export interface MessageWithParts { + info: Message + parts: Part[] +} +``` + +Therefore owned DTOs must preserve this shape first, then adapt internally: + +```ts +export interface CompatMessageInfo { + id: string + sessionID: string + role: 'user' | 'assistant' + time?: { created?: number; completed?: number } + summary?: string + modelID?: string + providerID?: string +} + +export interface CompatMessageWithParts { + info: CompatMessageInfo + parts: CompatPart[] +} + +export type CompatPart = + | CompatTextPart + | CompatReasoningPart + | CompatToolPart + | CompatFilePart + | CompatStepStartPart + | CompatStepFinishPart + | CompatUnsupportedPart + +export interface CompatTextPart { + id: string + sessionID: string + messageID: string + type: 'text' + text: string +} + +export interface CompatReasoningPart { + id: string + sessionID: string + messageID: string + type: 'reasoning' + text: string +} + +export interface CompatToolPart { + id: string + sessionID: string + messageID: string + type: 'tool' + tool: string + state: { status: 'pending' | 'running' | 'completed' | 'error'; input?: unknown; output?: unknown; error?: string } +} + +export interface CompatFilePart { + id: string + sessionID: string + messageID: string + type: 'file' + mime?: string + filename?: string + url?: string +} + +export interface CompatStepStartPart { + id: string + sessionID: string + messageID: string + type: 'step-start' +} + +export interface CompatStepFinishPart { + id: string + sessionID: string + messageID: string + type: 'step-finish' +} + +export interface CompatUnsupportedPart { + id: string + sessionID: string + messageID: string + type: 'unsupported' + label: string + data?: unknown +} +``` + +Exact fields must be finalized by a field inventory before implementation. + +### Event envelope must match current frontend first + +Current `src/api/events.ts` expects: + +```ts +export interface CompatGlobalEvent { + directory?: string + payload: { + type: string + properties: unknown + } +} +``` + +For MVP, the extension should emit this envelope on the current path or the frontend parser must be rewritten before server events are implemented. + +Recommended MVP: keep `/global/event` and OpenCode-style event names already handled by the UI: + +- `server.connected` +- `session.updated` +- `session.status` +- `session.idle` +- `session.error` +- `message.updated` +- `message.part.updated` +- `message.part.delta` +- `message.part.removed` +- `permission.asked` only if mapped; otherwise unsupported notification +- `question.asked` only if mapped; otherwise unsupported notification + +For text deltas, current store expects payload shape compatible with its `PartDeltaPayload`, including `sessionID`, `messageID`, `partID`, `field`, and `delta`. + +### Send message contract + +Current frontend send params include: + +```ts +interface SendMessageParams { + sessionId: string + text: string + attachments: Attachment[] + model: { providerID: string; modelID: string } + agent?: string + variant?: string + directory?: string +} +``` + +MVP behavior: + +- `text`: supported. +- `directory`: supported only as metadata/active project hint if Pi context allows it. +- `model`: support only if Pi allows model switch before send; otherwise ignore with warning event or reject with unsupported error. +- `attachments`: defer unless image/file input mapping is verified. +- `agent`, `variant`: defer unless Pi equivalent is verified. +- response: `202 accepted` plus optional synthetic client request ID; real assistant message ID is learned from events. + +--- + +## Endpoint Coverage Matrix + +### MVP supported + +| Capability | Existing frontend area | Compatibility path | Backend source | +| ----------------------- | --------------------------------- | ---------------------------------------------------- | ------------------------------------- | +| Health | `serverStore`, `client.ts` | `/global/health` or current health path | extension runtime state | +| Event stream | `events.ts` | `/global/event` | Pi extension lifecycle/events | +| Active models | `client.ts`, model hooks | wrapper-owned endpoint, final path decided in Task 1 | Pi model registry/settings | +| Active session snapshot | `session.ts`, stores | wrapper-owned endpoint, OpenCode-shaped response | active Pi context/session mirror | +| Send message | `message.ts`, `useChatSession.ts` | wrapper-owned endpoint | `pi.sendUserMessage(...)` | +| Abort turn | message/session controls | wrapper-owned endpoint | current Pi context abort if available | +| Static assets | browser/webview | `/`, `/assets/*` | extension static server | + +### Explicitly unsupported/deferred for MVP + +- PTY terminal sessions. +- MCP management. +- LSP diagnostics endpoints. +- Provider OAuth/login. +- Full multi-session create/fork/switch/delete. +- Worktrees. +- VCS operations unless trivially provided by current UI independent of OpenCode. +- Permission/question flows unless Pi extension UI/RPC gives equivalent semantics. +- Share/export unless Pi exposes safe API from extension context. +- Config, project, agent, skill, todo, tool, file APIs that currently depend on OpenCode SDK. + +Every deferred feature must return a typed unsupported error and must not call an OpenCode endpoint. + +--- + +## Security Contract + +Required for Track A: + +- Bind only to `127.0.0.1` and optionally `::1`. +- Use OS-selected random high port by default. +- Generate per-run bearer token. +- Bootstrap token via same-origin injected boot data in served HTML, unless user chooses another mechanism. +- Keep bearer token in memory/session only; do not store it in `localStorage` or settings backups. +- Reject API and stream requests without `Authorization: Bearer `. +- For browser-native SSE/WS where custom headers are constrained, prefer same-origin cookie/header strategy from extension-served page; do not put token in query strings or userinfo URLs. +- Validate `Host` and `Origin`. +- No wildcard CORS. +- Limit request body and WS frame sizes. +- Reject static path traversal. +- Never send provider API keys/OAuth tokens to browser. +- Never log local bearer token, provider secrets, or prompts by default. +- Close HTTP server and sockets on `session_shutdown`. + +Required for Track B if touched: + +- Rust bridge must validate URLs server-side, not only via Tauri capabilities. +- Allow only `http://127.0.0.1:*`, `http://localhost:*`, `ws://127.0.0.1:*`, `ws://localhost:*` as appropriate. +- Reject userinfo URLs, LAN IPs, non-loopback hosts, and external HTTPS URLs. +- Narrow `src-tauri/capabilities/default.json` from broad `http://**` / `https://**` to loopback-only. +- Reintroduce CSP instead of `csp: null` if compatible with current app. + +--- + +## Validation Contract + +Run during implementation milestones: + +```bash +cd PiAgentUi +npm run typecheck +npm run lint +npm run test:run +npm run build +``` + +After extension tsconfig is added: + +```bash +cd PiAgentUi +npm run typecheck:extensions +``` + +If Track B is touched: + +```bash +cd PiAgentUi/src-tauri +cargo test +``` + +OpenCode cleanup check must use an allowlist because docs may mention migration history: + +```bash +cd PiAgentUi +rg -n "@opencode-ai/sdk|getSDKClient|unwrap\(|opencode serve|OpenCode|opencode" src src-tauri extensions package.json vite.config.ts +``` + +Expected final runtime result: + +- no `@opencode-ai/sdk` imports; +- no `opencode serve` launcher; +- no OpenCode user-facing app title; +- only temporary deprecated aliases if Track B explicitly keeps them for one release. + +Pi package smoke: + +```bash +cd PiAgentUi +npm run build +npm pack --dry-run +``` + +Then install/load the package in Pi using the local package workflow chosen for this repo and verify: + +1. Pi loads the extension. +2. Extension serves the UI. +3. UI receives boot data. +4. UI sends a message to current Pi session. +5. Assistant response streams into existing chat UI. +6. Refresh/reconnect recovers current snapshot. +7. Invalid HTTP/SSE/WS auth is rejected. + +--- + +## Implementation Tasks + +### Task 1: Confirm Decisions and Write Design Spec + +**Files:** + +- Create: `docs/superpowers/specs/2026-05-28-pi-agent-extension-migration-design.md` + +- [ ] Confirm all decisions in “Decisions Required Before Implementation”. +- [ ] Write the design spec with: MVP, non-goals, endpoint matrix, DTO/event contract, security contract, validation contract, unsupported-feature behavior, Track A/Track B split. +- [ ] Include exact better-tau reference: `D:/Documents/Github/PiAgentUI/better-tau/extensions/mirror-server.ts`. +- [ ] Run: + +```bash +cd PiAgentUi +npm run typecheck +``` + +Expected: unchanged project still typechecks before migration starts. + +### Task 2: Inventory Current Frontend API Fields and SDK Coupling + +**Files:** + +- Create: `docs/superpowers/specs/2026-05-28-pi-agent-ui-field-inventory.md` + +- [ ] Run: + +```bash +cd PiAgentUi +rg -n "@opencode-ai/sdk|getSDKClient|unwrap\(|from './sdk'|from '../api/sdk'|Client\[|SDK[A-Za-z]" src +``` + +- [ ] Inventory all files importing SDK-derived types or `getSDKClient`. +- [ ] Inventory consumed fields for: + - `Session` + - `MessageWithParts` + - `Message.info` + - every `Part` variant rendered by components/stores + - `GlobalEvent` + - `PartDeltaPayload` + - `SendMessageParams` +- [ ] Mark each API module as: supported, stubbed, hidden, or deferred. +- [ ] Do not edit runtime code in this task. + +### Task 3: Add Owned Compatibility Types Without Breaking UI Shape + +**Files:** + +- Create: `src/types/api/compat.ts` +- Create: `src/api/piContract.ts` +- Modify: `src/types/api/message.ts`, `src/types/api/event.ts`, `src/types/api/session.ts` only after inventory confirms exact fields. + +- [ ] Add owned compatibility DTOs preserving current UI shape. +- [ ] Replace SDK aliases gradually with owned DTO aliases that match current field names. +- [ ] Do not flatten `MessageWithParts`. +- [ ] Keep `GlobalEvent` envelope compatible with current `events.ts` unless rewriting `events.ts` in the same task. +- [ ] Run: + +```bash +cd PiAgentUi +npm run typecheck +npm run test:run -- src/store/messageStore.test.ts src/api/events.test.ts src/hooks/useChatSession.test.tsx +``` + +Expected: failures only from intentional type differences fixed before proceeding. + +### Task 4: Add Extension Typecheck and Package Metadata + +**Files:** + +- Create: `tsconfig.extension.json` +- Modify: `tsconfig.json` +- Modify: `package.json` + +- [ ] Add `tsconfig.extension.json` including `extensions/**/*.ts`. +- [ ] Add script: + +```json +"typecheck:extensions": "tsc -p tsconfig.extension.json --noEmit" +``` + +- [ ] Include `typecheck:extensions` in `validate` after extension files exist. +- [ ] Add Pi package metadata: + +```json +"pi": { + "extensions": ["./extensions/piagentui-server.ts"] +} +``` + +- [ ] Add package contents/prepack strategy so `dist/` and `extensions/` are included when packed/installed. +- [ ] Decide dependency strategy for `@earendil-works/pi-coding-agent`: + - runtime should be supplied by Pi package loader if supported; + - local typecheck still needs a devDependency or path-compatible type resolution. +- [ ] Run: + +```bash +cd PiAgentUi +npm run typecheck +npm run typecheck:extensions +npm pack --dry-run +``` + +### Task 5: Implement Extension Server Core Helpers and Tests + +**Files:** + +- Create: `extensions/piagentui-server-core.ts` +- Create: `extensions/piagentui-server-core.test.ts` + +- [ ] Write tests first for: + - loopback host accepted; + - LAN/external host rejected; + - userinfo URL rejected; + - malformed auth rejected; + - valid bearer auth accepted; + - Origin/Host mismatch rejected; + - static path traversal rejected; + - body-size guard rejects oversized body; + - boot data injection does not put token in URL. + +Use test token construction that is obviously fake and not a credential: + +```ts +const sampleToken = ['test', 'token', 'value'].join('-') +``` + +- [ ] Implement pure helpers to pass tests. +- [ ] Run: + +```bash +cd PiAgentUi +npm run test:run -- extensions/piagentui-server-core.test.ts +npm run typecheck:extensions +``` + +### Task 6: Implement Pi Extension Server Skeleton + +**Files:** + +- Create: `extensions/piagentui-server.ts` +- Modify: extension tests/helpers as needed + +- [ ] Implement extension entrypoint importing `ExtensionAPI` from `@earendil-works/pi-coding-agent`. +- [ ] Start server on `session_start` or the earliest correct lifecycle event. +- [ ] Cleanup on `session_shutdown`. +- [ ] Bind loopback on random high port. +- [ ] Serve `dist/index.html`, injecting boot data same-origin. +- [ ] Serve `/assets/*` safely. +- [ ] Implement authenticated health endpoint compatible with frontend/serverStore path decision. +- [ ] Run: + +```bash +cd PiAgentUi +npm run typecheck:extensions +npm run build +npm pack --dry-run +``` + +### Task 7: Replace Basic Auth Server Store with Pi Local Boot State + +**Files:** + +- Modify: `src/store/serverStore.ts` +- Modify: `src/store/serverStore.test.ts` +- Modify: `src/api/http.ts` +- Modify: `src/constants/api.ts` + +- [ ] Remove provider/server password persistence from active Pi mode. +- [ ] Store only base URL and in-memory/session-scoped local token. +- [ ] Add migration tests proving old Basic auth/password values are not exported in backups after migration. +- [ ] Ensure auth headers use bearer token and never query strings. +- [ ] Run: + +```bash +cd PiAgentUi +npm run test:run -- src/store/serverStore.test.ts src/api/http.test.ts +npm run typecheck +``` + +### Task 8: Add `piClient` and Replace SDK Wrapper Entry Points + +**Files:** + +- Create: `src/api/piClient.ts` +- Create: `src/api/piClient.test.ts` +- Modify: `src/api/client.ts` +- Modify: `src/api/session.ts` +- Modify: `src/api/message.ts` + +- [ ] Write `piClient` tests for bearer headers, no token in URL, JSON errors, base URL normalization. +- [ ] Implement `get`, `post`, `delete`, and stream helper if needed. +- [ ] Replace model/session/message wrappers first because they are MVP-supported. +- [ ] Preserve existing exported function names consumed by hooks/components. +- [ ] For send message, return accepted state if Pi returns no message ID; rely on events for message updates. +- [ ] Run: + +```bash +cd PiAgentUi +npm run test:run -- src/api/piClient.test.ts src/hooks/useSessions.test.tsx src/hooks/useChatSession.test.tsx src/hooks/useModelSelection.test.tsx +npm run typecheck +``` + +### Task 9: Implement Pi Event Translation Compatible with Existing `events.ts` + +**Files:** + +- Modify: `extensions/piagentui-server.ts` +- Create: `src/api/piEventTranslator.test.ts` +- Modify: `src/api/events.ts` only if necessary and covered by tests. + +- [ ] Add tests for the current envelope `{ directory, payload: { type, properties } }`. +- [ ] Add tests for `message.part.delta` shape expected by `messageStore`. +- [ ] Map Pi events to existing frontend events: + - turn start -> `session.status` running; + - turn end -> `session.idle` or `session.status` idle; + - message update -> `message.updated`; + - part delta/update -> `message.part.delta` / `message.part.updated`; + - tool events -> tool part updates; + - errors -> `session.error`. +- [ ] Add initial snapshot event on connect. +- [ ] Add reconnect behavior using existing generation/snapshot logic. +- [ ] Run: + +```bash +cd PiAgentUi +npm run test:run -- src/api/events.test.ts src/api/sse.test.ts src/api/piEventTranslator.test.ts src/store/messageStore.test.ts +npm run typecheck +``` + +### Task 10: Gate or Stub All Unsupported OpenCode-Only Features + +**Files:** + +- Modify: remaining `src/api/*.ts` +- Modify: affected hooks/components only when they crash on unsupported errors. + +- [ ] Run: + +```bash +cd PiAgentUi +rg -n "getSDKClient|unwrap\(|@opencode-ai/sdk|opencode|OpenCode" src +``` + +- [ ] For every remaining API module, implement one of: + - supported Pi-backed wrapper; + - typed unsupported error; + - hidden/disabled UI action with existing notification style. +- [ ] Cover at least: + - `agent.ts` + - `command.ts` + - `config.ts` + - `file.ts` + - `global.ts` + - `lsp.ts` + - `mcp.ts` + - `permission.ts` + - `pty.ts` + - `skill.ts` + - `todo.ts` + - `tool.ts` + - `vcs.ts` + - `worktree.ts` +- [ ] Ensure `pty.ts` never embeds credentials/tokens in URLs. +- [ ] Run: + +```bash +cd PiAgentUi +npm run test:run +npm run typecheck +``` + +### Task 11: Prevent OpenCode Auto-Start in Pi Extension Mode + +**Files:** + +- Modify: `src/main.tsx` +- Modify: `src/store/serviceStore.ts` +- Modify: `src/features/settings/components/ServiceSettings.tsx` +- Modify: `src/hooks/useCloseServiceDialog.ts` + +- [ ] Detect Pi extension mode from boot data. +- [ ] In Pi extension mode, do not auto-start `opencode serve`. +- [ ] Hide/disable OpenCode service settings without changing layout structure more than necessary. +- [ ] Do not rename desktop commands yet unless Track B is approved. +- [ ] Run: + +```bash +cd PiAgentUi +npm run test:run -- src/store/serviceStore.test.ts src/utils/settingsBackup.test.ts +npm run typecheck +``` + +### Task 12: Remove `@opencode-ai/sdk` and SDK Facade + +**Files:** + +- Modify: `package.json`, lockfile if present +- Delete or rewrite: `src/api/sdk.ts` +- Modify: tests that mock SDK + +- [ ] Confirm no imports remain: + +```bash +cd PiAgentUi +rg -n "@opencode-ai/sdk|getSDKClient|unwrap\(" src +``` + +- [ ] Remove dependency using the repo's package manager: + +```bash +cd PiAgentUi +npm uninstall @opencode-ai/sdk +``` + +If package manager/lockfile state is unclear, stop and ask. + +- [ ] Delete `src/api/sdk.ts` if unused. +- [ ] Update tests to mock `piClient` or API wrappers instead of SDK. +- [ ] Run: + +```bash +cd PiAgentUi +npm run validate +npm run typecheck:extensions +``` + +### Task 13: Track B — Tauri Desktop Cleanup and Security Hardening + +Only start after Track A smoke passes and user approves desktop scope. + +**Files:** + +- Rename: `src-tauri/src/app/commands/opencode.rs` -> `src-tauri/src/app/commands/pi_agent.rs` +- Modify: `src-tauri/src/app/commands/mod.rs` +- Modify: `src-tauri/src/app/mod.rs` +- Modify: `src-tauri/src/app/bridge/args.rs` +- Modify: `src-tauri/src/app/commands/bridge.rs` +- Modify: `src/store/serviceStore.ts` +- Modify: `src-tauri/capabilities/default.json` +- Modify: `src-tauri/tauri.conf.json` +- Modify: `src-tauri/Cargo.toml` + +- [ ] Decide desktop behavior: connect to existing Pi extension server, spawn `pi --mode rpc`, or defer. +- [ ] Rename service commands to Pi names if desktop remains. +- [ ] Keep old command aliases for one transition release only if required by existing frontend code. +- [ ] Migrate storage keys: + - `opencode-auto-start-service` -> `pi-agent-auto-start-service` + - `opencode-binary-path` -> `pi-agent-binary-path` + - `opencode-service-env-vars` -> `pi-agent-service-env-vars` +- [ ] Add Rust-side URL allowlist tests for bridge connect/send paths. +- [ ] Narrow Tauri HTTP permissions to loopback-only. +- [ ] Reintroduce CSP if compatible. +- [ ] Run: + +```bash +cd PiAgentUi +npm run typecheck +npm run test:run +cd src-tauri +cargo test +``` + +### Task 14: Final Product Metadata and OpenCode Cleanup + +**Files:** + +- Modify: `package.json` +- Modify: `src-tauri/Cargo.toml` +- Modify: `src-tauri/tauri.conf.json` +- Modify: README/docs/user-facing strings + +- [ ] Apply user-approved final product name. +- [ ] Update package name/description. +- [ ] Update Tauri product name/window title/identifier if Track B is in scope. +- [ ] Remove OpenCode user-facing strings. +- [ ] Run allowlisted grep: + +```bash +cd PiAgentUi +rg -n "@opencode-ai/sdk|getSDKClient|unwrap\(|opencode serve|OpenCode|opencode" src src-tauri extensions package.json vite.config.ts README.md +``` + +Expected: no runtime/user-facing OpenCode references except approved temporary aliases. + +- [ ] Run full validation: + +```bash +cd PiAgentUi +npm run validate +npm run typecheck:extensions +npm run build +npm pack --dry-run +``` + +If Track B is in scope: + +```bash +cd PiAgentUi/src-tauri +cargo test +``` + +--- + +## Review Checklist for Implementation Milestones + +After Tasks 6, 9, 12, and 13, run a critical review pass before continuing: + +- Correctness/regression review against this plan. +- Test coverage and validation review. +- Security review for local HTTP/SSE/WS, token handling, and Tauri bridge if touched. +- Simplicity review to catch unnecessary OpenCode compatibility that can be deleted. + +The reviewer output should be synthesized before any fixes are applied. Apply fixes with one writer only. + +--- + +## Current Recommended Milestone Split + +1. **Milestone 1:** decisions + design spec + field inventory. +2. **Milestone 2:** owned DTOs + extension typecheck/package metadata. +3. **Milestone 3:** secure extension server skeleton + boot data. +4. **Milestone 4:** model/session/message wrappers + event streaming. +5. **Milestone 5:** unsupported feature gating + SDK removal. +6. **Milestone 6:** Pi package smoke and final OpenCode cleanup. +7. **Milestone 7:** optional Tauri desktop cleanup/hardening. diff --git a/docs/superpowers/plans/2026-05-30-piagentui-active-session-switch.md b/docs/superpowers/plans/2026-05-30-piagentui-active-session-switch.md new file mode 100644 index 0000000..d83db2e --- /dev/null +++ b/docs/superpowers/plans/2026-05-30-piagentui-active-session-switch.md @@ -0,0 +1,531 @@ +# Plano de Implementação — Troca Correta de Sessões no PiAgentUI + +> **Para agentes executores:** SUB-SKILL OBRIGATÓRIA: use `superpowers:subagent-driven-development` (recomendado) ou `superpowers:executing-plans` para implementar este plano tarefa por tarefa. Os passos usam checkbox (`- [ ]`) para acompanhamento. + +**Objetivo:** garantir que uma mensagem enviada no front para a sessão B seja enviada para a sessão real B do Pi, nunca para a sessão que estava ativa quando o Pi abriu. + +**Arquitetura:** o backend da extensão PiAgentUI será autoritativo para roteamento de mensagens. Antes de chamar `sendUserMessage`, ele compara `parsed.sessionId` com a sessão real ativa; se divergir, resolve o arquivo `.jsonl`, troca a sessão real do Pi com `switchSession`, e envia dentro do `withSession(replacedCtx)`. + +**Tech Stack:** TypeScript, extensão Pi (`ExtensionContext` / `ReplacedSessionContext`), HTTP local Node, Vitest, React frontend sem mudança estrutural. + +--- + +## Estrutura de arquivos + +- Modificar: `../pi/packages/coding-agent/src/core/extensions/types.ts` + - Adicionar `switchSession()` em `ExtensionContext`. +- Modificar: `../pi/packages/coding-agent/src/core/extensions/runner.ts` + - Expor `switchSession` também em `createContext()` usando o handler já existente. +- Modificar: `../pi/packages/coding-agent/dist/core/extensions/types.d.ts` + - Atualizar declaração usada pelo typecheck da extensão, caso o build do Pi não regenere dist durante a sessão. +- Modificar: `PiAgentUi/extensions/piagentui-server.ts` + - Resolver arquivo da sessão por ID. + - Enviar mensagem para sessão solicitada com `switchSession(..., { withSession })`. + - Preservar servidor HTTP/SSE em `session_shutdown` causado por `resume` web-iniciado. +- Modificar: `PiAgentUi/extensions/piagentui-server.test.ts` + - Cobrir envio para sessão ativa, envio para sessão diferente, sessão inexistente e switch cancelado. +- Modificar: `PiAgentUi/src/api/message.ts` + - Garantir que erro HTTP de envio não seja engolido; `sendMessageAsync()` já envia `sessionId`. +- Modificar opcionalmente: `PiAgentUi/src/hooks/useChatSession.ts` + - Se necessário, manter erro visível via `handleError('send message', error)` sem mudar UX. + +--- + +## Tarefa 1: Expor switchSession no contexto normal da extensão Pi + +**Arquivos:** +- Modificar: `../pi/packages/coding-agent/src/core/extensions/types.ts` +- Modificar: `../pi/packages/coding-agent/src/core/extensions/runner.ts` +- Modificar: `../pi/packages/coding-agent/dist/core/extensions/types.d.ts` + +- [ ] **Passo 1: Atualizar o contrato TypeScript do `ExtensionContext`** + +Em `../pi/packages/coding-agent/src/core/extensions/types.ts`, dentro de `export interface ExtensionContext`, adicionar logo após `compact(options?: CompactOptions): void;`: + +```ts + /** + * Switch to a different session file from long-lived extension services. + * Use `withSession` for work that must run after the replacement context is active. + */ + switchSession( + sessionPath: string, + options?: { withSession?: (ctx: ReplacedSessionContext) => Promise }, + ): Promise<{ cancelled: boolean }>; +``` + +- [ ] **Passo 2: Expor o método no contexto criado pelo runner** + +Em `../pi/packages/coding-agent/src/core/extensions/runner.ts`, dentro de `createContext(): ExtensionContext`, adicionar antes de `getSystemPrompt: () => {`: + +```ts + switchSession: (sessionPath, options) => { + runner.assertActive(); + return runner.switchSessionHandler(sessionPath, options); + }, +``` + +O trecho final deve ficar assim: + +```ts + compact: (options) => { + runner.assertActive(); + runner.compactFn(options); + }, + switchSession: (sessionPath, options) => { + runner.assertActive(); + return runner.switchSessionHandler(sessionPath, options); + }, + getSystemPrompt: () => { + runner.assertActive(); + return runner.getSystemPromptFn(); + }, +``` + +- [ ] **Passo 3: Atualizar a declaração dist se o build do Pi não for executado** + +Em `../pi/packages/coding-agent/dist/core/extensions/types.d.ts`, adicionar assinatura equivalente dentro de `ExtensionContext`: + +```ts + /** + * Switch to a different session file from long-lived extension services. + * Use `withSession` for work that must run after the replacement context is active. + */ + switchSession(sessionPath: string, options?: { + withSession?: (ctx: ReplacedSessionContext) => Promise; + }): Promise<{ + cancelled: boolean; + }>; +``` + +- [ ] **Passo 4: Verificar tipos do Pi core** + +Executar: + +```bash +cd D:/Documents/Github/PiAgentUI/pi/packages/coding-agent +pnpm test -- --runInBand test/suite/regressions/2860-replaced-session-context.test.ts +``` + +Se esse pacote não usa `pnpm test` com esse formato, executar o comando de teste já documentado no pacote. Resultado esperado: testes existentes passam sem erro de tipo. Se o comando correto não existir, registrar a saída e seguir para o typecheck do PiAgentUI na Tarefa 4. + +--- + +## Tarefa 2: Roteamento de mensagem por sessão no servidor PiAgentUI + +**Arquivos:** +- Modificar: `PiAgentUi/extensions/piagentui-server.ts` + +- [ ] **Passo 1: Adicionar tipo local para contexto com switch** + +Abaixo de `const MIME_TYPES`, adicionar: + +```ts +type SwitchableExtensionContext = ExtensionContext & { + switchSession?: ( + sessionPath: string, + options?: { withSession?: (ctx: any) => Promise }, + ) => Promise<{ cancelled: boolean }> +} +``` + +- [ ] **Passo 2: Trocar o tipo de `latestCtx`** + +Substituir: + +```ts + let latestCtx: ExtensionContext | null = null +``` + +por: + +```ts + let latestCtx: SwitchableExtensionContext | null = null +``` + +- [ ] **Passo 3: Criar helper de arquivo de sessão** + +Adicionar depois de `getCurrentSessionId()`: + +```ts + function getSessionFileForId(sessionId: string): string | null { + const sessionDir = latestCtx?.sessionManager?.getSessionDir() + if (!sessionDir || !fs.existsSync(sessionDir)) return null + + const files = fs.readdirSync(sessionDir).filter(f => f.endsWith('.jsonl')) + const matchedFile = files.find(f => f.endsWith(`_${sessionId}.jsonl`)) + return matchedFile ? path.join(sessionDir, matchedFile) : null + } +``` + +- [ ] **Passo 4: Extrair seleção de modelo para helper reutilizável** + +Adicionar depois de `getSessionFileForId()`: + +```ts + async function setRequestedModel(ctx: SwitchableExtensionContext, model: any) { + if (!model?.providerID || !model?.modelID) return + + try { + const targetModel = ctx.modelRegistry?.find(model.providerID, model.modelID) + if (!targetModel) return + + const currentModel = ctx.model + if (!currentModel || currentModel.id !== targetModel.id || currentModel.provider !== targetModel.provider) { + console.log(`[PiAgentUi] Switching session model to ${targetModel.provider}:${targetModel.id}`) + await pi.setModel(targetModel) + } + } catch (err) { + console.error('[PiAgentUi] Failed to set model:', err) + } + } +``` + +- [ ] **Passo 5: Adicionar flag para preservar servidor durante switch web-iniciado** + +Perto dos estados do servidor, adicionar: + +```ts + let preserveServerForSessionSwitch = false +``` + +- [ ] **Passo 6: Criar helper de envio correto por sessão** + +Adicionar depois de `setRequestedModel()`: + +```ts + async function sendUserMessageToRequestedSession(parsed: any): Promise<{ status: number; body: any }> { + const requestedSessionId = parsed.sessionId + const activeSessionId = getCurrentSessionId() + + if (!parsed.text) { + return { status: 400, body: { error: 'Missing message text' } } + } + + if (!requestedSessionId || requestedSessionId === activeSessionId) { + if (latestCtx) { + await setRequestedModel(latestCtx, parsed.model) + } + const p = pi.sendUserMessage(parsed.text) as any + if (p && typeof p.catch === 'function') { + p.catch((err: any) => { + console.error('[PiAgentUi] Failed to send user message:', err) + }) + } + return { status: 202, body: { sessionID: activeSessionId } } + } + + const sessionFile = getSessionFileForId(requestedSessionId) + if (!sessionFile) { + return { status: 404, body: { error: `Session not found: ${requestedSessionId}` } } + } + + if (!latestCtx?.switchSession) { + return { status: 501, body: { error: 'Pi session switching is not available in this runtime' } } + } + + preserveServerForSessionSwitch = true + try { + const result = await latestCtx.switchSession(sessionFile, { + withSession: async replacedCtx => { + latestCtx = replacedCtx as SwitchableExtensionContext + await setRequestedModel(latestCtx, parsed.model) + await replacedCtx.sendUserMessage(parsed.text) + }, + }) + + if (result.cancelled) { + return { status: 409, body: { error: 'Session switch cancelled' } } + } + + return { status: 202, body: { sessionID: requestedSessionId } } + } finally { + preserveServerForSessionSwitch = false + } + } +``` + +- [ ] **Passo 7: Substituir lógica atual de `/api/messages/send`** + +Dentro do handler `if (pathParts[1] === 'messages' && pathParts[2] === 'send' && method === 'POST')`, substituir o bloco que faz `setModel`, calcula `activeSessionId`, alerta divergência e chama `pi.sendUserMessage(parsed.text)` por: + +```ts + const result = await sendUserMessageToRequestedSession(parsed) + res.writeHead(result.status, { 'Content-Type': 'application/json' }) + res.end( + JSON.stringify({ + messageID: 'msg-' + Math.random().toString(36).substring(2) + '-' + Date.now(), + ...result.body, + }), + ) +``` + +O `catch` do `JSON.parse` permanece igual. + +- [ ] **Passo 8: Preservar servidor em `session_shutdown` de switch interno** + +Substituir: + +```ts + pi.on('session_shutdown', async () => { + stopServer() + }) +``` + +por: + +```ts + pi.on('session_shutdown', async event => { + if (preserveServerForSessionSwitch && event?.reason === 'resume') { + return + } + stopServer() + }) +``` + +- [ ] **Passo 9: Verificar typecheck da extensão** + +Executar: + +```bash +cd D:/Documents/Github/PiAgentUI/PiAgentUi +npx tsc --noEmit -p tsconfig.extension.json +``` + +Resultado esperado: nenhum erro. + +--- + +## Tarefa 3: Testes do servidor de extensão + +**Arquivos:** +- Modificar: `PiAgentUi/extensions/piagentui-server.test.ts` + +- [ ] **Passo 1: Adicionar sessão alternativa no teste existente** + +Depois da criação de `sessionFile`, adicionar: + +```ts + const otherSessionId = 'test-session-uuid-other' + const otherSessionFile = path.join(tempSessionDir, `session_${otherSessionId}.jsonl`) + fs.writeFileSync(otherSessionFile, JSON.stringify({ + type: 'session', + id: otherSessionId, + timestamp: new Date().toISOString(), + cwd: '/mock/cwd' + }) + '\n') +``` + +- [ ] **Passo 2: Adicionar mocks de switch no contexto** + +Antes de `const mockContext = {`, adicionar: + +```ts + const replacedSendUserMessage = vi.fn() + const switchSession = vi.fn(async (_sessionPath: string, options?: { withSession?: (ctx: any) => Promise }) => { + await options?.withSession?.({ + ...mockContext, + sessionManager: { + getSessionDir: () => tempSessionDir, + getSessionId: () => otherSessionId, + }, + sendUserMessage: replacedSendUserMessage, + }) + return { cancelled: false } + }) +``` + +Dentro de `mockContext`, adicionar: + +```ts + switchSession, +``` + +- [ ] **Passo 3: Testar envio para sessão ativa sem switch** + +Manter o teste existente de `/api/messages/send` sem `sessionId` e ajustar expectativa para aceitar qualquer segundo argumento opcional: + +```ts + expect(mockPi.sendUserMessage).toHaveBeenCalledWith('hello world') + expect(switchSession).not.toHaveBeenCalled() +``` + +- [ ] **Passo 4: Testar envio para sessão diferente com switch** + +Depois do teste de envio ativo, adicionar: + +```ts + const sendOtherRes = await fetch(`${baseUrl}/api/messages/send`, { + method: 'POST', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + sessionId: otherSessionId, + text: 'hello other session', + model: { providerID: 'google', modelID: 'gemini-2.5-pro' } + }) + }) + expect(sendOtherRes.status).toBe(202) + expect(switchSession).toHaveBeenCalledWith(otherSessionFile, expect.objectContaining({ + withSession: expect.any(Function), + })) + expect(replacedSendUserMessage).toHaveBeenCalledWith('hello other session') +``` + +- [ ] **Passo 5: Testar sessão inexistente** + +Adicionar: + +```ts + const missingSessionRes = await fetch(`${baseUrl}/api/messages/send`, { + method: 'POST', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + sessionId: 'missing-session-id', + text: 'must not be sent', + model: { providerID: 'google', modelID: 'gemini-2.5-pro' } + }) + }) + expect(missingSessionRes.status).toBe(404) + expect(replacedSendUserMessage).not.toHaveBeenCalledWith('must not be sent') +``` + +- [ ] **Passo 6: Rodar teste da extensão** + +Executar: + +```bash +cd D:/Documents/Github/PiAgentUI/PiAgentUi +npx vitest run extensions/piagentui-server.test.ts +``` + +Resultado esperado: teste passa. Se o teste monolítico ficar instável por porta/servidor, dividir em `describe` separado com porta limpa e `session_shutdown` no final. + +--- + +## Tarefa 4: Garantir que erros de envio sejam visíveis no frontend + +**Arquivos:** +- Modificar: `PiAgentUi/src/api/message.ts` +- Testar: `PiAgentUi/src/api/piClient.test.ts` ou criar caso em `PiAgentUi/src/api/message.test.ts` + +- [ ] **Passo 1: Confirmar comportamento de `piClient.post`** + +Ler `PiAgentUi/src/api/piClient.ts`. Se `piClient.post` já lança erro em status `>=400`, não alterar código. Se não lança, ajustar para lançar com status e body. + +O comportamento esperado para `sendMessageAsync()` é: + +```ts +export async function sendMessageAsync(params: SendMessageParams): Promise { + await piClient.post('/api/messages/send', { + sessionId: params.sessionId, + text: params.text, + model: params.model, + directory: params.directory, + }) +} +``` + +- [ ] **Passo 2: Adicionar teste de erro HTTP se necessário** + +Se `piClient` não tiver cobertura de erro, adicionar teste que simula `fetch` retornando `404` para `/api/messages/send` e espera rejeição. + +Código esperado do teste: + +```ts +it('rejects sendMessageAsync when the server rejects the target session', async () => { + vi.stubGlobal('fetch', vi.fn(async () => new Response(JSON.stringify({ error: 'Session not found' }), { + status: 404, + headers: { 'Content-Type': 'application/json' }, + }))) + + await expect(sendMessageAsync({ + sessionId: 'missing-session', + text: 'hello', + model: { providerID: 'google', modelID: 'gemini-2.5-pro' }, + directory: '/mock/cwd', + })).rejects.toThrow() +}) +``` + +- [ ] **Passo 3: Rodar testes de API relevantes** + +Executar: + +```bash +cd D:/Documents/Github/PiAgentUI/PiAgentUi +npx vitest run src/api/piClient.test.ts src/api/events.test.ts src/store/messageStore.test.ts +``` + +Resultado esperado: todos passam. + +--- + +## Tarefa 5: Verificação integrada + +**Arquivos:** +- Nenhum arquivo novo obrigatório. + +- [ ] **Passo 1: Rodar typecheck completo do app** + +```bash +cd D:/Documents/Github/PiAgentUI/PiAgentUi +npx tsc --noEmit +npx tsc --noEmit -p tsconfig.extension.json +``` + +Resultado esperado: ambos sem erro. + +- [ ] **Passo 2: Rodar testes focados** + +```bash +cd D:/Documents/Github/PiAgentUI/PiAgentUi +npx vitest run extensions/piagentui-server.test.ts src/api/events.test.ts src/store/messageStore.test.ts +``` + +Resultado esperado: todos passam. + +- [ ] **Passo 3: Rodar build** + +```bash +cd D:/Documents/Github/PiAgentUI/PiAgentUi +npm run build +``` + +Resultado esperado: build passa. Avisos de chunk grande do Vite são aceitáveis se não forem novos erros. + +- [ ] **Passo 4: Verificação manual no navegador** + +1. Reiniciar o Pi Agent para carregar a extensão atualizada. +2. Abrir PiAgentUI em `http://127.0.0.1:`. +3. Abrir sessão A e anotar o arquivo `.jsonl` dela. +4. Selecionar sessão B no sidebar. +5. Enviar mensagem `teste roteamento sessao B`. +6. Confirmar visualmente que user + assistant aparecem em B sem F5. +7. Confirmar que o arquivo `.jsonl` da sessão A não recebeu essa mensagem. +8. Confirmar que o arquivo `.jsonl` da sessão B recebeu essa mensagem. +9. Confirmar que `/global/event` continua com uma conexão viva e sem reconectar em loop. + +- [ ] **Passo 5: Commit final** + +```bash +cd D:/Documents/Github/PiAgentUI/PiAgentUi +git status --short +git add extensions/piagentui-server.ts extensions/piagentui-server.test.ts src/api/message.ts src/api/message.test.ts docs/superpowers/plans/2026-05-30-piagentui-active-session-switch.md +git commit -m "fix: route messages to selected Pi session" +``` + +Se a implementação modificar arquivos em `../pi`, fazer um commit separado dentro do repositório/árvore correspondente apenas se ele também for um repositório Git local. Como `D:/Documents/Github/PiAgentUI` não é repo e `PiAgentUi` é o repo local atual, registrar explicitamente os arquivos de Pi alterados no resumo final. + +--- + +## Auto-revisão do plano + +- Cobertura da spec: o plano cobre exposição de `switchSession`, roteamento backend, preservação do servidor, testes de erro e verificação manual. +- Placeholders: nenhum `TBD`, `TODO`, `implementar depois` ou instrução genérica sem ação concreta. +- Consistência de tipos: `SwitchableExtensionContext`, `switchSession`, `withSession`, `replacedCtx.sendUserMessage` e `sessionID` são usados consistentemente. +- Escopo: limitado ao sistema de sessão/roteamento; não redesenha UI nem lista de sessões. diff --git a/docs/superpowers/plans/2026-05-30-piagentui-sql-settings-voice.md b/docs/superpowers/plans/2026-05-30-piagentui-sql-settings-voice.md new file mode 100644 index 0000000..b79a7fe --- /dev/null +++ b/docs/superpowers/plans/2026-05-30-piagentui-sql-settings-voice.md @@ -0,0 +1,51 @@ +# PiAgentUI SQL Settings and Voice Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Move backend-owned PiAgentUI settings to a local SQLite database and fix/extend voice settings for local OpenAI-compatible STT/TTS providers such as Speaches. + +**Architecture:** The backend extension becomes the source of truth for backend-owned settings using `~/.pi/agent/piagentui.db`, with a SQL table for namespaced JSON settings and migration from the legacy `piagentui-settings.json`. Frontend voice settings continue using HTTP APIs, now with STT API-key-required control and TTS model/voice configuration. + +**Tech Stack:** Node `node:sqlite` `DatabaseSync`, TypeScript, Vitest, React settings components. + +--- + +## Files + +- Create: `extensions/piagentui-settings-store.ts` — SQLite settings repository, schema, defaults, legacy JSON migration. +- Create: `extensions/piagentui-settings-store.test.ts` — unit tests for SQL persistence and migration. +- Modify: `extensions/piagentui-server.ts` — replace JSON helpers with SQLite store; add TTS settings/speech endpoints; allow keyless OpenAI-compatible STT when configured. +- Modify: `extensions/piagentui-server.test.ts` — integration coverage for keyless STT and TTS settings. +- Modify: `src/types/api/stt.ts`, `src/api/stt.ts`, `src/hooks/useVoiceTranscription.ts` — expose `apiKeyRequired` and avoid blocking local Speaches. +- Create/Modify: `src/types/api/tts.ts`, `src/api/tts.ts`, `src/features/settings/components/TtsSettings.tsx`, `src/features/settings/components/VoiceSettings.tsx` — TTS settings UI with voice selection. +- Modify tests under `src/hooks` and `src/features/settings/components`. + +## Tasks + +### Task 1: SQL settings store + +- [ ] Write failing store tests for SQLite persistence and legacy JSON migration. +- [ ] Implement `extensions/piagentui-settings-store.ts` with `app_meta` and `settings` tables. +- [ ] Run targeted store tests and commit. + +### Task 2: Backend voice behavior + +- [ ] Write failing server/integration tests for keyless OpenAI-compatible STT and TTS settings sanitization. +- [ ] Update backend STT to require API key only when `apiKeyRequired` is true. +- [ ] Add TTS settings and `/api/tts/speech` proxy. +- [ ] Run extension tests and commit. + +### Task 3: Frontend voice UI + +- [ ] Write failing hook/settings tests for keyless STT start and TTS voice selection. +- [ ] Add STT `apiKeyRequired` toggle. +- [ ] Add TTS settings card with model, voice, format, endpoint, API key behavior. +- [ ] Run targeted frontend tests and commit. + +### Task 4: Validation + +- [ ] Run `npx tsc --noEmit`. +- [ ] Run `npm run typecheck:extensions`. +- [ ] Run targeted voice/storage tests. +- [ ] Run `npm run build`. +- [ ] Run `git diff --check`. diff --git a/docs/superpowers/plans/2026-05-30-piagentui-stt-lan-real-sessions-project-folders.md b/docs/superpowers/plans/2026-05-30-piagentui-stt-lan-real-sessions-project-folders.md new file mode 100644 index 0000000..8db2467 --- /dev/null +++ b/docs/superpowers/plans/2026-05-30-piagentui-stt-lan-real-sessions-project-folders.md @@ -0,0 +1,93 @@ +# PiAgentUI STT LAN Real Sessions Project Folders Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Implement real Pi session creation, project-folder session history, LAN access with QR code, and file-based STT voice input for PiAgentUI. + +**Architecture:** Keep runtime changes inside PiAgentUI's extension backend and focused frontend surfaces. Add pure helpers for network/session grouping/STT settings, test them first, then wire endpoints and UI with minimal component changes. + +**Tech Stack:** TypeScript, React 19, Vite 8, Vitest, Testing Library, Node HTTP extension server, browser MediaRecorder, OpenAI-compatible transcription API. + +--- + +## File Map + +- `extensions/piagentui-server-core.ts`: host/origin validation helpers, LAN URL discovery, STT URL/settings sanitization helpers. +- `extensions/piagentui-server-core.test.ts`: unit tests for backend helpers. +- `extensions/piagentui-server.ts`: real session creation, LAN settings endpoints, STT settings/transcription endpoints, dynamic boot base URL. +- `extensions/piagentui-server.test.ts`: integration tests for endpoints. +- `src/types/api/network.ts`: network access response/request types. +- `src/api/network.ts`, `src/api/network.test.ts`: client API for LAN access. +- `src/types/api/stt.ts`: STT settings/transcription types. +- `src/api/stt.ts`, `src/api/stt.test.ts`: client API for STT. +- `src/hooks/useVoiceTranscription.ts`, `src/hooks/useVoiceTranscription.test.tsx`: browser recording/transcription state machine. +- `src/features/chat/input/VoiceInputButton.tsx`, `src/features/chat/input/VoiceInputButton.test.tsx`: mic UI. +- `src/features/chat/InputBox.tsx`: accept voice transcript insertion. +- `src/features/chat/input/InputToolbar.tsx`: render voice button. +- `src/features/sessions/sessionProjectGroups.ts`, `src/features/sessions/sessionProjectGroups.test.ts`: pure project grouping. +- `src/features/sessions/SessionList.tsx`, `src/features/sessions/SessionList.test.tsx`: project folder rendering. +- `src/features/settings/components/NetworkAccessSettings.tsx`, `src/features/settings/components/NetworkAccessSettings.test.tsx`: LAN toggle/URL/QR UI. +- `src/features/settings/components/ServersSettings.tsx`: include network section. +- `src/locales/en/*.json`, `src/locales/zh-CN/*.json`: minimal labels. +- `package.json`: add `qrcode` only if frontend QR generation needs it. + +## Task 1: Backend helper tests and helpers + +- [ ] Write tests in `extensions/piagentui-server-core.test.ts` for LAN host validation, local URL discovery injection, and STT URL/settings sanitization. +- [ ] Implement helpers in `extensions/piagentui-server-core.ts`. +- [ ] Run `npx vitest run extensions/piagentui-server-core.test.ts`. +- [ ] Commit `test/feat: add network and stt backend helpers`. + +## Task 2: Real session creation endpoint + +- [ ] Add failing tests in `extensions/piagentui-server.test.ts` proving `POST /api/sessions` creates a new `.jsonl`, calls `switchSession`, returns the new id, and returns `501` without `switchSession`. +- [ ] Implement minimal real session file creation in `extensions/piagentui-server.ts`. +- [ ] Run `npx vitest run extensions/piagentui-server.test.ts`. +- [ ] Commit `feat: create real pi sessions from ui`. + +## Task 3: Project folder grouping + +- [ ] Add failing tests in `src/features/sessions/sessionProjectGroups.test.ts` for Windows/POSIX grouping, basename labels, ordering, and search behavior. +- [ ] Implement `sessionProjectGroups.ts`. +- [ ] Add/adjust `SessionList.test.tsx` for folders expand/collapse and selection. +- [ ] Update `SessionList.tsx` minimally to render project folders by default when grouped. +- [ ] Run `npx vitest run src/features/sessions/sessionProjectGroups.test.ts src/features/sessions/SessionList.test.tsx`. +- [ ] Commit `feat: group sessions by project folder`. + +## Task 4: LAN access endpoints and UI + +- [ ] Add backend endpoint tests for `GET/POST /api/network/access`, LAN host allowed only when enabled, and host-based boot data. +- [ ] Implement network settings persistence and endpoint behavior. +- [ ] Add frontend API tests for `src/api/network.ts`. +- [ ] Add `NetworkAccessSettings` tests for toggle, URL, and QR placeholder/rendering. +- [ ] Implement API and settings component. +- [ ] Wire it into `ServersSettings.tsx`. +- [ ] Run targeted backend/frontend tests. +- [ ] Commit `feat: expose local network access settings`. + +## Task 5: STT settings and transcription backend/client + +- [ ] Add backend tests for redacted settings, save semantics, invalid URLs, and transcription provider errors. +- [ ] Implement settings persistence and transcription endpoint. +- [ ] Add `src/api/stt.test.ts` and implement `src/api/stt.ts`. +- [ ] Run targeted tests. +- [ ] Commit `feat: add stt settings and transcription api`. + +## Task 6: Voice recording UI + +- [ ] Add hook tests for permission denied, record/transcribe success, and error path. +- [ ] Implement `useVoiceTranscription.ts`. +- [ ] Add `VoiceInputButton` tests and component. +- [ ] Wire `InputToolbar` and `InputBox` to append transcript to composer without auto-send. +- [ ] Run targeted tests. +- [ ] Commit `feat: add voice transcription composer control`. + +## Task 7: Final validation and review + +- [ ] Run `npx tsc --noEmit`. +- [ ] Run `npx tsc --noEmit -p tsconfig.extension.json`. +- [ ] Run `npm run test:run`. +- [ ] Run `npm run build`. +- [ ] Run `git diff --check`. +- [ ] Review changed files for unnecessary edits. +- [ ] Commit any final fixes. diff --git a/docs/superpowers/plans/2026-05-30-roadmap-contexto-skills-mcp.md b/docs/superpowers/plans/2026-05-30-roadmap-contexto-skills-mcp.md new file mode 100644 index 0000000..726a629 --- /dev/null +++ b/docs/superpowers/plans/2026-05-30-roadmap-contexto-skills-mcp.md @@ -0,0 +1,81 @@ +# Roadmap Contexto, Skills e MCP Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** concluir a integração de contexto real, skills reais, avisos de compaction/overflow e MCP nativo no PiAgentUI. + +**Architecture:** O backend da extensão PiAgentUI deve ser a fonte de verdade para dados do runtime Pi. A UI deve consumir endpoints pequenos e tipados, preservando fallback seguro quando dados runtime não existirem. + +**Tech Stack:** TypeScript, React, Vite, Vitest, extensão PiAgentUI HTTP/SSE, Pi runtime APIs. + +--- + +## Task 1: Context metadata e uso real + +**Status:** concluído em `f5a3fa5 feat: enrich context details with model metadata`. + +## Task 2: Tool results somente em tool cards + +**Status:** concluído em `41adf23 fix: keep tool results in tool cards`. + +## Task 3: Skills reais por origem + +**Status:** concluído em `257d63c feat: show real skills by source`. + +## Task 4: Avisos de overflow e compaction + +**Files:** +- Modify: `src/hooks/useSessionStats.ts` +- Modify: `src/features/chat/sidebar/SidebarFooter.tsx` +- Modify: `src/features/chat/sidebar/ContextDetailsDialog.tsx` +- Test: `src/hooks/useSessionStats.test.tsx` + +- [ ] Adicionar estado derivado para `contextStatus`: `unknown`, `normal`, `warning`, `danger`. +- [ ] Mostrar fonte do dado: runtime, tokens ou estimativa. +- [ ] Mostrar aviso quando `contextKnown=false` após compaction. +- [ ] Mostrar aviso quando uso >= 70% e >= 90%. +- [ ] Rodar testes focados e build. +- [ ] Commit: `feat: surface context overflow notices`. + +## Task 5: MCP backend real + +**Files:** +- Modify/Create: `extensions/piagentui-server.ts` +- Modify/Create: `src/api/mcp.ts` +- Test: `extensions/piagentui-server.test.ts` + +- [ ] Ler configuração MCP do Pi/agent config quando disponível. +- [ ] Expor `/api/mcp/servers` com servidores, status e origem. +- [ ] Preservar fallback vazio seguro. +- [ ] Testar config válida, ausente e inválida. +- [ ] Commit: `feat: expose real mcp servers`. + +## Task 6: MCP UI real + +**Files:** +- Modify: `src/components/McpPanel.tsx` +- Modify: `src/types/api/mcp.ts` +- Test: `src/components/McpPanel.test.tsx` se existir; caso contrário criar. + +- [ ] Agrupar servidores por status/origem. +- [ ] Mostrar tools quando disponíveis. +- [ ] Mostrar erro de inicialização/config. +- [ ] Commit: `feat: render real mcp server status`. + +## Task 7: Skills avançado + +**Files:** +- Modify: `extensions/piagentui-server.ts` +- Modify: `src/components/SkillPanel.tsx` + +- [ ] Expor diagnósticos/collisions quando Pi disponibilizar. +- [ ] Mostrar `disableModelInvocation` quando disponível. +- [ ] Melhorar origem com package/source quando disponível. +- [ ] Commit: `feat: add skill diagnostics metadata`. + +## Task 8: Hardening e docs + +- [ ] Extrair parsers grandes de `extensions/piagentui-server.ts` se necessário. +- [ ] Atualizar Obsidian/task list. +- [ ] Rodar full test/build. +- [ ] Fazer checkpoint commit/tag local se solicitado. diff --git a/docs/superpowers/plans/2026-05-31-piagentui-git-composer-control.md b/docs/superpowers/plans/2026-05-31-piagentui-git-composer-control.md new file mode 100644 index 0000000..da4af70 --- /dev/null +++ b/docs/superpowers/plans/2026-05-31-piagentui-git-composer-control.md @@ -0,0 +1,58 @@ +# PiAgentUI Git Composer Control Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Implement a Git branch/control popover in the message composer using GitHub Octicons and safe backend Git endpoints. + +**Architecture:** Add focused Git logic in `extensions/piagentui-git-manager.ts`, expose `/api/vcs/*` endpoints from the extension server, expand frontend VCS API/types, and add `GitComposerControl` inside `InputToolbar` before agent/variant selectors. + +**Tech Stack:** React 19, TypeScript, Vite, Vitest, Node child_process, Git CLI, `@primer/octicons-react`. + +--- + +## Files + +- Create: `extensions/piagentui-git-manager.ts` +- Create: `extensions/piagentui-git-manager.test.ts` +- Modify: `extensions/piagentui-server.ts` +- Modify: `extensions/piagentui-server.test.ts` +- Modify: `src/types/api/vcs.ts` +- Modify: `src/types/api/index.ts` +- Modify: `src/api/vcs.ts` +- Create/modify: `src/api/vcs.test.ts` +- Create: `src/features/chat/input/GitComposerControl.tsx` +- Create: `src/features/chat/input/GitComposerControl.test.tsx` +- Modify: `src/features/chat/input/InputToolbar.tsx` +- Modify: `package.json`, `package-lock.json` + +## Task 1 — Backend Git manager + +- [ ] Write failing tests for branch parsing, status parsing, safe argv commands and commit validation. +- [ ] Implement `runGit`, `getGitStatus`, `listGitBranches`, `checkoutGitBranch`, `createGitBranch`, `stageGitPaths`, `unstageGitPaths`, `commitGitChanges`, `pullGitBranch`, `pushGitBranch`. +- [ ] Verify focused test passes. + +## Task 2 — Backend endpoints + +- [ ] Write failing server endpoint tests for `/api/vcs/status`, `/api/vcs/branches`, `/api/vcs/commit`. +- [ ] Add endpoint routing in `piagentui-server.ts` with request parsing and errors. +- [ ] Verify server tests pass. + +## Task 3 — Frontend API contract + +- [ ] Write failing API tests for query/body shapes. +- [ ] Expand `src/types/api/vcs.ts` and `src/api/vcs.ts`. +- [ ] Verify API tests pass. + +## Task 4 — Composer UI + +- [ ] Install `@primer/octicons-react`. +- [ ] Write failing component tests for branch chip, popover opening and commit action. +- [ ] Implement `GitComposerControl` with Octicons. +- [ ] Integrate into `InputToolbar` before agent selector. +- [ ] Verify component tests pass. + +## Task 5 — Full verification + +- [ ] Format touched files with `node node_modules/prettier/bin/prettier.cjs --write ...`. +- [ ] Run LSP diagnostics on touched files. +- [ ] Run `npm run typecheck`, `npm run typecheck:extensions`, focused tests, `npm run test:run`, `npm run build`, and `git diff --check`. diff --git a/docs/superpowers/specs/2026-05-28-pi-agent-extension-migration-design.md b/docs/superpowers/specs/2026-05-28-pi-agent-extension-migration-design.md new file mode 100644 index 0000000..5d0ffce --- /dev/null +++ b/docs/superpowers/specs/2026-05-28-pi-agent-extension-migration-design.md @@ -0,0 +1,66 @@ +# Especificação Técnica: Migração do PiAgentUi para Extensão do Pi Agent + +Esta especificação define o desenho arquitetônico, a segurança, as estruturas de dados e a integração desktop necessários para migrar o frontend `PiAgentUi` (originalmente construído para o OpenCode) para o ecossistema do **Pi Agent**. + +--- + +## 1. Arquitetura e Fluxo de Dados + +A arquitetura do `PiAgentUi` será descentralizada do OpenCode e integrada diretamente ao processo do Pi Agent através do modelo de extensões. + +1. **Loopback Server (Porta Dinâmica):** A extensão `piagentui-server.ts` se conectará ao ciclo de vida do Pi e abrirá um servidor local seguro escutando em `127.0.0.1` em uma porta livre selecionada pelo sistema operacional. +2. **Same-Origin Boot Data:** A extensão servirá o HTML principal e injetará no próprio corpo do `index.html` um bloco JSON contendo as informações de boot (URL base, porta, e o token bearer gerado na inicialização). +3. **Ponte de Comunicação:** Toda chamada HTTP e WebSocket será autenticada usando o token em memória. + +``` +┌─────────────────┐ ┌────────────────────────┐ ┌────────────────┐ +│ Tauri (Rust) │ ───> │ Pi Agent (Processo) │ <───> │ Webview (UI) │ +│ Port Check & │ │ - piagentui-server │ │ - React 19 │ +│ Launch State │ │ - HTTP + WS Server │ │ - Local Token │ +└─────────────────┘ └────────────────────────┘ └────────────────┘ +``` + +--- + +## 2. Matriz de Endpoints e Recursos + +Para o MVP, a API do `PiAgentUi` responderá nos mesmos paths esperados pelo frontend, mapeando-os para chamadas da extensão e mockando recursos incompatíveis. + +| Recurso / Funcionalidade | Endpoint Frontend | Ação no Backend (Pi Agent Extension) | Status no MVP | +| :--- | :--- | :--- | :--- | +| **Health Check** | `/global/health` | Retorna status da extensão do Pi | **Suportado** | +| **Event Stream** | `/global/event` | SSE/WebSocket que espelha os eventos do Pi | **Suportado** | +| **Modelos Ativos** | `/api/models` | Consulta o registro de modelos configurado no Pi | **Suportado** | +| **Multi-Sessão (CRUD)** | `/api/sessions` | Gerencia sessões locais da pasta de sessões do Pi | **Suportado** | +| **Enviar Mensagem** | `/api/messages/send` | Dispara `pi.sendUserMessage(...)` assincronamente | **Suportado** | +| **Parar Mensagem** | `/api/messages/abort` | Aborta o turno ativo do Pi Agent se disponível | **Suportado** | +| **PTY Terminal** | `/api/pty` | Retorna erro 501 / Desativado visualmente | **Stubbed** | +| **MCP / LSP** | `/api/mcp` / `/api/lsp`| Retorna lista vazia ou erro 501 | **Stubbed** | +| **Worktrees / VCS** | `/api/worktrees` | Retorna erro 501 / Desativado visualmente | **Stubbed** | + +--- + +## 3. Segurança e Tokens + +1. **Porta Dinâmica:** Impedir conflitos de porta iniciando sempre em portas dinâmicas alocadas pelo SO (`port: 0`). +2. **Bearer Token:** Gerar um UUID/token seguro de uso único na inicialização do servidor. +3. **Sem Persistência de Senhas:** Nenhuma credencial do usuário será armazenada fisicamente ou em `localStorage`. O token de autorização residirá unicamente na memória da sessão React. +4. **Validação de Host/Origin:** Rejeitar qualquer requisição com cabeçalho `Host` ou `Origin` que não seja estritamente local (`127.0.0.1` ou `localhost`). +5. **Prevenção de Traversal:** Servir arquivos estáticos validando canonicalização de caminhos para evitar vulnerabilidade de directory traversal no Windows. + +--- + +## 4. Integração Tauri Desktop (Track B) + +Com a decisão de **incluir o Tauri já no primeiro marco**, o app desktop sofrerá as seguintes modificações: +* **Renomeação de Comandos:** Todos os comandos Tauri registrados no Rust e no frontend serão renomeados de `*opencode*` para correspondentes de `*pi*` ou `*pi_agent*`. +* **Subprocesso do Pi:** Em vez de iniciar `opencode serve`, o Tauri iniciará o processo do Pi (ex: `pi --mode rpc`) adicionando dinamicamente o parâmetro `--extension` apontando para o nosso servidor local se necessário, ou confiando no auto-load das extensões instaladas. +* **Filtro de URL Restrito:** O Rust bridge do Tauri terá uma validação explícita em tempo de execução para rejeitar qualquer tráfego que tente se conectar a servidores externos, limitando a ponte estritamente a adaptadores de loopback permitidos. + +--- + +## 5. Referências do Projeto + +Esta migração baseia-se diretamente no comportamento implementado em: +`D:/Documents/Github/PiAgentUI/better-tau/extensions/mirror-server.ts` +utilizando o modelo de ciclo de vida e roteamento nativo lá desenvolvidos como garantia de estabilidade sob o runtime do Pi. diff --git a/docs/superpowers/specs/2026-05-28-pi-agent-ui-field-inventory.md b/docs/superpowers/specs/2026-05-28-pi-agent-ui-field-inventory.md new file mode 100644 index 0000000..8329cb0 --- /dev/null +++ b/docs/superpowers/specs/2026-05-28-pi-agent-ui-field-inventory.md @@ -0,0 +1,105 @@ +# Inventário de Campos e Dependências do SDK do OpenCode no PiAgentUi + +Este documento registra todas as dependências da biblioteca `@opencode-ai/sdk` encontradas no `PiAgentUi`, detalhando as estruturas (DTOs) que o frontend consome e como elas serão mapeadas para a nova estrutura de compatibilidade com o Pi Agent. + +--- + +## 1. Arquivos com Acoplamento ao SDK do OpenCode + +Os seguintes arquivos realizam importações diretas do cliente SDK (`@opencode-ai/sdk`) ou utilizam tipos derivados dele: + +### Arquivos em `src/api/` +* `agent.ts` +* `client.ts` +* `command.ts` +* `config.ts` +* `file.ts` +* `global.ts` +* `lsp.ts` +* `mcp.ts` +* `message.ts` +* `permission.ts` +* `pty.ts` +* `session.ts` +* `skill.ts` +* `todo.ts` +* `tool.ts` +* `vcs.ts` +* `worktree.ts` +* `sdk.ts` + +### Arquivos em `src/types/api/` +* `agent.ts` +* `common.ts` +* `config.ts` +* `event.ts` +* `file.ts` +* `mcp.ts` +* `message.ts` +* `model.ts` +* `permission.ts` +* `project.ts` +* `pty.ts` +* `session.ts` +* `skill.ts` +* `tool.ts` +* `vcs.ts` +* `worktree.ts` + +--- + +## 2. Inventário de Estruturas Consumidas pela UI + +Para que a migração não quebre o frontend, a API da extensão Pi deve produzir e aceitar dados que correspondam a estas chaves essenciais: + +### A. Estrutura de Mensagem (`MessageWithParts` / `Message`) +O frontend lê de `message.info` e de `message.parts`: +* **`info`** (`UserMessage` ou `AssistantMessage`): + * `id`: string (UUID da mensagem). + * `sessionID`: string (UUID da sessão). + * `role`: `'user' | 'assistant'`. + * `time`: `{ created?: number; completed?: number }`. + * `summary`: string (breve descrição se disponível). + * `modelID`: string (somente assistente). + * `providerID`: string (somente assistente). +* **`parts`** (Array de blocos que compõem a mensagem): + * **`TextPart`**: `{ type: 'text', text: string }`. + * **`ReasoningPart`**: `{ type: 'reasoning', text: string }`. + * **`ToolPart`**: `{ type: 'tool', tool: string, state: { status: 'pending' | 'running' | 'completed' | 'error', input?: any, output?: any, error?: string } }`. + * **`FilePart`**: `{ type: 'file', filename?: string, mime?: string, url?: string }`. + * **`StepStartPart`**: `{ type: 'step-start' }`. + * **`StepFinishPart`**: `{ type: 'step-finish' }`. + +### B. Estrutura de Sessão (`Session`) +Utilizada no menu lateral de histórico e criação: +* `id`: string (UUID). + * `title`: string (nome da sessão). + * `directory`: string (diretório de trabalho correspondente). + * `time`: `{ created?: number; updated?: number }`. + * `summary`: `{ title?: string; category?: string; difficulty?: string; tokens?: number; cost?: number }`. + * `status`: `'idle' | 'running' | 'error'`. + +### C. Envelopes de Eventos Globais (`GlobalEvent`) +Processados pelo pipeline de SSE em `events.ts`: +* `{ directory?: string, payload: { type: string, properties: any } }` +* Eventos chave: + * `server.connected` + * `session.updated` + * `session.status` + * `session.idle` + * `session.error` + * `message.updated` + * `message.part.updated` + * `message.part.delta` + +--- + +## 3. Estratégia de Mapeamento no MVP + +| Módulo Original | Ação / Novo Mapeamento | +| :--- | :--- | +| **`session`** | Consultas diretas ao Pi Session Manager via rotas REST locais da extensão. Mapeado para sessões nativas do Pi. | +| **`message`** | Mapeado para o envio assíncrono de prompts ao Pi (`pi.sendUserMessage`). Eventos nativos do Pi traduzidos em deltas de partes. | +| **`tool`** | Retorna ferramentas padrões disponíveis do Pi. | +| **`pty` / `lsp` / `mcp`** | Desativados visualmente / stubs de array vazio / erro 501. | +| **`worktree` / `vcs`** | Desativados visualmente. | diff --git a/docs/superpowers/specs/2026-05-30-piagentui-active-session-switch-design.md b/docs/superpowers/specs/2026-05-30-piagentui-active-session-switch-design.md new file mode 100644 index 0000000..ed1fa5b --- /dev/null +++ b/docs/superpowers/specs/2026-05-30-piagentui-active-session-switch-design.md @@ -0,0 +1,140 @@ +# PiAgentUI Active Session Switch Design + +## Goal + +When the user opens an existing session in PiAgentUI and sends a message, the message must be delivered to that selected Pi session, not to whichever session was active when the Pi TUI launched. + +## Current finding + +- The frontend route/store correctly loads selected sessions and their messages. +- `src/hooks/useChatSession.ts` sends the selected `sessionId` to `sendMessageAsync()`. +- `extensions/piagentui-server.ts` receives `sessionId`, but still calls `pi.sendUserMessage(parsed.text)`. +- `pi.sendUserMessage()` always targets the current active Pi runtime session. +- Pi exposes `switchSession()` only on `ExtensionCommandContext`, not on normal event `ExtensionContext` used by `session_start` and the HTTP server. +- `AgentSessionRuntime.switchSession()` intentionally emits `session_shutdown`, disposes the old session, creates the replacement session, rebinds extensions, then runs `withSession(replacedCtx)`. +- The existing PiAgentUI extension currently stops the web server on every `session_shutdown`, so a normal Pi session switch can close the HTTP/SSE server and force reconnects. + +## Selected approach: activate and send on the backend + +The backend should become authoritative for message routing: + +1. Resolve requested `sessionId` to the JSONL session file in the current session directory. +2. If the requested session differs from the active Pi session, switch the real Pi runtime to that session. +3. Send the user message inside the replacement session callback so the message cannot land in the old session. +4. Keep the existing frontend model: route/session selection still works as today; `sendMessageAsync()` keeps passing `sessionId`. + +This preserves the current UI while making the server guarantee correctness. + +## Required changes + +### Pi core + +Expose a safe session-switch capability to extension event contexts, or a narrowly-scoped equivalent that can be used by long-lived extension services. + +Preferred API shape: + +```ts +interface ExtensionContext { + switchSession( + sessionPath: string, + options?: { withSession?: (ctx: ReplacedSessionContext) => Promise }, + ): Promise<{ cancelled: boolean }> +} +``` + +Implementation should reuse the existing `switchSessionHandler` already used by `createCommandContext()`. The important behavior is not a new session implementation; it is making the already-existing runtime switch available to the PiAgentUI HTTP server context. + +### PiAgentUI extension server + +Add helpers in `extensions/piagentui-server.ts`: + +- `getSessionFileForId(sessionId)` scans `latestCtx.sessionManager.getSessionDir()` for `*_${sessionId}.jsonl`. +- `sendUserMessageToSession(parsed)` validates `sessionId`, resolves the session file, switches if needed, and sends in the correct context. +- `session_shutdown` handling must not tear down the HTTP server on `reason === 'resume'` if the server is intentionally switching sessions for the web UI. The server should keep the port stable and update `latestCtx` on the following `session_start`. + +Target send flow: + +```ts +if (requestedSessionId && requestedSessionId !== activeSessionId) { + const sessionFile = getSessionFileForId(requestedSessionId) + const result = await latestCtx.switchSession(sessionFile, { + withSession: async replacedCtx => { + await maybeSetModel(replacedCtx, parsed.model) + await replacedCtx.sendUserMessage(parsed.text) + }, + }) + if (result.cancelled) return HTTP 409 + return HTTP 202 +} + +await maybeSetModel(latestCtx, parsed.model) +pi.sendUserMessage(parsed.text) +``` + +If `sessionId` is missing or already active, keep the existing path. + +### Frontend + +Keep frontend mostly unchanged. + +Small additions only if needed: + +- `sendMessageAsync()` continues sending `sessionId`. +- Optional: handle HTTP `409`/`404` with a clear toast if target session cannot be activated. +- Optional: add `activeSessionId` from `server.connected`/`session.status` later, but not required for the core fix. + +## Alternatives considered + +### Activate on session selection + +Frontend would call `/api/sessions/:id/activate` when a user clicks a session. This matches the user's mental model, but it introduces a race: if the user sends before activation completes, the message can still hit the old session unless send also validates activation. It is useful as a UX enhancement after backend routing is correct, not as the primary correctness mechanism. + +### Frontend guard only + +Frontend could block sending if selected session differs from active Pi session. This avoids Pi core changes but makes UX worse and still requires a trustworthy active-session signal from the backend. It detects the problem instead of solving it. + +## Tests + +### Extension/unit tests + +Add or update extension server tests to cover: + +1. Sending with active `sessionId` calls `pi.sendUserMessage()` without switching. +2. Sending with different `sessionId` resolves the matching JSONL file and calls `ctx.switchSession(sessionFile, { withSession })`. +3. The `withSession` callback calls `replacedCtx.sendUserMessage(text)`. +4. Unknown `sessionId` returns 404 and does not send to the active session. +5. Cancelled switch returns 409 and does not send. +6. `session_shutdown` with `reason: 'resume'` does not close the web server during web-initiated session switching. + +### Frontend tests + +Add or update API/hook tests to cover: + +1. `sendMessageAsync()` includes `sessionId` in the payload. +2. Send error responses surface through the existing error handling path. +3. Existing route/session selection behavior remains unchanged. + +### Manual verification + +1. Start Pi in session A. +2. Open PiAgentUI. +3. Select existing session B in the sidebar. +4. Send a message. +5. Verify new user and assistant messages appear in session B. +6. Verify session A JSONL is unchanged. +7. Verify `/global/event` remains connected and streaming works without F5. + +## Risks and mitigations + +- Switching sessions invalidates old extension contexts. Mitigation: send inside `withSession(replacedCtx)` and avoid captured stale `pi`/ctx after switch. +- Current extension closes the HTTP server on `session_shutdown`. Mitigation: preserve server across `resume` switches and update `latestCtx` on `session_start`. +- Pi core API change can be too broad. Mitigation: expose only the existing switch handler; do not create parallel session logic. +- Session file lookup by suffix must be strict. Mitigation: only match `_${sessionId}.jsonl` inside the current session dir. + +## Acceptance criteria + +- Sending from selected session B never writes to active-at-launch session A. +- Frontend routing and message loading stay visually the same. +- The web server port remains stable during a session switch initiated by PiAgentUI. +- Streaming still updates live after switch. +- Typecheck, extension typecheck, relevant tests, and build pass. diff --git a/docs/superpowers/specs/2026-05-30-piagentui-readme-audio-stt-design.md b/docs/superpowers/specs/2026-05-30-piagentui-readme-audio-stt-design.md new file mode 100644 index 0000000..054e0f2 --- /dev/null +++ b/docs/superpowers/specs/2026-05-30-piagentui-readme-audio-stt-design.md @@ -0,0 +1,326 @@ +# Design — README atual do PiAgentUI e sistema de áudio/STT + +**Data:** 2026-05-30 +**Status:** aprovado conceitualmente pelo usuário; aguardando revisão do arquivo antes da implementação +**Escopo:** reescrever o `README.md` do projeto atual e preparar a arquitetura completa para envio de áudio e transcrição em tempo real no app. + +## Contexto + +O projeto começou como uma adaptação do OpenCodeUI, mas atualmente está evoluindo para o **PiAgentUI**: uma interface web/desktop para o Pi Agent, com ambição explícita de se tornar um app inteiro no estilo Codex ou Claude Desktop. + +O estado atual já inclui: + +- frontend React 19 + TypeScript + Vite; +- app desktop via Tauri 2; +- extensão Pi local em `extensions/piagentui-server.ts` como backend/runtime bridge; +- chat com streaming/SSE; +- sessões reais do Pi, histórico e roteamento de sessão; +- tool calls e tool results renderizados em cards; +- contexto real do runtime via endpoint `/api/sessions/:sessionId/context`; +- enriquecimento de metadados de modelo via catálogo OpenRouter local em `src/assets/models.json`; +- lista real de Skills agrupadas por origem; +- metadados reais de MCP configurado; +- slash commands reais do Pi expostos por `/api/commands/list`; +- anexos de arquivos, incluindo áudio como arquivo quando o modelo selecionado declara suporte a áudio. + +Ainda não existe: + +- gravação de microfone no composer; +- transcrição parcial em tempo real; +- endpoint backend para STT; +- configurações STT; +- provedor STT customizável OpenAI-compatible; +- pipeline de áudio integrado ao envio de mensagens. + +## Objetivos + +1. Reescrever `README.md` em português para refletir o produto atual, não o projeto original OpenCodeUI. +2. Apresentar PiAgentUI como interface moderna para o Pi Agent e base futura de app completo tipo Codex/Claude. +3. Documentar capacidades existentes de forma honesta, separando **implementado**, **em andamento** e **roadmap**. +4. Projetar um sistema de áudio/STT completo, com opção padrão forte e configuração externa flexível. +5. Implementar o sistema em fases testáveis, com TDD para lógica, API, stores e componentes. + +## Não objetivos + +- Não renomear pacote npm, bundle, app Tauri ou metadados de release nesta primeira etapa, salvo menção no README como débito de branding. +- Não implementar agente de voz falante/TTS nesta fase; o foco é entrada por voz e transcrição para texto. +- Não substituir o fluxo normal de texto; áudio será uma camada opcional sobre o composer. +- Não acoplar PiAgentUI ao OpenRouter para STT. OpenRouter continua sendo catálogo/metadados quando útil; STT usa provedores próprios. + +## README.md proposto + +O novo README deve ser escrito em português e deve substituir integralmente o conteúdo herdado. Estrutura recomendada: + +1. **Título e tagline** + - `# PiAgentUI` + - “Interface web/desktop para Pi Agent — caminhando para um app completo estilo Codex/Claude.” + +2. **Visão geral** + - Explicar que o PiAgentUI é uma UI local para operar o Pi Agent com sessões, ferramentas, MCP, Skills, comandos e contexto real. + - Deixar claro que o runtime Pi é a fonte de verdade. + +3. **Estado atual** + - Listar capacidades implementadas: + - chat streaming; + - sessões reais; + - tool cards; + - context usage; + - models metadata; + - skills; + - MCP metadata; + - slash commands; + - anexos multimodais; + - terminal/file explorer/Tauri quando aplicável. + +4. **Roadmap do produto** + - Ações visuais para comandos Pi; + - áudio/STT em tempo real; + - experiência voice-first; + - MCP actions/connect/auth; + - app completo tipo Codex/Claude. + +5. **Arquitetura** + - Frontend React/Vite/Tauri; + - extensão Pi como bridge local; + - Pi runtime como estado autoritativo; + - APIs locais `/api/*`; + - SSE para eventos. + +6. **Desenvolvimento local** + - `npm install`; + - `npm run dev`; + - `npm run build`; + - `npm run test:run`; + - `npm run typecheck`; + - `npm run typecheck:extensions`. + +7. **Notas de runtime** + - Algumas mudanças exigem reiniciar/recarregar o Pi/extension server. + - O arquivo de descoberta local fica em `~/.pi/agent/piagentui-port.json`. + +8. **Áudio e transcrição — planejado** + - Resumir o plano STT sem prometer que já está implementado. + +9. **Licença e origem** + - Manter licença atual se aplicável. + - Mencionar que o projeto deriva de uma base OpenCodeUI, mas agora segue direção própria para PiAgentUI. + +## Sistema de áudio/STT — abordagem recomendada + +### Opção padrão + +Usar **OpenAI Realtime Transcription** com `gpt-realtime-whisper` como padrão para transcrição ao vivo. + +Razões: + +- foi projetado para live speech-to-text; +- entrega deltas parciais; +- tem latência baixa; +- usa sessão dedicada de transcrição, sem resposta falada do modelo; +- combina com um composer por voz onde o texto aparece enquanto o usuário fala. + +### Fallback padrão + +Usar **OpenAI Audio Transcriptions** para áudio fechado/arquivo: + +- `gpt-4o-transcribe` como opção de maior qualidade; +- `gpt-4o-mini-transcribe` como opção de menor custo; +- `whisper-1` para compatibilidade com integrações antigas. + +Esse fallback deve ser usado quando: + +- o navegador/ambiente não suportar streaming confiável; +- o usuário enviar um arquivo de áudio; +- o provedor configurado só oferecer endpoint `/audio/transcriptions`; +- a conexão realtime falhar e houver áudio gravado em buffer. + +### Provedor OpenAI-compatible externo + +O usuário deve poder configurar qualquer API compatível com o endpoint de transcrição da OpenAI. + +Configuração proposta: + +```ts +interface SttProviderConfig { + id: string + label: string + kind: 'openai' | 'openai-compatible' + mode: 'realtime' | 'file' | 'both' + baseUrl: string + apiKey: string + realtimeModel?: string + transcriptionModel: string + transcriptionEndpoint?: string + language?: string + prompt?: string + responseFormat?: 'json' | 'text' | 'verbose_json' +} +``` + +Exemplo para Together AI: + +```json +{ + "kind": "openai-compatible", + "mode": "file", + "baseUrl": "https://api.together.xyz/v1", + "transcriptionEndpoint": "/audio/transcriptions", + "transcriptionModel": "openai/whisper-large-v3" +} +``` + +Observação: APIs “OpenAI-compatible” costumam ser compatíveis no endpoint HTTP de arquivo, mas realtime/WebSocket varia por provedor. Por isso, realtime deve ser capability separada, não assumida automaticamente. + +## Arquitetura proposta do STT + +### Frontend + +Criar uma feature dedicada: + +- `src/features/voice/VoiceRecorderButton.tsx` +- `src/features/voice/VoiceTranscriptOverlay.tsx` +- `src/features/voice/useVoiceRecorder.ts` +- `src/features/voice/useRealtimeTranscript.ts` +- `src/features/voice/audioEncoding.ts` + +Responsabilidades: + +- pedir permissão de microfone; +- mostrar estados: idle, requesting_permission, recording, connecting, transcribing, error; +- capturar áudio; +- enviar chunks para o backend; +- renderizar transcrição parcial e final; +- inserir texto final no composer; +- opcionalmente enviar automaticamente após confirmação do usuário. + +### Store/configuração + +Criar configuração local de STT: + +- `src/store/sttSettingsStore.ts` +- persistência em localStorage inicialmente; +- campos para provider padrão, base URL, modelo, idioma, prompt, modo e preferências de UX. + +Preferências de UX: + +```ts +interface VoiceInputPreferences { + insertMode: 'append' | 'replace-selection' + autoSend: boolean + showPartialTranscript: boolean + pushToComposerWhileSpeaking: boolean + silenceAutoStopMs: number +} +``` + +### API frontend + +Criar cliente dedicado: + +- `src/api/stt.ts` + +Endpoints planejados: + +- `GET /api/stt/config/schema` +- `POST /api/stt/transcriptions` +- `POST /api/stt/realtime/session` +- `POST /api/stt/realtime/:sessionId/chunk` +- `POST /api/stt/realtime/:sessionId/commit` +- `DELETE /api/stt/realtime/:sessionId` + +### Backend/extensão Pi + +Adicionar ao `extensions/piagentui-server.ts` ou extrair para módulo dedicado se o arquivo ficar grande: + +- parser seguro de multipart/audio para transcrição por arquivo; +- proxy para `/v1/audio/transcriptions`; +- gerenciador de sessão realtime; +- normalização de eventos para o frontend. + +Formato de eventos para o frontend: + +```ts +type SttEvent = + | { type: 'stt.session.started'; sessionId: string } + | { type: 'stt.transcript.delta'; sessionId: string; text: string; itemId?: string } + | { type: 'stt.transcript.completed'; sessionId: string; text: string; itemId?: string } + | { type: 'stt.error'; sessionId?: string; message: string; recoverable: boolean } + | { type: 'stt.session.closed'; sessionId: string } +``` + +### Segurança + +- API keys não devem aparecer em logs. +- Configurações secretas devem ser mascaradas na UI. +- O backend deve limitar tamanho/duração de áudio. +- O backend deve validar `baseUrl` e impedir esquemas não HTTP(S). +- Erros do provedor devem ser normalizados, sem vazar headers. +- O usuário deve confirmar antes de habilitar auto-send de transcrição. + +### Testes + +Seguir TDD: + +1. `src/api/stt.test.ts` + - monta payloads corretos; + - trata deltas/finais; + - mascara erros. + +2. `src/store/sttSettingsStore.test.ts` + - defaults; + - persistência; + - atualização parcial; + - remoção de secret. + +3. `src/features/voice/*.test.tsx` + - estados do botão; + - permissão negada; + - parcial/final no composer; + - auto-send desligado por padrão. + +4. `extensions/piagentui-server.test.ts` + - endpoints STT; + - validação de config; + - proxy OpenAI-compatible; + - realtime session lifecycle com mocks. + +## Plano de implementação recomendado + +1. Atualizar `README.md` com foco PiAgentUI atual. +2. Adicionar uma seção curta no README para STT planejado. +3. Criar plano TDD específico para STT antes de escrever produção. +4. Implementar configuração STT. +5. Implementar transcrição por arquivo OpenAI-compatible. +6. Implementar botão de gravação e inserção no composer. +7. Implementar realtime OpenAI como provider padrão. +8. Adicionar fallback de arquivo para provedores sem realtime. +9. Fazer verificação manual no browser/Tauri. + +## Critérios de aceite + +### README + +- Não deve mais vender o projeto como OpenCodeUI. +- Deve explicar claramente que o projeto atual é PiAgentUI. +- Deve listar funcionalidades reais já implementadas. +- Deve separar roadmap de funcionalidades existentes. +- Deve incluir comandos de desenvolvimento corretos. + +### STT + +- Usuário consegue configurar provider padrão OpenAI. +- Usuário consegue configurar provider externo OpenAI-compatible para `/audio/transcriptions`. +- Usuário consegue gravar áudio pelo microfone. +- Usuário vê transcrição parcial quando o provider realtime suporta. +- Usuário recebe texto final no composer. +- Auto-send fica desligado por padrão. +- Falhas de permissão, rede e provider são visíveis e recuperáveis. +- Testes cobrem API, store e UI principal. + +## Fontes consultadas + +- OpenAI Realtime transcription: https://developers.openai.com/api/docs/guides/realtime-transcription +- OpenAI GPT-4o Transcribe: https://developers.openai.com/api/docs/models/gpt-4o-transcribe +- OpenAI speech transcription methods cookbook: https://developers.openai.com/cookbook/examples/speech_transcription_methods +- Together AI transcription docs: https://docs.together.ai/docs/inference/transcription/overview +- Together AI Whisper Large v3: https://www.together.ai/models/openai-whisper-large-v3 diff --git a/docs/superpowers/specs/2026-05-30-piagentui-stt-lan-real-sessions-project-folders-design.md b/docs/superpowers/specs/2026-05-30-piagentui-stt-lan-real-sessions-project-folders-design.md new file mode 100644 index 0000000..4b0acb3 --- /dev/null +++ b/docs/superpowers/specs/2026-05-30-piagentui-stt-lan-real-sessions-project-folders-design.md @@ -0,0 +1,565 @@ +# Spec — STT, acesso LAN/QR, sessões reais e histórico por projeto + +**Data:** 2026-05-30 +**Status:** proposta técnica pronta para revisão do usuário antes de implementação +**Produto:** PiAgentUI +**Escopo:** implementar, com mudanças mínimas e TDD, quatro melhorias conectadas ao uso real do PiAgentUI: + +1. sistema de áudio/STT no composer; +2. exposição controlada do PiAgentUI na rede local com IP e QR Code; +3. criação de novas sessões que realmente criam novos chats no Pi Agent; +4. histórico lateral agrupado por pastas/projetos, expansível e recolhível. + +## Contexto observado no projeto + +Arquitetura atual relevante: + +- Backend local da UI fica em `extensions/piagentui-server.ts`. +- Núcleo de helpers seguros fica em `extensions/piagentui-server-core.ts`. +- O servidor HTTP atualmente faz bind em `127.0.0.1` e valida `Host`/`Origin` como loopback-only. +- `serveIndexHtml()` injeta `window.PI_BOOT_DATA` com `baseUrl: http://127.0.0.1:` e bearer token local. +- O discovery local é salvo em `~/.pi/agent/piagentui-port.json` com `{ port, token }`. +- `POST /api/sessions` atualmente **não cria sessão real**: ele apenas retorna `getSessionInfo(getCurrentSessionId())`. +- `GET /api/sessions` lê arquivos `.jsonl` do diretório de sessões e deriva metadados via `readSessionMetadata()`. +- `readSessionMetadata()` já extrai `header.cwd`, título por `session_info` ou primeira mensagem de usuário, timestamps e contagem básica. +- `sendUserMessageToRequestedSession()` já consegue trocar rapidamente para uma sessão solicitada via `latestCtx.switchSession(sessionFile, { withSession })` e enviar mensagem nela. +- A UI de sessões está em `src/features/sessions/SessionList.tsx`. +- O estado de sessões vem de `src/contexts/SessionContext.tsx` e `src/api/session.ts`. +- O input/composer está em `src/features/chat/InputBox.tsx` e `src/features/chat/input/InputToolbar.tsx`. +- Já existem anexos multimodais, incluindo áudio como arquivo quando o modelo suporta. +- A store de servidores fica em `src/store/serverStore.ts` e já suporta múltiplos backends, bearer token, Basic Auth e health checks. + +## Objetivos + +### Objetivo 1 — STT no composer + +Adicionar entrada por voz sem substituir o fluxo de texto: + +- botão de microfone no composer; +- gravação de áudio pelo navegador/Tauri webview; +- transcrição por provider configurável; +- inserção do texto transcrito no input; +- fallback por arquivo via OpenAI-compatible `/audio/transcriptions`; +- arquitetura preparada para realtime OpenAI depois, sem bloquear o MVP. + +### Objetivo 2 — acesso LAN com QR Code + +Permitir que o usuário acesse o PiAgentUI por outro dispositivo na mesma rede local: + +- manter acesso LAN **desligado por padrão**; +- quando ligado, mostrar IP local do computador, URL de acesso e QR Code; +- não remover autenticação existente; +- não expor sem aviso que o controle do agente fica disponível na rede local; +- manter loopback funcionando normalmente. + +### Objetivo 3 — novas sessões reais no Pi Agent + +Corrigir o comportamento de “novo chat”: + +- `New chat` deve criar um novo arquivo de sessão Pi `.jsonl`; +- deve alternar rapidamente para essa sessão real; +- enviar a primeira mensagem nessa sessão deve persistir no novo arquivo, não apenas simular um chat novo na UI; +- o retorno de `POST /api/sessions` deve conter o id real, diretório real e metadata real. + +### Objetivo 4 — histórico por pastas/projetos + +Agrupar sessões no histórico lateral por projeto: + +- cada pasta representa um `cwd`/diretório de projeto vindo do header da sessão; +- nome visual da pasta = basename do diretório, com fallback legível; +- pastas podem expandir/recolher; +- sessões ficam dentro da pasta do projeto; +- busca continua funcionando; +- seleção e drag/drop de sessão continuam funcionando; +- sem reorganizar o backend inteiro de sessões. + +## Não objetivos + +- Não implementar TTS/voz falada nesta fase. +- Não criar sistema multiusuário, login ou permissões finas. +- Não abrir o servidor LAN por padrão. +- Não publicar automaticamente a extensão. +- Não renomear todo o legado `opencode`/OpenCodeUI agora. +- Não refatorar `SessionList.tsx` inteiro além do necessário para agrupamento por projeto. +- Não alterar arquitetura de pane layout, terminal, file explorer ou MCP além dos pontos necessários. + +## Decisões recomendadas + +### A. STT em duas fases, mas com base única + +**Recomendado:** implementar primeiro `file transcription`, com tipos e UI já preparados para `realtime`. + +Motivo: + +- é mais rápido e testável; +- funciona com OpenAI e provedores OpenAI-compatible; +- evita acoplar a primeira entrega a WebSocket realtime; +- mantém o caminho aberto para `gpt-realtime-whisper`. + +Configuração inicial: + +```ts +export type SttMode = 'file' | 'realtime' +export type SttProviderKind = 'openai' | 'openai-compatible' + +export interface SttSettings { + enabled: boolean + providerKind: SttProviderKind + mode: SttMode + baseUrl: string + apiKeyConfigured: boolean + transcriptionEndpoint: string + transcriptionModel: string + language?: string + insertMode: 'append' | 'replace' +} +``` + +O segredo real da API key não deve ser retornado ao frontend depois de salvo. A UI recebe apenas `apiKeyConfigured: true/false`. + +### B. Settings STT server-side local + +**Recomendado:** salvar configuração STT em arquivo local do usuário: + +```text +~/.pi/agent/piagentui-settings.json +``` + +Estrutura mínima: + +```json +{ + "stt": { + "enabled": true, + "providerKind": "openai-compatible", + "mode": "file", + "baseUrl": "https://api.openai.com/v1", + "apiKey": "...", + "transcriptionEndpoint": "/audio/transcriptions", + "transcriptionModel": "gpt-4o-mini-transcribe", + "language": "pt", + "insertMode": "append" + }, + "network": { + "lanAccessEnabled": false + } +} +``` + +Motivo: + +- evita persistir API key no localStorage do browser; +- permite LAN sem expor secrets no `window.PI_BOOT_DATA`; +- mantém tudo local e simples; +- evita banco de dados ou integração de credenciais complexa. + +### C. LAN por bind amplo + validação dinâmica + +**Recomendado:** o servidor pode escutar em `0.0.0.0`, mas responder a clientes não-loopback apenas quando `network.lanAccessEnabled === true`. + +Mudanças necessárias: + +- `listenOnAvailablePort(server, DEFAULT_PORT, '0.0.0.0')`; +- substituir validação loopback-only por função configurável: + - loopback sempre permitido; + - LAN permitido apenas se `lanAccessEnabled`; + - `Origin` deve bater com host loopback ou LAN permitido; +- `serveIndexHtml(req, res)` deve montar `baseUrl` a partir de `req.headers.host`, não sempre `127.0.0.1`; +- endpoint `GET /api/network/access` retorna estado, IPs e URLs; +- endpoint `POST /api/network/access` liga/desliga LAN. + +Acesso LAN expõe controle do agente para quem estiver na rede e conseguir acessar a URL. A UI deve mostrar warning explícito. + +### D. QR Code no frontend + +**Recomendado:** gerar o QR Code no frontend a partir da URL LAN ativa. + +Opções: + +1. usar dependência pequena `qrcode`; +2. implementar QR manualmente; +3. usar serviço externo. + +Decisão: usar `qrcode` se não houver lib existente. É a solução mais simples, testável e offline. Evitar serviço externo por privacidade. + +### E. Criar sessão real sem mexer no core do Pi + +O contexto regular da extensão tem `switchSession`, mas `newSession()` fica restrito ao command context do Pi. Para não mexer no core do Pi agora, o backend do PiAgentUI pode criar o arquivo `.jsonl` compatível com `SessionManager.newSession()` e depois chamar `latestCtx.switchSession(newSessionFile, { withSession })`. + +Header da sessão compatível: + +```json +{ + "type": "session", + "version": 3, + "id": "", + "timestamp": "", + "cwd": "", + "parentSession": "" +} +``` + +Fluxo: + +1. receber `POST /api/sessions` com `{ directory?, title?, parentID? }`; +2. resolver `cwd = directory || latestCtx.cwd || process.cwd()`; +3. gerar id válido e filename com timestamp; +4. escrever arquivo `.jsonl` com header; +5. se `title` existir, opcionalmente adicionar entry `session_info` compatível com o parser atual; +6. trocar rapidamente para o novo arquivo com `latestCtx.switchSession()`; +7. atualizar `latestCtx` no `withSession`; +8. retornar metadata real lida de `readSessionMetadata()`. + +Se `switchSession` não estiver disponível, retornar `501` em vez de fingir sucesso. + +### F. Histórico por projeto no frontend + +**Recomendado:** agrupar no frontend usando `session.directory` já retornado pelo backend. + +Criar helper puro: + +```text +src/features/sessions/sessionProjectGroups.ts +``` + +Responsabilidades: + +- normalizar paths Windows/Linux; +- extrair nome do projeto pelo basename; +- criar chave estável por diretório normalizado; +- ordenar grupos por `max(session.time.updated)` desc; +- ordenar sessões dentro do grupo por `time.updated` desc; +- manter busca como modo flat ou grupos filtrados. + +A UI pode adicionar modo `groupedByProject?: boolean` em `SessionList`, preservando o agrupamento temporal antigo se necessário. + +Estado de expansão: + +- store local leve em `localStorage`, por exemplo `piagentui-session-project-folders`; +- padrão: pasta do projeto atual expandida; demais recolhidas; +- se busca ativa, expandir todos os grupos com match. + +## Endpoints propostos + +### STT + +#### `GET /api/settings/stt` + +Retorna settings redigidos: + +```json +{ + "enabled": true, + "providerKind": "openai-compatible", + "mode": "file", + "baseUrl": "https://api.openai.com/v1", + "apiKeyConfigured": true, + "transcriptionEndpoint": "/audio/transcriptions", + "transcriptionModel": "gpt-4o-mini-transcribe", + "language": "pt", + "insertMode": "append" +} +``` + +#### `POST /api/settings/stt` + +Atualiza settings. Se `apiKey` vier vazia/ausente, mantém chave anterior; se vier `null`, remove. + +#### `POST /api/stt/transcriptions` + +Recebe áudio como `multipart/form-data`, chama provider configurado e retorna: + +```json +{ + "text": "texto transcrito", + "durationMs": 1234, + "provider": "openai-compatible", + "model": "gpt-4o-mini-transcribe" +} +``` + +### LAN/QR + +#### `GET /api/network/access` + +```json +{ + "lanAccessEnabled": false, + "port": 58785, + "localUrl": "http://127.0.0.1:58785", + "lanUrls": ["http://192.168.0.10:58785"], + "primaryLanUrl": "http://192.168.0.10:58785" +} +``` + +#### `POST /api/network/access` + +```json +{ "lanAccessEnabled": true } +``` + +Retorna o mesmo shape do `GET`. + +### Sessões + +#### `POST /api/sessions` + +Novo comportamento: cria sessão real. + +Body: + +```json +{ + "directory": "D:/Documents/Github/PiAgentUI/PiAgentUi", + "title": "Nova conversa", + "parentID": "opcional" +} +``` + +Response: + +```json +{ + "id": "019...", + "title": "Nova conversa", + "directory": "D:/Documents/Github/PiAgentUI/PiAgentUi", + "time": { "created": 123, "updated": 123 }, + "status": { "type": "idle" }, + "summary": { "deletions": 0, "files": 0, "additions": 0 } +} +``` + +## Componentes/frontend propostos + +### STT + +Criar: + +- `src/api/stt.ts` — chamadas de settings e transcrição; +- `src/types/api/stt.ts` — tipos de settings/resposta; +- `src/hooks/useVoiceTranscription.ts` — MediaRecorder, estados e envio para backend; +- `src/features/chat/input/VoiceInputButton.tsx` — botão mic/stop/loading/error; +- alterações pontuais em `InputBox.tsx` e `InputToolbar.tsx` para inserir texto transcrito. + +Estados mínimos: + +```ts +type VoiceState = + | 'idle' + | 'requesting-permission' + | 'recording' + | 'transcribing' + | 'error' +``` + +### LAN/QR + +Criar: + +- `src/api/network.ts`; +- `src/types/api/network.ts`; +- `src/features/settings/components/NetworkAccessSettings.tsx` ou adicionar seção pequena em `ServersSettings.tsx`; +- QR gerado a partir de `primaryLanUrl`. + +Como o app já tem `ServersSettings.tsx`, a mudança mínima é adicionar uma seção “Local network access” dentro dele, sem criar novo painel de settings se não for necessário. + +### Sessões por projeto + +Criar: + +- `src/features/sessions/sessionProjectGroups.ts`; +- testes unitários para grouping; +- alterar `SessionList.tsx` para renderizar project folders quando `groupedByProject` estiver ativo; +- adicionar traduções apenas nos namespaces já usados (`chat`/`commands`/`common`) conforme necessário. + +## Segurança + +- LAN fica desligado por padrão. +- Loopback continua sempre permitido. +- API continua exigindo bearer token. +- O HTML servido injeta o token apenas para o cliente que abriu a UI; isso significa que qualquer pessoa com acesso à URL LAN durante LAN enabled pode controlar o agente. A UI deve deixar isso claro. +- STT API key não deve aparecer em resposta de settings. +- Não logar API key. +- Não aceitar `baseUrl` sem `http:` ou `https:`. +- Limitar upload STT por tamanho. Sugestão inicial: 25 MB. +- Reusar `isRequestBodySizeAllowed` ou criar limite específico para multipart. +- Não permitir path traversal ou file reads novos. + +## Plano de testes obrigatório + +### Backend extension + +Arquivo: `extensions/piagentui-server.test.ts` + +Casos: + +1. `POST /api/sessions` cria arquivo `.jsonl` com header `type=session`, `version=3`, `cwd` correto e id novo. +2. `POST /api/sessions` chama `switchSession()` com `withSession` e retorna metadata da sessão nova. +3. `POST /api/sessions` retorna `501` quando `switchSession` indisponível, sem fingir sucesso. +4. `GET /api/network/access` retorna loopback URL e lista de IPs LAN mockável. +5. LAN disabled rejeita host não-loopback. +6. LAN enabled aceita host LAN com bearer token. +7. `serveIndexHtml()` injeta `baseUrl` baseado no host da request. +8. `GET /api/settings/stt` redige `apiKey`. +9. `POST /api/settings/stt` salva settings e preserva/remover chave conforme contrato. +10. `POST /api/stt/transcriptions` valida provider config e trata erro do provider sem vazar segredo. + +Arquivo: `extensions/piagentui-server-core.test.ts` + +Casos: + +1. `isLoopbackHost()` preserva comportamento atual. +2. nova validação aceita LAN apenas quando enabled. +3. `getLocalNetworkUrls()` ignora loopback, IPv6 local problemático e interfaces internas inválidas. +4. validação de URL STT recusa protocolos não HTTP(S). + +### Frontend API/hooks + +Arquivos novos: + +- `src/api/stt.test.ts`; +- `src/api/network.test.ts`; +- `src/hooks/useVoiceTranscription.test.tsx`; +- `src/features/sessions/sessionProjectGroups.test.ts`. + +Casos: + +1. API STT envia/recebe shape correto. +2. API network chama endpoints corretos. +3. hook de voz passa por `idle -> recording -> transcribing -> idle` e chama callback com texto final. +4. hook trata permissão negada. +5. grouping por projeto cria pastas corretas para paths Windows e POSIX. +6. grouping ordena pastas por sessão mais recente. +7. grouping mantém sessões ordenadas por update. + +### Componentes + +Arquivos prováveis: + +- `src/features/chat/input/VoiceInputButton.test.tsx`; +- `src/features/settings/components/ServersSettings.test.tsx` ou novo test de `NetworkAccessSettings`; +- `src/features/sessions/SessionList.test.tsx`. + +Casos: + +1. botão de microfone mostra estados e dispara start/stop. +2. seção LAN mostra URL e QR quando enabled. +3. SessionList renderiza pastas por projeto, expande/recolhe e preserva seleção. + +## Ordem de implementação recomendada + +1. **Sessões reais primeiro** — corrige fundação crítica de chat. +2. **Agrupamento por projeto** — depende de sessões reais/metadata confiável. +3. **LAN/QR** — isolado, mas tem implicações de segurança. +4. **STT file transcription** — maior superfície; deve entrar depois da base de rede/sessão estar sólida. +5. **Realtime STT** — fase seguinte, usando o contrato já criado. + +## Critérios de aceite + +### Sessões reais + +- Clicar em New chat cria um novo arquivo `.jsonl` de sessão Pi. +- O id retornado pelo backend é diferente da sessão anterior. +- Enviar mensagem após criar novo chat persiste nessa nova sessão. +- Troca de sessão continua rápida e não perde SSE. + +### Histórico por projeto + +- Sidebar mostra pastas por projeto. +- Cada pasta contém sessões daquele `cwd`. +- Expand/recolher funciona. +- Busca ainda localiza sessões. +- Selecionar sessão dentro da pasta navega para o chat correto. + +### LAN/QR + +- Com LAN off, acesso por IP LAN recebe 403. +- Com LAN on, URL LAN abre a UI em outro dispositivo da rede. +- QR Code aponta para a URL LAN ativa. +- API continua exigindo token. +- UI mostra aviso de segurança. + +### STT + +- Usuário consegue gravar áudio e transcrever para texto. +- Texto final entra no composer sem auto-send. +- Provider OpenAI-compatible é configurável. +- API key não aparece em respostas/logs. +- Erros de permissão/rede/provider são visíveis e recuperáveis. + +## Riscos e mitigação + +| Risco | Mitigação | +| --- | --- | +| LAN expõe controle total do agente | default off, warning explícito, bearer obrigatório, permitir desligar rápido | +| Criar sessão manualmente diverge do Pi core | usar header exatamente compatível com `SessionManager.newSession()`; testes contra parser atual | +| `switchSession` indisponível em runtime antigo | retornar `501`, não simular sucesso | +| QR exige dependência nova | usar `qrcode` pequena e isolada; se rejeitado, renderizar URL primeiro e QR depois | +| STT com CORS se chamado direto do frontend | chamadas a providers sempre pelo backend local | +| API key em LAN | armazenar server-side local, responder apenas `apiKeyConfigured` | +| `SessionList.tsx` já é grande | extrair grouping puro para arquivo separado; modificar renderização o mínimo possível | + +## Arquivos previstos + +### Criar + +- `src/api/stt.ts` +- `src/api/stt.test.ts` +- `src/types/api/stt.ts` +- `src/api/network.ts` +- `src/api/network.test.ts` +- `src/types/api/network.ts` +- `src/hooks/useVoiceTranscription.ts` +- `src/hooks/useVoiceTranscription.test.tsx` +- `src/features/chat/input/VoiceInputButton.tsx` +- `src/features/chat/input/VoiceInputButton.test.tsx` +- `src/features/sessions/sessionProjectGroups.ts` +- `src/features/sessions/sessionProjectGroups.test.ts` + +### Modificar + +- `extensions/piagentui-server.ts` +- `extensions/piagentui-server.test.ts` +- `extensions/piagentui-server-core.ts` +- `extensions/piagentui-server-core.test.ts` +- `src/features/chat/InputBox.tsx` +- `src/features/chat/input/InputToolbar.tsx` +- `src/features/sessions/SessionList.tsx` +- `src/features/sessions/SessionList.test.tsx` +- `src/features/settings/components/ServersSettings.tsx` +- `src/store/serverStore.ts` apenas se necessário para refletir LAN URL ativa +- `src/locales/en/*.json` e `src/locales/zh-CN/*.json` para labels mínimos +- `package.json` se a dependência `qrcode` for adotada + +## Abordagens consideradas + +### Abordagem 1 — implementar tudo no frontend + +Rejeitada. STT direto do browser expõe API keys, sofre com CORS e não combina com LAN. + +### Abordagem 2 — mexer no core do Pi para expor `newSession` ao extension context + +Possível, mas maior. Já fizemos patch de `switchSession`; para este pacote o objetivo é mudança mínima no PiAgentUI. Só considerar se criação manual de sessão se mostrar incompatível. + +### Abordagem 3 — backend PiAgentUI como orquestrador local + +Recomendada. Mantém mudanças dentro do PiAgentUI, usa `switchSession` já disponível, preserva segurança local e permite testes focados. + +## Gate de implementação + +Esta spec cobre múltiplos subsistemas e altera segurança/rede/sessão. A implementação deve começar somente após aprovação explícita do usuário sobre este design. + +Após aprovação, criar plano em: + +```text +docs/superpowers/plans/2026-05-30-piagentui-stt-lan-real-sessions-project-folders.md +``` + +O plano deve usar TDD e commits pequenos por feature: + +1. sessões reais; +2. agrupamento por projeto; +3. LAN/QR; +4. STT settings + file transcription; +5. voice UI; +6. validação final e revisão de código. diff --git a/docs/superpowers/specs/2026-05-31-piagentui-git-composer-control-design.md b/docs/superpowers/specs/2026-05-31-piagentui-git-composer-control-design.md new file mode 100644 index 0000000..bda63a7 --- /dev/null +++ b/docs/superpowers/specs/2026-05-31-piagentui-git-composer-control-design.md @@ -0,0 +1,87 @@ +# Design — Controle Git no composer do PiAgentUI + +## Objetivo + +Adicionar à bolha de envio de mensagens um controle Git compacto, localizado no canto inferior esquerdo da toolbar do composer, mostrando a branch atual e abrindo um popover com branches e operações Git principais. + +## Direção visual aprovada + +- O controle aparece como um chip integrado à `InputToolbar`, antes dos seletores de agente e variante. +- O chip usa iconografia GitHub/Octicons, texto monoespaçado, estado dirty e chevron. +- Ao clicar, abre um popover acima da bolha de input, alinhado ao chip, seguindo o padrão visual de `DropdownMenu`: glass, borda sutil, radius alto e sombra do app. +- O popover tem duas áreas: + - lista de branches local/remota e ação de nova branch; + - status, ações Git e área dedicada de commit. +- As ações principais usam ícones: branch, commit, diff/status, pull, push, refresh, stage/unstage, arquivos e alertas. + +## Escopo MVP seguro + +Inclui: + +- carregar branch atual, branches locais/remotas e status resumido; +- trocar branch local/remota; +- criar branch a partir da atual; +- listar arquivos alterados; +- stage/unstage arquivo; +- stage all/unstage all; +- commit com textarea dedicada; +- pull e push explícitos; +- refresh de status; +- mensagens de erro e loading. + +Não inclui no MVP: + +- merge manual; +- rebase; +- reset hard; +- revert; +- stash; +- force push; +- edição interativa de hunks. + +## Segurança e comportamento + +- Backend executa Git via `spawn`/`execFile` com argv fixo, nunca shell arbitrário. +- Diretório vem do projeto atual e precisa ser repositório Git válido. +- Commit exige mensagem não vazia e pelo menos um arquivo staged. +- Pull/push são ações explícitas no popover. +- Erros do Git são retornados como mensagens sanitizadas. +- Operações atualizam status e branch após sucesso. + +## Componentes + +- `GitComposerControl`: chip + popover Git do composer. +- `src/api/vcs.ts`: funções de API para status, branches e ações. +- `src/types/api/vcs.ts`: contratos frontend/backend. +- `extensions/piagentui-git-manager.ts`: camada backend focada em Git. +- `extensions/piagentui-server.ts`: endpoints `/api/vcs/*`. + +## Endpoints planejados + +- `GET /api/vcs/info` +- `GET /api/vcs/branches` +- `GET /api/vcs/status` +- `POST /api/vcs/checkout` +- `POST /api/vcs/branch` +- `POST /api/vcs/stage` +- `POST /api/vcs/unstage` +- `POST /api/vcs/commit` +- `POST /api/vcs/pull` +- `POST /api/vcs/push` + +## Testes + +- Testes unitários do git manager com runner fake. +- Testes de API frontend (`src/api/vcs.test.ts`). +- Teste de componente para renderizar branch, abrir popover, preencher commit e disparar ações. +- Testes de servidor para endpoints principais com mocks. + +## Referência de ícones + +Usar `@primer/octicons-react`, pacote oficial do Primer/GitHub Octicons. A documentação oficial mostra importação direta, por exemplo: + +```ts +import { GitCommitIcon } from '@primer/octicons-react' +``` + +Fonte consultada via Context7: `https://primer.style/octicons/icon/git-commit-24` e `https://primer.style/octicons/code`. diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..0a0062f --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,45 @@ +import js from '@eslint/js' +import eslintConfigPrettier from 'eslint-config-prettier' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' +import { defineConfig, globalIgnores } from 'eslint/config' + +export default defineConfig([ + globalIgnores(['dist', 'node_modules', 'public/material-icons', 'src-tauri/target/**']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + js.configs.recommended, + tseslint.configs.recommended, + reactHooks.configs.flat.recommended, + reactRefresh.configs.vite, + eslintConfigPrettier, + ], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + rules: { + '@typescript-eslint/ban-ts-comment': 'warn', + '@typescript-eslint/no-explicit-any': 'warn', + '@typescript-eslint/no-unused-vars': [ + 'warn', + { + argsIgnorePattern: '^_', + varsIgnorePattern: '^_', + caughtErrorsIgnorePattern: '^_', + }, + ], + 'prefer-const': 'warn', + 'react-hooks/exhaustive-deps': 'warn', + 'react-hooks/immutability': 'warn', + 'react-hooks/preserve-manual-memoization': 'off', + 'react-hooks/refs': 'warn', + 'react-hooks/set-state-in-effect': 'warn', + 'react-hooks/use-memo': 'warn', + 'react-refresh/only-export-components': 'warn', + }, + }, +]) diff --git a/extensions/piagentui-extension-manager.test.ts b/extensions/piagentui-extension-manager.test.ts new file mode 100644 index 0000000..4bb0ad4 --- /dev/null +++ b/extensions/piagentui-extension-manager.test.ts @@ -0,0 +1,128 @@ +import * as fs from 'node:fs' +import * as os from 'node:os' +import * as path from 'node:path' +import { afterEach, describe, expect, it, vi } from 'vitest' +import { + buildExtensionCatalog, + executeExtensionInstallCommand, + executeExtensionPackageRemoval, + parsePiInstallCommand, +} from './piagentui-extension-manager.js' + +const tempRoots: string[] = [] + +function makeTempRoot() { + const root = fs.mkdtempSync(path.join(os.tmpdir(), 'piagentui-extension-manager-')) + tempRoots.push(root) + return root +} + +function writeJson(filePath: string, value: unknown) { + fs.mkdirSync(path.dirname(filePath), { recursive: true }) + fs.writeFileSync(filePath, JSON.stringify(value, null, 2), 'utf8') +} + +afterEach(() => { + for (const root of tempRoots.splice(0)) { + fs.rmSync(root, { recursive: true, force: true }) + } +}) + +describe('parsePiInstallCommand', () => { + it('extracts source and local scope from a safe Pi install command', () => { + expect(parsePiInstallCommand('pi install npm:pi-hud')).toEqual({ source: 'npm:pi-hud', local: false }) + expect(parsePiInstallCommand('pi install npm:@scope/pkg -l')).toEqual({ source: 'npm:@scope/pkg', local: true }) + expect(parsePiInstallCommand('pi install -l "D:/Projects/my extension"')).toEqual({ + source: 'D:/Projects/my extension', + local: true, + }) + }) + + it('rejects commands that are not a single Pi install operation', () => { + expect(() => parsePiInstallCommand('npm install pi-hud')).toThrow(/pi install/i) + expect(() => parsePiInstallCommand('pi remove npm:pi-hud')).toThrow(/pi install/i) + expect(() => parsePiInstallCommand('pi install npm:pi-hud && rm -rf .')).toThrow(/unsupported/i) + expect(() => parsePiInstallCommand('pi install')).toThrow(/missing/i) + }) +}) + +describe('buildExtensionCatalog', () => { + it('groups configured packages with metadata, resource counts, and active or inactive status', () => { + const homeDir = makeTempRoot() + const cwd = path.join(homeDir, 'project') + const userPackageRoot = path.join(homeDir, '.pi', 'agent', 'npm', 'node_modules', 'pi-demo') + const projectPackageRoot = path.join(cwd, '.pi', 'npm', 'node_modules', 'project-demo') + const missingPackageSource = 'npm:missing-demo' + + writeJson(path.join(homeDir, '.pi', 'agent', 'settings.json'), { + packages: ['npm:pi-demo', { source: missingPackageSource, extensions: [] }], + }) + writeJson(path.join(cwd, '.pi', 'settings.json'), { + packages: [{ source: 'npm:project-demo', extensions: [] }], + }) + + writeJson(path.join(userPackageRoot, 'package.json'), { + name: 'pi-demo', + version: '1.2.3', + description: 'Demo package', + pi: { extensions: ['./extensions'], skills: ['./skills'] }, + }) + fs.mkdirSync(path.join(userPackageRoot, 'extensions'), { recursive: true }) + fs.writeFileSync(path.join(userPackageRoot, 'extensions', 'demo.ts'), 'export default {}', 'utf8') + fs.mkdirSync(path.join(userPackageRoot, 'skills', 'demo'), { recursive: true }) + fs.writeFileSync(path.join(userPackageRoot, 'skills', 'demo', 'SKILL.md'), '---\nname: demo\n---', 'utf8') + + writeJson(path.join(projectPackageRoot, 'package.json'), { + name: 'project-demo', + version: '0.1.0', + description: 'Project package', + pi: { extensions: ['./extensions'] }, + }) + fs.mkdirSync(path.join(projectPackageRoot, 'extensions'), { recursive: true }) + fs.writeFileSync(path.join(projectPackageRoot, 'extensions', 'project.ts'), 'export default {}', 'utf8') + + const catalog = buildExtensionCatalog({ cwd, homeDir }) + + expect(catalog.summary).toEqual({ total: 3, active: 1, inactive: 1, missing: 1, error: 0 }) + + const userPackage = catalog.packages.find(pkg => pkg.source === 'npm:pi-demo') + expect(userPackage).toMatchObject({ + source: 'npm:pi-demo', + scope: 'user', + packageName: 'pi-demo', + version: '1.2.3', + description: 'Demo package', + status: 'active', + installedPath: userPackageRoot, + }) + expect(userPackage?.resources.extensions).toEqual([ + expect.objectContaining({ + name: 'demo.ts', + enabled: true, + path: path.join(userPackageRoot, 'extensions', 'demo.ts'), + }), + ]) + expect(userPackage?.resources.skills).toEqual([expect.objectContaining({ name: 'demo', enabled: true })]) + + const projectPackage = catalog.packages.find(pkg => pkg.source === 'npm:project-demo') + expect(projectPackage).toMatchObject({ source: 'npm:project-demo', scope: 'project', status: 'inactive' }) + expect(projectPackage?.resources.extensions).toEqual([ + expect.objectContaining({ name: 'project.ts', enabled: false }), + ]) + + const missingPackage = catalog.packages.find(pkg => pkg.source === missingPackageSource) + expect(missingPackage).toMatchObject({ source: missingPackageSource, scope: 'user', status: 'missing' }) + }) +}) + +describe('extension package operations', () => { + it('runs parsed install and removal through the Pi CLI without executing pasted shell text', async () => { + const runner = vi.fn(async () => ({ stdout: 'ok', stderr: '' })) + + await executeExtensionInstallCommand('pi install npm:pi-hud -l', { cwd: '/repo', runner }) + await executeExtensionPackageRemoval({ source: 'npm:pi-hud', scope: 'project' }, { cwd: '/repo', runner }) + + expect(runner).toHaveBeenNthCalledWith(1, ['install', 'npm:pi-hud', '-l'], { cwd: '/repo' }) + expect(runner).toHaveBeenNthCalledWith(2, ['remove', 'npm:pi-hud', '-l'], { cwd: '/repo' }) + }) +}) diff --git a/extensions/piagentui-extension-manager.ts b/extensions/piagentui-extension-manager.ts new file mode 100644 index 0000000..05477d1 --- /dev/null +++ b/extensions/piagentui-extension-manager.ts @@ -0,0 +1,513 @@ +import { spawn } from 'node:child_process' +import * as fs from 'node:fs' +import * as os from 'node:os' +import * as path from 'node:path' + +export type ExtensionPackageScope = 'user' | 'project' +export type ExtensionPackageStatus = 'active' | 'inactive' | 'missing' | 'error' +export type ExtensionResourceType = 'extensions' | 'skills' | 'prompts' | 'themes' + +export interface ExtensionResource { + name: string + path: string + enabled: boolean +} + +export interface ExtensionPackageResources { + extensions: ExtensionResource[] + skills: ExtensionResource[] + prompts: ExtensionResource[] + themes: ExtensionResource[] +} + +export interface ExtensionPackageInfo { + source: string + scope: ExtensionPackageScope + filtered: boolean + installedPath?: string + packageName?: string + version?: string + description?: string + image?: string + keywords?: string[] + status: ExtensionPackageStatus + error?: string + resources: ExtensionPackageResources +} + +export interface ExtensionCatalogSummary { + total: number + active: number + inactive: number + missing: number + error: number +} + +export interface ExtensionCatalog { + packages: ExtensionPackageInfo[] + summary: ExtensionCatalogSummary +} + +export interface BuildExtensionCatalogOptions { + cwd: string + homeDir?: string +} + +interface PiSettings { + packages?: PackageSourceEntry[] +} + +interface PackageSourceObject { + source: string + extensions?: string[] + skills?: string[] + prompts?: string[] + themes?: string[] +} + +type PackageSourceEntry = string | PackageSourceObject + +interface NormalizedPackageSource { + source: string + scope: ExtensionPackageScope + filtered: boolean + filters: Partial> +} + +interface PackageJsonMetadata { + name?: string + version?: string + description?: string + keywords?: string[] + pi?: Partial> & { image?: string } +} + +export interface ParsedPiInstallCommand { + source: string + local: boolean +} + +export type PiCommandRunner = (args: string[], options: { cwd: string }) => Promise<{ stdout: string; stderr: string }> + +const RESOURCE_TYPES: ExtensionResourceType[] = ['extensions', 'skills', 'prompts', 'themes'] + +const RESOURCE_FILE_PATTERNS: Record = { + extensions: /\.(?:ts|js)$/, + skills: /\.md$/, + prompts: /\.md$/, + themes: /\.json$/, +} + +function getHomeDir(homeDir?: string): string { + return homeDir || process.env.USERPROFILE || process.env.HOME || os.homedir() +} + +function getAgentDir(homeDir?: string): string { + return path.join(getHomeDir(homeDir), '.pi', 'agent') +} + +function readJsonFile(filePath: string): T | null { + if (!fs.existsSync(filePath)) return null + try { + return JSON.parse(fs.readFileSync(filePath, 'utf8')) as T + } catch { + return null + } +} + +function readSettings(filePath: string): PiSettings { + return readJsonFile(filePath) ?? {} +} + +function normalizePackageEntry( + entry: PackageSourceEntry, + scope: ExtensionPackageScope, +): NormalizedPackageSource | null { + if (typeof entry === 'string') { + const source = entry.trim() + return source ? { source, scope, filtered: false, filters: {} } : null + } + + if (!entry || typeof entry.source !== 'string') return null + const source = entry.source.trim() + if (!source) return null + + return { + source, + scope, + filtered: true, + filters: { + extensions: entry.extensions, + skills: entry.skills, + prompts: entry.prompts, + themes: entry.themes, + }, + } +} + +function parseNpmPackageName(source: string): string | null { + if (!source.startsWith('npm:')) return null + const spec = source.slice('npm:'.length).trim() + const match = spec.match(/^(@?[^@]+(?:\/[^@]+)?)(?:@.+)?$/) + return (match?.[1] ?? spec) || null +} + +function isProbablyLocalSource(source: string): boolean { + return ( + source.startsWith('.') || + source.startsWith('~') || + path.isAbsolute(source) || + /^[a-zA-Z]:[\\/]/.test(source) || + source.includes('\\') + ) +} + +function resolveLocalSource(source: string, scope: ExtensionPackageScope, cwd: string, homeDir?: string): string { + const baseDir = scope === 'project' ? path.join(cwd, '.pi') : getAgentDir(homeDir) + if (source.startsWith('~')) return path.resolve(path.join(getHomeDir(homeDir), source.slice(1))) + if (path.isAbsolute(source) || /^[a-zA-Z]:[\\/]/.test(source)) return path.resolve(source) + return path.resolve(baseDir, source) +} + +function parseGitInstallPathParts(source: string): { host: string; repoPath: string } | null { + const normalized = source.replace(/^git:/, '') + const githubShorthand = normalized.match(/^github\.com[/:]([^\s]+)$/) + if (githubShorthand) return { host: 'github.com', repoPath: githubShorthand[1].replace(/\.git$/, '') } + + const sshMatch = normalized.match(/^git@([^:]+):(.+)$/) + if (sshMatch) return { host: sshMatch[1], repoPath: sshMatch[2].replace(/\.git$/, '') } + + try { + const url = new URL(normalized) + if (!url.hostname || !url.pathname) return null + return { host: url.hostname, repoPath: url.pathname.replace(/^\//, '').replace(/\.git$/, '') } + } catch { + return null + } +} + +function resolveInstalledPath( + source: string, + scope: ExtensionPackageScope, + cwd: string, + homeDir?: string, +): string | undefined { + const agentDir = getAgentDir(homeDir) + if (source.startsWith('npm:')) { + const packageName = parseNpmPackageName(source) + if (!packageName) return undefined + const installRoot = scope === 'project' ? path.join(cwd, '.pi', 'npm') : path.join(agentDir, 'npm') + const packagePath = path.join(installRoot, 'node_modules', ...packageName.split('/')) + return fs.existsSync(packagePath) ? packagePath : undefined + } + + if (isProbablyLocalSource(source)) { + const packagePath = resolveLocalSource(source, scope, cwd, homeDir) + return fs.existsSync(packagePath) ? packagePath : undefined + } + + const gitParts = parseGitInstallPathParts(source) + if (gitParts) { + const installRoot = scope === 'project' ? path.join(cwd, '.pi', 'git') : path.join(agentDir, 'git') + const packagePath = path.join(installRoot, gitParts.host, ...gitParts.repoPath.split(/[\\/]+/)) + return fs.existsSync(packagePath) ? packagePath : undefined + } + + return undefined +} + +function collectFiles(root: string, resourceType: ExtensionResourceType): string[] { + if (!fs.existsSync(root)) return [] + const stat = fs.statSync(root) + if (stat.isFile()) return RESOURCE_FILE_PATTERNS[resourceType].test(root) ? [root] : [] + if (!stat.isDirectory()) return [] + + const files: string[] = [] + for (const entry of fs.readdirSync(root, { withFileTypes: true })) { + const entryPath = path.join(root, entry.name) + if (entry.isDirectory()) { + files.push(...collectFiles(entryPath, resourceType)) + } else if (entry.isFile() && RESOURCE_FILE_PATTERNS[resourceType].test(entryPath)) { + files.push(entryPath) + } + } + return files.sort((a, b) => a.localeCompare(b)) +} + +function stripOverridePatterns(entries: string[]): string[] { + return entries.filter(entry => !entry.trim().startsWith('!')) +} + +function resolveManifestEntry(packageRoot: string, entry: string, resourceType: ExtensionResourceType): string[] { + const normalized = entry.trim() + if (!normalized || normalized.startsWith('!')) return [] + + if (normalized.includes('*')) { + const conventionRoot = path.join(packageRoot, resourceType) + return collectFiles(conventionRoot, resourceType) + } + + const entryPath = path.resolve(packageRoot, normalized) + return collectFiles(entryPath, resourceType) +} + +function discoverResourcePaths( + packageRoot: string, + metadata: PackageJsonMetadata | null, + resourceType: ExtensionResourceType, +): string[] { + const manifestEntries = metadata?.pi?.[resourceType] + if (manifestEntries && manifestEntries.length > 0) { + const files = stripOverridePatterns(manifestEntries).flatMap(entry => + resolveManifestEntry(packageRoot, entry, resourceType), + ) + return Array.from(new Set(files)).sort((a, b) => a.localeCompare(b)) + } + + return collectFiles(path.join(packageRoot, resourceType), resourceType) +} + +function toRelativePosix(packageRoot: string, filePath: string): string { + return path.relative(packageRoot, filePath).replace(/\\/g, '/') +} + +function wildcardToRegExp(pattern: string): RegExp { + const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '.*') + return new RegExp(`^${escaped}$`) +} + +function matchesFilter(packageRoot: string, filePath: string, patterns: string[]): boolean { + const relativePath = toRelativePosix(packageRoot, filePath) + const normalizedPatterns = patterns.map(pattern => pattern.trim()).filter(Boolean) + if (normalizedPatterns.length === 0) return false + + return normalizedPatterns.some(pattern => { + const positivePattern = pattern.startsWith('!') ? pattern.slice(1) : pattern + if (!positivePattern) return false + const normalizedPattern = positivePattern.replace(/\\/g, '/') + return ( + relativePath === normalizedPattern || + relativePath.endsWith(`/${normalizedPattern}`) || + wildcardToRegExp(normalizedPattern).test(relativePath) + ) + }) +} + +function resourceName(filePath: string): string { + if (path.basename(filePath).toLowerCase() === 'skill.md') return path.basename(path.dirname(filePath)) + return path.basename(filePath) +} + +function buildResources( + packageRoot: string, + metadata: PackageJsonMetadata | null, + filters: Partial>, +): ExtensionPackageResources { + const resources = {} as ExtensionPackageResources + + for (const resourceType of RESOURCE_TYPES) { + const files = discoverResourcePaths(packageRoot, metadata, resourceType) + const patterns = filters[resourceType] + resources[resourceType] = files.map(filePath => ({ + name: resourceName(filePath), + path: filePath, + enabled: patterns === undefined ? true : matchesFilter(packageRoot, filePath, patterns), + })) + } + + return resources +} + +function hasEnabledResource(resources: ExtensionPackageResources): boolean { + return RESOURCE_TYPES.some(resourceType => resources[resourceType].some(resource => resource.enabled)) +} + +function countByStatus(packages: ExtensionPackageInfo[]): ExtensionCatalogSummary { + return packages.reduce( + (summary, pkg) => { + summary.total += 1 + summary[pkg.status] += 1 + return summary + }, + { total: 0, active: 0, inactive: 0, missing: 0, error: 0 }, + ) +} + +function readPackageMetadata(packageRoot: string): { metadata: PackageJsonMetadata | null; error?: string } { + const packageJsonPath = path.join(packageRoot, 'package.json') + if (!fs.existsSync(packageJsonPath)) return { metadata: null } + + try { + return { metadata: JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) as PackageJsonMetadata } + } catch (error) { + return { metadata: null, error: error instanceof Error ? error.message : String(error) } + } +} + +export function buildExtensionCatalog(options: BuildExtensionCatalogOptions): ExtensionCatalog { + const homeDir = getHomeDir(options.homeDir) + const agentDir = getAgentDir(homeDir) + const userSettings = readSettings(path.join(agentDir, 'settings.json')) + const projectSettings = readSettings(path.join(options.cwd, '.pi', 'settings.json')) + const configuredPackages = [ + ...(userSettings.packages ?? []).map(entry => normalizePackageEntry(entry, 'user')), + ...(projectSettings.packages ?? []).map(entry => normalizePackageEntry(entry, 'project')), + ].filter((entry): entry is NormalizedPackageSource => entry !== null) + + const packages = configuredPackages.map(entry => { + const installedPath = resolveInstalledPath(entry.source, entry.scope, options.cwd, homeDir) + if (!installedPath) { + return { + source: entry.source, + scope: entry.scope, + filtered: entry.filtered, + status: 'missing', + resources: { extensions: [], skills: [], prompts: [], themes: [] }, + } + } + + const { metadata, error } = readPackageMetadata(installedPath) + const resources = buildResources(installedPath, metadata, entry.filters) + const status: ExtensionPackageStatus = error ? 'error' : hasEnabledResource(resources) ? 'active' : 'inactive' + + return { + source: entry.source, + scope: entry.scope, + filtered: entry.filtered, + installedPath, + packageName: metadata?.name, + version: metadata?.version, + description: metadata?.description, + image: metadata?.pi?.image, + keywords: metadata?.keywords, + status, + error, + resources, + } + }) + + packages.sort((a, b) => { + if (a.scope !== b.scope) return a.scope === 'project' ? -1 : 1 + return (a.packageName || a.source).localeCompare(b.packageName || b.source) + }) + + return { packages, summary: countByStatus(packages) } +} + +function tokenizeCommand(command: string): string[] { + const tokens: string[] = [] + let current = '' + let quote: '"' | "'" | null = null + + for (let index = 0; index < command.length; index += 1) { + const char = command[index] + if (quote) { + if (char === quote) { + quote = null + } else { + current += char + } + continue + } + + if (char === '"' || char === "'") { + quote = char + continue + } + + if (/\s/.test(char)) { + if (current) { + tokens.push(current) + current = '' + } + continue + } + + current += char + } + + if (quote) throw new Error('Unterminated quote in install command') + if (current) tokens.push(current) + return tokens +} + +export function parsePiInstallCommand(command: string): ParsedPiInstallCommand { + const tokens = tokenizeCommand(command.trim()) + if ( + tokens.length < 2 || + path + .basename(tokens[0]) + .replace(/\.(cmd|exe)$/i, '') + .toLowerCase() !== 'pi' + ) { + throw new Error('Paste a pi install command, for example: pi install npm:pi-hud') + } + if (tokens[1] !== 'install') { + throw new Error('Only pi install commands are supported') + } + + let local = false + let source: string | null = null + for (const token of tokens.slice(2)) { + if (token === '-l' || token === '--local') { + local = true + continue + } + if (token.startsWith('-')) throw new Error(`Unsupported install option: ${token}`) + if (source) throw new Error(`Unsupported extra argument: ${token}`) + if (/[;&|<>`]/.test(token)) throw new Error(`Unsupported shell syntax in install command: ${token}`) + source = token + } + + if (!source) throw new Error('Missing extension source in pi install command') + return { source, local } +} + +function getPiExecutable(): string { + return process.platform === 'win32' ? 'pi.cmd' : 'pi' +} + +export function defaultPiCommandRunner( + args: string[], + options: { cwd: string }, +): Promise<{ stdout: string; stderr: string }> { + return new Promise((resolve, reject) => { + const child = spawn(getPiExecutable(), args, { cwd: options.cwd, shell: false }) + let stdout = '' + let stderr = '' + + child.stdout?.on('data', chunk => { + stdout += String(chunk) + }) + child.stderr?.on('data', chunk => { + stderr += String(chunk) + }) + child.on('error', reject) + child.on('close', code => { + if (code === 0) { + resolve({ stdout, stderr }) + return + } + reject(new Error(stderr.trim() || `pi ${args.join(' ')} exited with code ${code ?? 'unknown'}`)) + }) + }) +} + +export async function executeExtensionInstallCommand( + command: string, + options: { cwd: string; runner?: PiCommandRunner }, +): Promise<{ stdout: string; stderr: string; source: string; scope: ExtensionPackageScope }> { + const parsed = parsePiInstallCommand(command) + const runner = options.runner ?? defaultPiCommandRunner + const args = ['install', parsed.source, ...(parsed.local ? ['-l'] : [])] + const result = await runner(args, { cwd: options.cwd }) + return { ...result, source: parsed.source, scope: parsed.local ? 'project' : 'user' } +} + +export async function executeExtensionPackageRemoval( + target: { source: string; scope: ExtensionPackageScope }, + options: { cwd: string; runner?: PiCommandRunner }, +): Promise<{ stdout: string; stderr: string }> { + const runner = options.runner ?? defaultPiCommandRunner + return runner(['remove', target.source, ...(target.scope === 'project' ? ['-l'] : [])], { cwd: options.cwd }) +} diff --git a/extensions/piagentui-git-manager.test.ts b/extensions/piagentui-git-manager.test.ts new file mode 100644 index 0000000..a53649d --- /dev/null +++ b/extensions/piagentui-git-manager.test.ts @@ -0,0 +1,103 @@ +import * as os from 'node:os' +import * as path from 'node:path' +import { describe, expect, it, vi } from 'vitest' +import { + checkoutGitBranch, + commitGitChanges, + createGitBranch, + getGitStatus, + listGitBranches, + stageGitPaths, + unstageGitPaths, + type GitCommandRunner, +} from './piagentui-git-manager.js' + +const repoDir = path.join(os.tmpdir(), 'piagentui-git-manager-test') + +function createRunner(outputs: Record): GitCommandRunner { + return vi.fn(async args => { + const key = args.join(' ') + const output = outputs[key] + if (!output) throw new Error(`Unexpected git args: ${key}`) + return { stdout: output.stdout ?? '', stderr: output.stderr ?? '' } + }) +} + +describe('piagentui git manager', () => { + it('parses branch output into current local and remote branches', async () => { + const runner = createRunner({ + 'branch --format=%(refname:short)|%(upstream:short)|%(objectname:short)|%(HEAD) --all': { + stdout: [ + 'main|origin/main|1111111| ', + 'feature/git-ui|origin/feature/git-ui|2222222|*', + 'origin/main||3333333| ', + ].join('\n'), + }, + }) + + const result = await listGitBranches(repoDir, runner) + + expect(result.current).toBe('feature/git-ui') + expect(result.branches).toEqual([ + { name: 'main', current: false, remote: false, upstream: 'origin/main', commit: '1111111' }, + { name: 'feature/git-ui', current: true, remote: false, upstream: 'origin/feature/git-ui', commit: '2222222' }, + { name: 'origin/main', current: false, remote: true, commit: '3333333' }, + ]) + }) + + it('parses porcelain v2 status and ahead behind data', async () => { + const runner = createRunner({ + 'status --porcelain=v2 --branch': { + stdout: [ + '# branch.oid abcdef1', + '# branch.head feature/git-ui', + '# branch.upstream origin/feature/git-ui', + '# branch.ab +2 -1', + '1 M. N... 100644 100644 100644 a b src/app.tsx', + '1 .M N... 100644 100644 100644 a b src/input.tsx', + '? src/new-file.ts', + ].join('\n'), + }, + }) + + const status = await getGitStatus(repoDir, runner) + + expect(status.branch).toBe('feature/git-ui') + expect(status.upstream).toBe('origin/feature/git-ui') + expect(status.ahead).toBe(2) + expect(status.behind).toBe(1) + expect(status.dirty).toBe(true) + expect(status.files).toEqual([ + { path: 'src/app.tsx', index: 'M', workingTree: '.', staged: true, unstaged: false, untracked: false }, + { path: 'src/input.tsx', index: '.', workingTree: 'M', staged: false, unstaged: true, untracked: false }, + { path: 'src/new-file.ts', index: '?', workingTree: '?', staged: false, unstaged: false, untracked: true }, + ]) + }) + + it('runs safe fixed argv for branch and stage operations', async () => { + const runner = createRunner({ + 'checkout main': {}, + 'checkout -b feature/new-branch': {}, + 'add -- src/app.tsx src/input.tsx': {}, + 'restore --staged -- src/app.tsx': {}, + }) + + await checkoutGitBranch(repoDir, { branch: 'main' }, runner) + await createGitBranch(repoDir, { name: 'feature/new-branch' }, runner) + await stageGitPaths(repoDir, { paths: ['src/app.tsx', 'src/input.tsx'] }, runner) + await unstageGitPaths(repoDir, { paths: ['src/app.tsx'] }, runner) + + expect(runner).toHaveBeenCalledWith(['checkout', 'main'], { cwd: repoDir }) + expect(runner).toHaveBeenCalledWith(['checkout', '-b', 'feature/new-branch'], { cwd: repoDir }) + expect(runner).toHaveBeenCalledWith(['add', '--', 'src/app.tsx', 'src/input.tsx'], { cwd: repoDir }) + expect(runner).toHaveBeenCalledWith(['restore', '--staged', '--', 'src/app.tsx'], { cwd: repoDir }) + }) + + it('rejects empty commit messages before running git', async () => { + const runner = vi.fn() + + await expect(commitGitChanges(repoDir, { message: ' ' }, runner)).rejects.toThrow('Commit message is required') + + expect(runner).not.toHaveBeenCalled() + }) +}) diff --git a/extensions/piagentui-git-manager.ts b/extensions/piagentui-git-manager.ts new file mode 100644 index 0000000..6159823 --- /dev/null +++ b/extensions/piagentui-git-manager.ts @@ -0,0 +1,259 @@ +import { spawn } from 'node:child_process' + +export interface GitCommandResult { + stdout: string + stderr: string +} + +export type GitCommandRunner = (args: string[], options: { cwd: string }) => Promise + +export interface GitBranchInfo { + name: string + current: boolean + remote: boolean + upstream?: string + commit?: string +} + +export interface GitBranchesResult { + current?: string + branches: GitBranchInfo[] +} + +export interface GitStatusFile { + path: string + index: string + workingTree: string + staged: boolean + unstaged: boolean + untracked: boolean +} + +export interface GitStatusResult { + branch?: string + upstream?: string + ahead: number + behind: number + dirty: boolean + files: GitStatusFile[] +} + +export interface GitActionResult { + ok: true + stdout?: string + stderr?: string +} + +export interface CheckoutGitBranchRequest { + branch: string +} + +export interface CreateGitBranchRequest { + name: string +} + +export interface GitPathsRequest { + paths: string[] +} + +export interface CommitGitChangesRequest { + message: string +} + +export const runGit: GitCommandRunner = (args, options) => { + return new Promise((resolve, reject) => { + const child = spawn('git', args, { cwd: options.cwd, shell: false }) + let stdout = '' + let stderr = '' + + child.stdout.setEncoding('utf8') + child.stderr.setEncoding('utf8') + child.stdout.on('data', chunk => { + stdout += chunk + }) + child.stderr.on('data', chunk => { + stderr += chunk + }) + child.on('error', reject) + child.on('close', code => { + if (code === 0) { + resolve({ stdout, stderr }) + return + } + reject(new Error((stderr || stdout || `git ${args.join(' ')} failed with exit code ${code}`).trim())) + }) + }) +} + +function assertSafeRefName(value: string, label: string): string { + const name = value.trim() + if (!name) throw new Error(`${label} is required`) + if (name.startsWith('-')) throw new Error(`Invalid ${label}`) + if (/\s/.test(name) || /[\0~^:?*[\]\\]/.test(name) || name.includes('..') || name.includes('@{')) { + throw new Error(`Invalid ${label}`) + } + return name +} + +function assertSafePath(value: string): string { + const filePath = value.trim() + if (!filePath) throw new Error('Git path is required') + if (filePath.includes('\0')) throw new Error('Invalid Git path') + return filePath +} + +function normalizeRemoteName(name: string): string { + return name.replace(/^remotes\//, '') +} + +export async function listGitBranches(cwd: string, runner: GitCommandRunner = runGit): Promise { + const { stdout } = await runner( + ['branch', '--format=%(refname:short)|%(upstream:short)|%(objectname:short)|%(HEAD)', '--all'], + { + cwd, + }, + ) + + const branches = stdout + .split(/\r?\n/) + .map(line => line.trim()) + .filter(Boolean) + .map(line => { + const [rawName, upstream, commit, head] = line.split('|') + const name = normalizeRemoteName(rawName) + return { + name, + current: head === '*', + remote: rawName.startsWith('remotes/') || name.startsWith('origin/'), + upstream: upstream || undefined, + commit: commit || undefined, + } + }) + .filter(branch => branch.name !== 'origin/HEAD') + + return { current: branches.find(branch => branch.current)?.name, branches } +} + +function parseStatusPath(line: string): string { + if (line.includes('\t')) return line.split('\t').pop() || '' + const parts = line.split(' ') + return parts[parts.length - 1] || '' +} + +export async function getGitStatus(cwd: string, runner: GitCommandRunner = runGit): Promise { + const { stdout } = await runner(['status', '--porcelain=v2', '--branch'], { cwd }) + const status: GitStatusResult = { ahead: 0, behind: 0, dirty: false, files: [] } + + for (const line of stdout.split(/\r?\n/)) { + if (!line) continue + if (line.startsWith('# branch.head ')) { + const branch = line.slice('# branch.head '.length).trim() + if (branch && branch !== '(detached)') status.branch = branch + continue + } + if (line.startsWith('# branch.upstream ')) { + status.upstream = line.slice('# branch.upstream '.length).trim() + continue + } + if (line.startsWith('# branch.ab ')) { + const match = line.match(/\+(\d+)\s+-(\d+)/) + if (match) { + status.ahead = Number(match[1]) + status.behind = Number(match[2]) + } + continue + } + if (line.startsWith('1 ') || line.startsWith('2 ')) { + const xy = line.slice(2, 4) + const file = { + path: parseStatusPath(line), + index: xy[0], + workingTree: xy[1], + staged: xy[0] !== '.', + unstaged: xy[1] !== '.', + untracked: false, + } + status.files.push(file) + continue + } + if (line.startsWith('? ')) { + status.files.push({ + path: line.slice(2).trim(), + index: '?', + workingTree: '?', + staged: false, + unstaged: false, + untracked: true, + }) + } + } + + status.dirty = status.files.length > 0 + return status +} + +export async function checkoutGitBranch( + cwd: string, + request: CheckoutGitBranchRequest, + runner: GitCommandRunner = runGit, +): Promise { + const branch = assertSafeRefName(request.branch, 'Branch') + const result = await runner(['checkout', branch], { cwd }) + return { ok: true, ...result } +} + +export async function createGitBranch( + cwd: string, + request: CreateGitBranchRequest, + runner: GitCommandRunner = runGit, +): Promise { + const name = assertSafeRefName(request.name, 'Branch name') + const result = await runner(['checkout', '-b', name], { cwd }) + return { ok: true, ...result } +} + +function normalizePaths(request: GitPathsRequest): string[] { + if (!Array.isArray(request.paths) || request.paths.length === 0) throw new Error('At least one path is required') + return request.paths.map(assertSafePath) +} + +export async function stageGitPaths( + cwd: string, + request: GitPathsRequest, + runner: GitCommandRunner = runGit, +): Promise { + const paths = normalizePaths(request) + const result = await runner(['add', '--', ...paths], { cwd }) + return { ok: true, ...result } +} + +export async function unstageGitPaths( + cwd: string, + request: GitPathsRequest, + runner: GitCommandRunner = runGit, +): Promise { + const paths = normalizePaths(request) + const result = await runner(['restore', '--staged', '--', ...paths], { cwd }) + return { ok: true, ...result } +} + +export async function commitGitChanges( + cwd: string, + request: CommitGitChangesRequest, + runner: GitCommandRunner = runGit, +): Promise { + const message = request.message.trim() + if (!message) throw new Error('Commit message is required') + const result = await runner(['commit', '-m', message], { cwd }) + return { ok: true, ...result } +} + +export async function pullGitBranch(cwd: string, runner: GitCommandRunner = runGit): Promise { + const result = await runner(['pull', '--ff-only'], { cwd }) + return { ok: true, ...result } +} + +export async function pushGitBranch(cwd: string, runner: GitCommandRunner = runGit): Promise { + const result = await runner(['push'], { cwd }) + return { ok: true, ...result } +} diff --git a/extensions/piagentui-server-core.test.ts b/extensions/piagentui-server-core.test.ts new file mode 100644 index 0000000..a646254 --- /dev/null +++ b/extensions/piagentui-server-core.test.ts @@ -0,0 +1,171 @@ +import { describe, it, expect } from 'vitest' +import { + isLoopbackHost, + validateBearerToken, + preventPathTraversal, + validateHostAndOrigin, + validateHostAndOriginForAccess, + isRequestBodySizeAllowed, + getLocalNetworkUrls, + validateSttBaseUrl, +} from './piagentui-server-core.js' + +describe('PiAgentUi Server Core Security Helpers', () => { + describe('isLoopbackHost', () => { + it('should accept loopback hostnames and IPs', () => { + expect(isLoopbackHost('localhost')).toBe(true) + expect(isLoopbackHost('127.0.0.1')).toBe(true) + expect(isLoopbackHost('[::1]')).toBe(true) + expect(isLoopbackHost('localhost:3000')).toBe(true) + expect(isLoopbackHost('127.0.0.1:8080')).toBe(true) + }) + + it('should reject external and LAN hostnames or IPs', () => { + expect(isLoopbackHost('192.168.1.1')).toBe(false) + expect(isLoopbackHost('example.com')).toBe(false) + expect(isLoopbackHost('0.0.0.0')).toBe(false) + expect(isLoopbackHost('10.0.0.1')).toBe(false) + }) + }) + + describe('validateBearerToken', () => { + const sampleToken = 'test-token-value-12345' + + it('should accept authorization headers with correct bearer token', () => { + expect(validateBearerToken(`Bearer ${sampleToken}`, sampleToken)).toBe(true) + }) + + it('should reject headers with incorrect token', () => { + expect(validateBearerToken(`Bearer wrong-token`, sampleToken)).toBe(false) + }) + + it('should reject headers with malformed format', () => { + expect(validateBearerToken(`Basic ${sampleToken}`, sampleToken)).toBe(false) + expect(validateBearerToken(sampleToken, sampleToken)).toBe(false) + expect(validateBearerToken('', sampleToken)).toBe(false) + }) + }) + + describe('preventPathTraversal', () => { + const baseDir = '/workspace/app/dist' + + it('should allow paths staying within the base directory', () => { + expect(preventPathTraversal(baseDir, 'index.html')).toBe(true) + expect(preventPathTraversal(baseDir, 'assets/main.js')).toBe(true) + }) + + it('should reject paths attempting to traverse out of the base directory', () => { + expect(preventPathTraversal(baseDir, '../index.html')).toBe(false) + expect(preventPathTraversal(baseDir, '../../etc/passwd')).toBe(false) + expect(preventPathTraversal(baseDir, 'assets/../../config.json')).toBe(false) + }) + }) + + describe('validateHostAndOrigin', () => { + it('should allow local host and local origin', () => { + expect(validateHostAndOrigin('127.0.0.1', 'http://127.0.0.1:3000')).toBe(true) + expect(validateHostAndOrigin('localhost', 'http://localhost')).toBe(true) + expect(validateHostAndOrigin('localhost:5000', '')).toBe(true) // Optional origin + }) + + it('should reject non-local host or non-local origin', () => { + expect(validateHostAndOrigin('127.0.0.1', 'http://malicious.com')).toBe(false) + expect(validateHostAndOrigin('external.com', 'http://localhost')).toBe(false) + }) + }) + + describe('validateHostAndOriginForAccess', () => { + it('should always allow loopback and only allow LAN hosts when enabled', () => { + expect(validateHostAndOriginForAccess('127.0.0.1:58785', undefined, false)).toBe(true) + expect(validateHostAndOriginForAccess('192.168.1.25:58785', undefined, false)).toBe(false) + expect(validateHostAndOriginForAccess('192.168.1.25:58785', 'http://192.168.1.25:58785', true)).toBe(true) + expect(validateHostAndOriginForAccess('192.168.1.25:58785', 'http://evil.test', true)).toBe(false) + }) + }) + + describe('getLocalNetworkUrls', () => { + it('should build LAN URLs from non-internal IPv4 interfaces', () => { + const urls = getLocalNetworkUrls(58785, { + WiFi: [ + { + address: '192.168.1.25', + family: 'IPv4', + internal: false, + netmask: '255.255.255.0', + mac: '00:00:00:00:00:01', + cidr: '192.168.1.25/24', + }, + ], + Loopback: [ + { + address: '127.0.0.1', + family: 'IPv4', + internal: true, + netmask: '255.0.0.0', + mac: '00:00:00:00:00:00', + cidr: '127.0.0.1/8', + }, + ], + }) + + expect(urls).toEqual(['http://192.168.1.25:58785']) + }) + + it('should prefer physical LAN adapters over WSL and Hyper-V virtual adapters', () => { + const urls = getLocalNetworkUrls(58785, { + 'vEthernet (WSL (Hyper-V firewall))': [ + { + address: '172.18.192.1', + family: 'IPv4', + internal: false, + netmask: '255.255.240.0', + mac: '00:15:5d:56:b1:b1', + cidr: '172.18.192.1/20', + }, + ], + 'vEthernet (Default Switch)': [ + { + address: '172.25.224.1', + family: 'IPv4', + internal: false, + netmask: '255.255.240.0', + mac: '00:15:5d:15:fd:c0', + cidr: '172.25.224.1/20', + }, + ], + Ethernet: [ + { + address: '192.168.0.150', + family: 'IPv4', + internal: false, + netmask: '255.255.255.0', + mac: '34:5a:60:fb:39:42', + cidr: '192.168.0.150/24', + }, + ], + }) + + expect(urls).toEqual(['http://192.168.0.150:58785']) + }) + }) + + describe('validateSttBaseUrl', () => { + it('should allow only HTTP(S) base URLs', () => { + expect(validateSttBaseUrl('https://api.openai.com/v1')).toBe(true) + expect(validateSttBaseUrl('http://localhost:11434/v1')).toBe(true) + expect(validateSttBaseUrl('file:///tmp/key')).toBe(false) + expect(validateSttBaseUrl('not a url')).toBe(false) + }) + }) + + describe('isRequestBodySizeAllowed', () => { + it('should allow small request content sizes', () => { + expect(isRequestBodySizeAllowed('100')).toBe(true) + expect(isRequestBodySizeAllowed('1048576')).toBe(true) // 1MB + }) + + it('should reject extremely large content sizes', () => { + expect(isRequestBodySizeAllowed('20000000')).toBe(false) // ~20MB + }) + }) +}) diff --git a/extensions/piagentui-server-core.ts b/extensions/piagentui-server-core.ts new file mode 100644 index 0000000..8bb170e --- /dev/null +++ b/extensions/piagentui-server-core.ts @@ -0,0 +1,172 @@ +import * as path from 'node:path' +import * as os from 'node:os' + +/** + * Checks if a host string matches a loopback host (localhost or 127.0.0.1 or ::1) + */ +export function isLoopbackHost(host: string | undefined): boolean { + if (!host) return false + + // Handle bracketed IPv6 hosts (e.g. "[::1]" or "[::1]:3000") + if (host.startsWith('[')) { + const closingBracket = host.indexOf(']') + if (closingBracket !== -1) { + const hostname = host.slice(1, closingBracket) + return hostname === '::1' + } + } + + // Handle port splitting for IPv4 or localhost + const lastColon = host.lastIndexOf(':') + let hostname = host + if (lastColon !== -1) { + const colonsCount = (host.match(/:/g) || []).length + if (colonsCount === 1 || host.includes('localhost')) { + hostname = host.slice(0, lastColon) + } + } + + return hostname === 'localhost' || hostname === '127.0.0.1' || hostname === '::1' +} + +/** + * Validates the Authorization header against the expected bearer token + */ +export function validateBearerToken(authHeader: string | undefined, expectedToken: string): boolean { + if (!authHeader || !expectedToken) return false + if (!authHeader.startsWith('Bearer ')) return false + const token = authHeader.substring(7).trim() + return token === expectedToken +} + +/** + * Prevents path traversal out of the designated base directory + */ +export function preventPathTraversal(baseDir: string, relativePath: string): boolean { + try { + const resolvedBase = path.resolve(baseDir) + const resolvedTarget = path.resolve(path.join(baseDir, relativePath)) + return resolvedTarget.startsWith(resolvedBase) + } catch { + return false + } +} + +/** + * Validates both Host and Origin headers to be local/loopback only + */ +export function validateHostAndOrigin(host: string | undefined, origin: string | undefined): boolean { + return validateHostAndOriginForAccess(host, origin, false) +} + +function getHostname(host: string | undefined): string { + if (!host) return '' + if (host.startsWith('[')) { + const closingBracket = host.indexOf(']') + return closingBracket === -1 ? host : host.slice(1, closingBracket) + } + + const lastColon = host.lastIndexOf(':') + const colonsCount = (host.match(/:/g) || []).length + if (lastColon !== -1 && colonsCount === 1) { + return host.slice(0, lastColon) + } + return host +} + +function isAllowedLanHost(host: string | undefined): boolean { + const hostname = getHostname(host) + if (!hostname || isLoopbackHost(hostname)) return false + if (hostname === '0.0.0.0') return false + if (/^\d{1,3}(?:\.\d{1,3}){3}$/.test(hostname)) return true + return false +} + +function isLikelyVirtualInterface(name: string, entry: os.NetworkInterfaceInfo): boolean { + const normalizedName = name.toLowerCase() + if ( + normalizedName.includes('wsl') || + normalizedName.includes('hyper-v') || + normalizedName.includes('vethernet') || + normalizedName.includes('default switch') || + normalizedName.includes('docker') || + normalizedName.includes('virtualbox') || + normalizedName.includes('vmware') || + normalizedName.includes('zerotier') || + normalizedName.includes('tailscale') + ) { + return true + } + + // Hyper-V virtual adapters commonly use Microsoft's 00:15:5d OUI. + return entry.mac.toLowerCase().startsWith('00:15:5d:') +} + +export function validateHostAndOriginForAccess( + host: string | undefined, + origin: string | undefined, + lanAccessEnabled: boolean, +): boolean { + const hostAllowed = isLoopbackHost(host) || (lanAccessEnabled && isAllowedLanHost(host)) + if (!hostAllowed) return false + + if (origin) { + try { + const url = new URL(origin) + const originAllowed = isLoopbackHost(url.host) || (lanAccessEnabled && isAllowedLanHost(url.host)) + if (!originAllowed) return false + } catch { + return false + } + } + + return true +} + +export function getLocalNetworkUrls( + port: number, + interfaces: NodeJS.Dict = os.networkInterfaces(), +): string[] { + const physicalUrls = new Set() + const fallbackUrls = new Set() + + for (const [name, entries] of Object.entries(interfaces)) { + for (const entry of entries || []) { + if (entry.internal || entry.family !== 'IPv4') continue + if (!isAllowedLanHost(entry.address)) continue + + const url = `http://${entry.address}:${port}` + if (isLikelyVirtualInterface(name, entry)) { + fallbackUrls.add(url) + } else { + physicalUrls.add(url) + } + } + } + + const urls = physicalUrls.size > 0 ? physicalUrls : fallbackUrls + return Array.from(urls).sort() +} + +export function validateSttBaseUrl(baseUrl: string | undefined): boolean { + if (!baseUrl) return false + try { + const url = new URL(baseUrl) + return url.protocol === 'http:' || url.protocol === 'https:' + } catch { + return false + } +} + +/** + * Guards against oversized requests + */ +export function isRequestBodySizeAllowed( + contentLength: string | undefined, + maxBytes: number = 10 * 1024 * 1024, +): boolean { + if (!contentLength) return true + const size = parseInt(contentLength, 10) + if (isNaN(size)) return false + return size <= maxBytes +} diff --git a/extensions/piagentui-server.test.ts b/extensions/piagentui-server.test.ts new file mode 100644 index 0000000..f0a6660 --- /dev/null +++ b/extensions/piagentui-server.test.ts @@ -0,0 +1,1043 @@ +import * as os from 'node:os' +import * as path from 'node:path' +import * as fs from 'node:fs' +import * as nodeHttp from 'node:http' +import { spawnSync } from 'node:child_process' + +const tempHomeDir = path.join(os.tmpdir(), `piagentui-test-home-${Math.random().toString(36).substring(2)}`) +fs.mkdirSync(tempHomeDir, { recursive: true }) + +const originalUserProfile = process.env.USERPROFILE +const originalHome = process.env.HOME + +process.env.USERPROFILE = tempHomeDir +process.env.HOME = tempHomeDir + +import { describe, it, expect, vi, afterAll } from 'vitest' +import serverInit from './piagentui-server.js' + +describe('PiAgentUi Extension Server', () => { + afterAll(() => { + // Clean up temp directory + try { + if (fs.existsSync(tempHomeDir)) { + fs.rmSync(tempHomeDir, { recursive: true, force: true }) + } + } catch { + // ignore + } + + process.env.USERPROFILE = originalUserProfile + process.env.HOME = originalHome + }) + + it('should initialize server, listen on a port, write discovery info, and respond to requests', async () => { + // Mock ExtensionAPI + const listeners: Record any> = {} + const mockPi = { + on: (event: string, callback: (...args: any[]) => any) => { + listeners[event] = callback + }, + setModel: vi.fn(), + sendUserMessage: vi.fn(), + getCommands: vi.fn(() => [ + { + name: 'review', + description: 'Run project review', + source: 'extension', + sourceInfo: { path: '/mock/extensions/review.ts', scope: 'project' }, + }, + { + name: 'release', + description: 'Use release prompt', + source: 'prompt', + sourceInfo: { path: '/mock/prompts/release.md', scope: 'global' }, + }, + { + name: 'skill:test-driven-development', + description: 'Use TDD skill', + source: 'skill', + sourceInfo: { path: '/mock/skills/test-driven-development/SKILL.md', scope: 'global' }, + }, + ]), + } + + // Initialize extension server (registers event listeners on mockPi) + serverInit(mockPi as any) + + expect(listeners['session_start']).toBeDefined() + expect(listeners['session_shutdown']).toBeDefined() + + // Create session and skill directories + const tempSessionDir = path.join(tempHomeDir, 'sessions') + fs.mkdirSync(tempSessionDir, { recursive: true }) + + const projectDir = path.join(tempHomeDir, 'project') + const globalSkillFile = path.join(tempHomeDir, '.agents', 'skills', 'global-skill', 'SKILL.md') + const projectSkillFile = path.join(projectDir, '.pi', 'skills', 'project-skill', 'SKILL.md') + const packageSkillFile = path.join( + tempHomeDir, + '.pi', + 'agent', + 'npm', + 'node_modules', + 'demo-package', + 'skills', + 'package-skill', + 'SKILL.md', + ) + const mcpConfigFile = path.join(tempHomeDir, '.pi', 'agent', 'mcp.json') + const piSettingsFile = path.join(tempHomeDir, '.pi', 'agent', 'settings.json') + const extensionPackageRoot = path.join(tempHomeDir, '.pi', 'agent', 'npm', 'node_modules', 'pi-demo') + fs.mkdirSync(path.dirname(globalSkillFile), { recursive: true }) + fs.mkdirSync(path.dirname(projectSkillFile), { recursive: true }) + fs.writeFileSync(path.join(projectDir, 'README.md'), 'PiAgentUI test repo\n', 'utf8') + spawnSync('git', ['init', '-b', 'main'], { cwd: projectDir }) + spawnSync('git', ['config', 'user.email', 'piagentui@example.test'], { cwd: projectDir }) + spawnSync('git', ['config', 'user.name', 'PiAgentUI Test'], { cwd: projectDir }) + spawnSync('git', ['add', 'README.md'], { cwd: projectDir }) + spawnSync('git', ['commit', '-m', 'initial commit'], { cwd: projectDir }) + fs.mkdirSync(path.dirname(packageSkillFile), { recursive: true }) + fs.mkdirSync(path.dirname(mcpConfigFile), { recursive: true }) + fs.mkdirSync(path.join(extensionPackageRoot, 'extensions'), { recursive: true }) + fs.writeFileSync( + mcpConfigFile, + JSON.stringify({ + mcpServers: { + context7: { + type: 'http', + url: 'https://mcp.context7.com/mcp', + description: 'Context7 docs', + directTools: true, + lifecycle: 'lazy', + }, + localTool: { + command: 'npx', + args: ['local-mcp'], + }, + }, + }), + ) + fs.writeFileSync(piSettingsFile, JSON.stringify({ packages: ['npm:pi-demo'] }), 'utf8') + fs.writeFileSync( + path.join(extensionPackageRoot, 'package.json'), + JSON.stringify({ + name: 'pi-demo', + version: '1.0.0', + description: 'Demo Pi extension package', + pi: { extensions: ['./extensions'] }, + }), + 'utf8', + ) + fs.writeFileSync(path.join(extensionPackageRoot, 'extensions', 'demo.ts'), 'export default {}', 'utf8') + fs.writeFileSync( + globalSkillFile, + '---\nname: global-skill\ndescription: Global skill description\n---\n\nGlobal content', + ) + fs.writeFileSync( + projectSkillFile, + '---\nname: project-skill\ndescription: Project skill description\n---\n\nProject content', + ) + fs.writeFileSync( + packageSkillFile, + '---\nname: package-skill\ndescription: Package skill description\n---\n\nPackage content', + ) + + // Create a mock active session file + const activeSessionId = 'test-session-uuid-12345' + const sessionFile = path.join(tempSessionDir, `session_${activeSessionId}.jsonl`) + fs.writeFileSync( + sessionFile, + JSON.stringify({ + type: 'session', + id: activeSessionId, + timestamp: new Date().toISOString(), + cwd: '/mock/cwd', + }) + '\n', + ) + + const otherSessionId = 'test-session-uuid-other' + const otherSessionFile = path.join(tempSessionDir, `session_${otherSessionId}.jsonl`) + fs.writeFileSync( + otherSessionFile, + JSON.stringify({ + type: 'session', + id: otherSessionId, + timestamp: new Date().toISOString(), + cwd: '/mock/cwd', + }) + + '\n' + + JSON.stringify({ + type: 'message', + id: 'other-user-1', + message: { role: 'user', content: [{ type: 'text', text: 'Investigate Docker access' }] }, + }) + + '\n', + ) + + const namedSessionId = 'named-session-uuid' + const namedSessionFile = path.join(tempSessionDir, `session_${namedSessionId}.jsonl`) + fs.writeFileSync( + namedSessionFile, + JSON.stringify({ + type: 'session', + id: namedSessionId, + timestamp: new Date().toISOString(), + cwd: '/mock/cwd', + }) + + '\n' + + JSON.stringify({ type: 'session_info', id: 'named-info-1', name: 'Manual Session Name' }) + + '\n' + + JSON.stringify({ + type: 'message', + id: 'named-user-1', + message: { role: 'user', content: [{ type: 'text', text: 'This should not be the title' }] }, + }) + + '\n', + ) + + const noopSessionId = 'noop-session-uuid' + const noopSessionFile = path.join(tempSessionDir, `session_${noopSessionId}.jsonl`) + fs.writeFileSync( + noopSessionFile, + JSON.stringify({ + type: 'session', + id: noopSessionId, + timestamp: new Date().toISOString(), + cwd: '/mock/cwd', + }) + '\n', + ) + + const cancelledSessionId = 'test-session-uuid-cancelled' + const cancelledSessionFile = path.join(tempSessionDir, `session_${cancelledSessionId}.jsonl`) + fs.writeFileSync( + cancelledSessionFile, + JSON.stringify({ + type: 'session', + id: cancelledSessionId, + timestamp: new Date().toISOString(), + cwd: '/mock/cwd', + }) + '\n', + ) + + const replacedSendUserMessage = vi.fn() + const replacedSetModel = vi.fn() + const switchSession = vi.fn( + async (sessionPath: string, options?: { withSession?: (ctx: any) => Promise }) => { + await listeners['session_shutdown']?.({ reason: 'resume' }) + const sessionIdFromPath = + path + .basename(sessionPath) + .replace(/\.jsonl$/, '') + .split('_') + .pop() || otherSessionId + await options?.withSession?.({ + ...mockContext, + sessionManager: { + getSessionDir: () => tempSessionDir, + getSessionId: () => sessionIdFromPath, + }, + model: undefined, + setModel: replacedSetModel, + sendUserMessage: replacedSendUserMessage, + }) + return { cancelled: false } + }, + ) + + // Mock ExtensionContext + const mockContext = { + sessionManager: { + getSessionDir: () => tempSessionDir, + getSessionId: () => activeSessionId, + }, + modelRegistry: { + getAvailable: () => [ + { + id: 'gemini-2.5-pro', + name: 'Gemini 2.5 Pro', + provider: 'google', + contextWindow: 200000, + maxOutputTokens: 64000, + reasoning: true, + input: ['text', 'image'], + }, + { + id: 'legacy-max-tokens-model', + name: 'Legacy Max Tokens Model', + provider: 'anthropic', + contextWindow: 300000, + maxTokens: 32000, + }, + ], + getAll: () => [], + find: (provider: string, id: string) => ({ id, provider, name: id }), + }, + model: { + id: 'gemini-2.5-pro', + name: 'Gemini 2.5 Pro', + provider: 'google', + contextWindow: 200000, + maxOutputTokens: 64000, + }, + setModel: vi.fn(), + cwd: projectDir, + isIdle: () => true, + getContextUsage: vi.fn(() => ({ tokens: 42000, contextWindow: 200000, percent: 21 })), + getSystemPrompt: vi.fn( + () => ` + global-skillGlobal skill description${globalSkillFile} + project-skillProject skill description${projectSkillFile} + package-skillPackage skill description${packageSkillFile} +`, + ), + abort: vi.fn(), + switchSession, + ui: { + setWidget: vi.fn(), + }, + } + + // Trigger session_start + await listeners['session_start']({}, mockContext) + + // Wait for the async server.listen callback to run and write connection info + await new Promise(resolve => setTimeout(resolve, 200)) + + // Verify widget is set + expect(mockContext.ui.setWidget).toHaveBeenCalledWith( + 'piagentui-link', + expect.arrayContaining([expect.stringContaining('PiAgentUI Web:')]), + expect.objectContaining({ placement: 'belowEditor' }), + ) + + // Verify piagentui-port.json exists in temp home dir + const discoveryPath = path.join(tempHomeDir, '.pi', 'agent', 'piagentui-port.json') + expect(fs.existsSync(discoveryPath)).toBe(true) + + // Read discovery data + const discoveryData = JSON.parse(fs.readFileSync(discoveryPath, 'utf8')) + const { port, token } = discoveryData + expect(port).toBeGreaterThan(0) + expect(token).toBeDefined() + + const baseUrl = `http://127.0.0.1:${port}` + + // 1. Test /global/health + const healthRes = await fetch(`${baseUrl}/global/health`) + expect(healthRes.status).toBe(200) + const healthData = await healthRes.json() + expect(healthData).toEqual({ status: 'ok', pi: 'ready' }) + + // 2. Test unauthorized endpoint + const unauthRes = await fetch(`${baseUrl}/api/models`) + expect(unauthRes.status).toBe(401) + + // 3. Test /api/models with correct token + const modelsRes = await fetch(`${baseUrl}/api/models`, { + headers: { Authorization: `Bearer ${token}` }, + }) + expect(modelsRes.status).toBe(200) + const modelsData = (await modelsRes.json()) as any + expect(modelsData.models).toBeDefined() + expect(modelsData.models[0].id).toBe('gemini-2.5-pro') + expect(modelsData.models[0].contextLimit).toBe(200000) + expect(modelsData.models[0].outputLimit).toBe(64000) + + const legacyModel = modelsData.models.find((model: any) => model.id === 'legacy-max-tokens-model') + expect(legacyModel.contextLimit).toBe(300000) + expect(legacyModel.outputLimit).toBe(32000) + + // 4. Test /api/network/access + const networkRes = await fetch(`${baseUrl}/api/network/access`, { + headers: { Authorization: `Bearer ${token}` }, + }) + expect(networkRes.status).toBe(200) + const networkData = (await networkRes.json()) as any + expect(networkData).toMatchObject({ + lanAccessEnabled: false, + port, + localUrl: `http://127.0.0.1:${port}`, + }) + expect(Array.isArray(networkData.lanUrls)).toBe(true) + + const networkEnableRes = await fetch(`${baseUrl}/api/network/access`, { + method: 'POST', + headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' }, + body: JSON.stringify({ lanAccessEnabled: true }), + }) + expect(networkEnableRes.status).toBe(200) + const networkEnableData = (await networkEnableRes.json()) as any + expect(networkEnableData.lanAccessEnabled).toBe(true) + if (networkEnableData.primaryLanUrl) { + expect(networkEnableData.browserLanUrl).toBe(networkEnableData.primaryLanUrl) + expect(networkEnableData.browserLanUrl).not.toContain('token=') + } + + const lanModelsRes = await new Promise<{ status: number; body: string }>((resolve, reject) => { + const req = nodeHttp.request( + { + host: '127.0.0.1', + port, + path: '/api/models', + method: 'GET', + headers: { Host: `192.168.1.25:${port}` }, + }, + response => { + let body = '' + response.setEncoding('utf8') + response.on('data', chunk => { + body += chunk + }) + response.on('end', () => resolve({ status: response.statusCode || 0, body })) + }, + ) + req.on('error', reject) + req.end() + }) + expect(lanModelsRes.status).toBe(200) + + const lanPageRes = await new Promise<{ status: number; body: string }>((resolve, reject) => { + const req = nodeHttp.request( + { + host: '127.0.0.1', + port, + path: '/', + method: 'GET', + headers: { Host: `192.168.1.25:${port}` }, + }, + response => { + let body = '' + response.setEncoding('utf8') + response.on('data', chunk => { + body += chunk + }) + response.on('end', () => resolve({ status: response.statusCode || 0, body })) + }, + ) + req.on('error', reject) + req.end() + }) + expect(lanPageRes.status).toBe(200) + expect(lanPageRes.body).toContain('token: null') + + // 5. Test STT settings and file transcription without leaking API key + const sttSettingsRes = await fetch(`${baseUrl}/api/settings/stt`, { + headers: { Authorization: `Bearer ${token}` }, + }) + expect(sttSettingsRes.status).toBe(200) + const initialSttSettings = (await sttSettingsRes.json()) as any + expect(initialSttSettings.apiKeyConfigured).toBe(false) + expect(initialSttSettings.apiKey).toBeUndefined() + + const saveSttRes = await fetch(`${baseUrl}/api/settings/stt`, { + method: 'POST', + headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' }, + body: JSON.stringify({ + enabled: true, + providerKind: 'openai-compatible', + mode: 'file', + baseUrl: 'https://api.openai.test/v1', + apiKey: 'secret-stt-key', + transcriptionEndpoint: '/audio/transcriptions', + transcriptionModel: 'gpt-4o-mini-transcribe', + language: 'pt', + insertMode: 'append', + }), + }) + expect(saveSttRes.status).toBe(200) + const savedSttSettings = (await saveSttRes.json()) as any + expect(savedSttSettings.apiKeyConfigured).toBe(true) + expect(savedSttSettings.apiKey).toBeUndefined() + + const originalFetch = globalThis.fetch + const providerFetch = vi.fn(async (input: Parameters[0], init?: Parameters[1]) => { + const target = String(input) + if (target === 'https://api.openai.test/v1/audio/transcriptions') { + expect(init?.method).toBe('POST') + expect((init?.headers as Record).Authorization).toBe('Bearer secret-stt-key') + const body = init?.body as FormData + expect(body.get('model')).toBe('gpt-4o-mini-transcribe') + expect(body.get('language')).toBe('pt') + expect(body.get('file')).toBeInstanceOf(File) + return new Response(JSON.stringify({ text: 'texto transcrito' }), { + status: 200, + headers: { 'Content-Type': 'application/json' }, + }) + } + return originalFetch.call(globalThis, input, init) + }) + globalThis.fetch = providerFetch as typeof fetch + try { + const boundary = '----piagentui-test-boundary' + const multipartBody = [ + `--${boundary}`, + 'Content-Disposition: form-data; name="file"; filename="voice.webm"', + 'Content-Type: audio/webm', + '', + 'audio', + `--${boundary}--`, + '', + ].join('\r\n') + const transcriptionRes = await originalFetch.call(globalThis, `${baseUrl}/api/stt/transcriptions`, { + method: 'POST', + headers: { + Authorization: `Bearer ${token}`, + 'Content-Type': `multipart/form-data; boundary=${boundary}`, + 'Content-Length': String(Buffer.byteLength(multipartBody)), + }, + body: multipartBody, + }) + expect(transcriptionRes.status).toBe(200) + const transcriptionData = (await transcriptionRes.json()) as any + expect(transcriptionData).toMatchObject({ + text: 'texto transcrito', + provider: 'openai-compatible', + model: 'gpt-4o-mini-transcribe', + }) + expect(providerFetch).toHaveBeenCalledWith( + 'https://api.openai.test/v1/audio/transcriptions', + expect.objectContaining({ method: 'POST' }), + ) + } finally { + globalThis.fetch = originalFetch + } + + const keylessSttRes = await fetch(`${baseUrl}/api/settings/stt`, { + method: 'POST', + headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' }, + body: JSON.stringify({ + enabled: true, + providerKind: 'openai-compatible', + baseUrl: 'http://127.0.0.1:8022/v1', + apiKey: null, + apiKeyRequired: false, + transcriptionEndpoint: '/audio/transcriptions', + transcriptionModel: 'deepdml/faster-whisper-large-v3-turbo-ct2', + }), + }) + expect(keylessSttRes.status).toBe(200) + const keylessSttSettings = (await keylessSttRes.json()) as any + expect(keylessSttSettings.apiKeyConfigured).toBe(false) + expect(keylessSttSettings.apiKeyRequired).toBe(false) + + const keylessFetch = vi.fn(async (input: Parameters[0], init?: Parameters[1]) => { + const target = String(input) + if (target === 'http://127.0.0.1:8022/v1/audio/transcriptions') { + expect(init?.headers).toEqual({}) + return new Response(JSON.stringify({ text: 'sem chave' }), { + status: 200, + headers: { 'Content-Type': 'application/json' }, + }) + } + return originalFetch.call(globalThis, input, init) + }) + globalThis.fetch = keylessFetch as typeof fetch + try { + const boundary = '----piagentui-keyless-boundary' + const multipartBody = [ + `--${boundary}`, + 'Content-Disposition: form-data; name="file"; filename="voice.webm"', + 'Content-Type: audio/webm', + '', + 'audio', + `--${boundary}--`, + '', + ].join('\r\n') + const keylessTranscriptionRes = await originalFetch.call(globalThis, `${baseUrl}/api/stt/transcriptions`, { + method: 'POST', + headers: { + Authorization: `Bearer ${token}`, + 'Content-Type': `multipart/form-data; boundary=${boundary}`, + 'Content-Length': String(Buffer.byteLength(multipartBody)), + }, + body: multipartBody, + }) + expect(keylessTranscriptionRes.status).toBe(200) + expect(await keylessTranscriptionRes.json()).toMatchObject({ text: 'sem chave' }) + } finally { + globalThis.fetch = originalFetch + } + + const saveTtsRes = await fetch(`${baseUrl}/api/settings/tts`, { + method: 'POST', + headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' }, + body: JSON.stringify({ + enabled: true, + baseUrl: 'http://127.0.0.1:8022/v1', + apiKeyRequired: false, + speechEndpoint: '/audio/speech', + model: 'speaches-ai/Kokoro-82M-v1.0-ONNX', + voice: 'pf_dora', + responseFormat: 'wav', + }), + }) + expect(saveTtsRes.status).toBe(200) + const savedTtsSettings = (await saveTtsRes.json()) as any + expect(savedTtsSettings).toMatchObject({ + enabled: true, + apiKeyConfigured: false, + apiKeyRequired: false, + voice: 'pf_dora', + responseFormat: 'wav', + }) + + const invalidSttRes = await fetch(`${baseUrl}/api/settings/stt`, { + method: 'POST', + headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' }, + body: JSON.stringify({ baseUrl: 'file:///tmp/secrets' }), + }) + expect(invalidSttRes.status).toBe(400) + + // 6. Test /api/commands/list with built-in and dynamic Pi commands + const commandsRes = await fetch(`${baseUrl}/api/commands/list`, { + headers: { Authorization: `Bearer ${token}` }, + }) + expect(commandsRes.status).toBe(200) + const commandsData = (await commandsRes.json()) as any + expect(commandsData.commands).toEqual( + expect.arrayContaining([ + expect.objectContaining({ name: 'settings', apiSource: 'builtin', category: 'general' }), + expect.objectContaining({ name: 'model', apiSource: 'builtin', category: 'model' }), + expect.objectContaining({ name: 'compact', apiSource: 'builtin', category: 'context' }), + expect.objectContaining({ + name: 'review', + description: 'Run project review', + apiSource: 'extension', + category: 'extension', + }), + expect.objectContaining({ name: 'release', apiSource: 'prompt', category: 'prompt' }), + expect.objectContaining({ name: 'skill:test-driven-development', apiSource: 'skill', category: 'skill' }), + ]), + ) + expect(commandsData.groups).toMatchObject({ builtin: 21, extension: 1, prompt: 1, skill: 1 }) + + // 5. Test /api/skills with real Pi prompt metadata + const skillsRes = await fetch(`${baseUrl}/api/skills`, { + headers: { Authorization: `Bearer ${token}` }, + }) + expect(skillsRes.status).toBe(200) + const skillsData = (await skillsRes.json()) as any + expect(skillsData.skills.map((skill: any) => [skill.name, skill.source])).toEqual([ + ['global-skill', 'global'], + ['project-skill', 'project'], + ['package-skill', 'package'], + ]) + expect(skillsData.skills[0].content).toContain('Global content') + expect(skillsData.groups).toMatchObject({ global: 1, project: 1, package: 1, other: 0 }) + + // 5. Test /api/mcp/status with real local config metadata + const mcpRes = await fetch(`${baseUrl}/api/mcp/status`, { + headers: { Authorization: `Bearer ${token}` }, + }) + expect(mcpRes.status).toBe(200) + const mcpData = (await mcpRes.json()) as any + expect(mcpData.configPaths).toEqual([mcpConfigFile]) + expect(mcpData.servers.context7).toMatchObject({ + status: 'configured', + transport: 'http', + source: 'global', + url: 'https://mcp.context7.com/mcp', + directTools: true, + lifecycle: 'lazy', + }) + expect(mcpData.servers.localTool).toMatchObject({ + status: 'configured', + transport: 'stdio', + command: 'npx', + args: ['local-mcp'], + }) + + // 6. Test /api/extensions with configured Pi packages and active resource info + const extensionsRes = await fetch(`${baseUrl}/api/extensions`, { + headers: { Authorization: `Bearer ${token}` }, + }) + expect(extensionsRes.status).toBe(200) + const extensionsData = (await extensionsRes.json()) as any + expect(extensionsData.summary).toMatchObject({ total: 1, active: 1, inactive: 0, missing: 0, error: 0 }) + expect(extensionsData.packages).toEqual([ + expect.objectContaining({ + source: 'npm:pi-demo', + scope: 'user', + packageName: 'pi-demo', + version: '1.0.0', + description: 'Demo Pi extension package', + status: 'active', + resources: expect.objectContaining({ + extensions: [expect.objectContaining({ name: 'demo.ts', enabled: true })], + }), + }), + ]) + + fs.writeFileSync(path.join(projectDir, 'git-control.txt'), 'changed\n', 'utf8') + + const vcsStatusRes = await fetch(`${baseUrl}/api/vcs/status?directory=${encodeURIComponent(projectDir)}`, { + headers: { Authorization: `Bearer ${token}` }, + }) + expect(vcsStatusRes.status).toBe(200) + const vcsStatusData = (await vcsStatusRes.json()) as any + expect(vcsStatusData).toMatchObject({ branch: 'main', dirty: true, ahead: 0, behind: 0 }) + expect(vcsStatusData.files).toEqual( + expect.arrayContaining([expect.objectContaining({ path: 'git-control.txt', untracked: true })]), + ) + + const vcsBranchesRes = await fetch(`${baseUrl}/api/vcs/branches?directory=${encodeURIComponent(projectDir)}`, { + headers: { Authorization: `Bearer ${token}` }, + }) + expect(vcsBranchesRes.status).toBe(200) + const vcsBranchesData = (await vcsBranchesRes.json()) as any + expect(vcsBranchesData).toMatchObject({ current: 'main' }) + expect(vcsBranchesData.branches).toEqual([expect.objectContaining({ name: 'main', current: true, remote: false })]) + + const stageRes = await fetch(`${baseUrl}/api/vcs/stage?directory=${encodeURIComponent(projectDir)}`, { + method: 'POST', + headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' }, + body: JSON.stringify({ paths: ['git-control.txt'] }), + }) + expect(stageRes.status).toBe(200) + + const commitRes = await fetch(`${baseUrl}/api/vcs/commit?directory=${encodeURIComponent(projectDir)}`, { + method: 'POST', + headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' }, + body: JSON.stringify({ message: 'test: add git control fixture' }), + }) + expect(commitRes.status).toBe(200) + expect(await commitRes.json()).toMatchObject({ ok: true }) + + // 7. Test /api/sessions/:sessionId/context + const contextRes = await fetch(`${baseUrl}/api/sessions/${activeSessionId}/context`, { + headers: { Authorization: `Bearer ${token}` }, + }) + expect(contextRes.status).toBe(200) + const contextData = (await contextRes.json()) as any + expect(contextData).toMatchObject({ + available: true, + sessionId: activeSessionId, + tokens: 42000, + contextWindow: 200000, + percent: 21, + providerID: 'google', + modelID: 'gemini-2.5-pro', + modelName: 'Gemini 2.5 Pro', + outputLimit: 64000, + }) + + const inactiveContextRes = await fetch(`${baseUrl}/api/sessions/${otherSessionId}/context`, { + headers: { Authorization: `Bearer ${token}` }, + }) + expect(inactiveContextRes.status).toBe(200) + const inactiveContextData = (await inactiveContextRes.json()) as any + expect(inactiveContextData).toMatchObject({ + available: false, + sessionId: otherSessionId, + activeSessionId, + reason: 'session_not_active', + }) + + // 5. Test /api/sessions (GET) + const getSessionsRes = await fetch(`${baseUrl}/api/sessions`, { + headers: { Authorization: `Bearer ${token}` }, + }) + expect(getSessionsRes.status).toBe(200) + const getSessionsData = (await getSessionsRes.json()) as any + expect(getSessionsData.sessions).toBeDefined() + expect(getSessionsData.sessions.map((session: any) => session.id)).toEqual( + expect.arrayContaining([activeSessionId, otherSessionId, namedSessionId, noopSessionId]), + ) + const sessionsById = new Map(getSessionsData.sessions.map((session: any) => [session.id, session])) + expect(sessionsById.get(otherSessionId)?.title).toBe('Investigate Docker access') + expect(sessionsById.get(namedSessionId)?.title).toBe('Manual Session Name') + expect(sessionsById.get(noopSessionId)?.title).toBe('Session noop-ses') + + // 6. Test /api/sessions (POST) creates a real Pi session and switches to it + const createSessionRes = await fetch(`${baseUrl}/api/sessions`, { + method: 'POST', + headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' }, + body: JSON.stringify({ directory: projectDir, title: 'Fresh Real Session' }), + }) + expect(createSessionRes.status).toBe(200) + const createSessionData = (await createSessionRes.json()) as any + expect(createSessionData.id).not.toBe(activeSessionId) + expect(createSessionData.title).toBe('Fresh Real Session') + expect(createSessionData.directory).toBe(projectDir) + const createdSessionFiles = fs + .readdirSync(tempSessionDir) + .filter(file => file.endsWith(`_${createSessionData.id}.jsonl`)) + expect(createdSessionFiles).toHaveLength(1) + const createdSessionContent = fs.readFileSync(path.join(tempSessionDir, createdSessionFiles[0]), 'utf8') + expect(createdSessionContent).toContain('"type":"session"') + expect(createdSessionContent).toContain('"version":3') + expect(createdSessionContent).toContain(`"cwd":"${projectDir.replace(/\\/g, '\\\\')}"`) + expect(createdSessionContent).toContain('Fresh Real Session') + expect(switchSession).toHaveBeenCalledWith( + path.join(tempSessionDir, createdSessionFiles[0]), + expect.objectContaining({ withSession: expect.any(Function) }), + ) + switchSession.mockClear() + + // 7. Test /api/sessions/abort (POST) + const abortRes = await fetch(`${baseUrl}/api/sessions/abort`, { + method: 'POST', + headers: { Authorization: `Bearer ${token}` }, + }) + expect(abortRes.status).toBe(200) + const abortData = (await abortRes.json()) as any + expect(abortData).toEqual({ status: 'aborted' }) + expect(mockContext.abort).toHaveBeenCalled() + + // 8. Test /api/messages/send (POST) + const sendRes = await fetch(`${baseUrl}/api/messages/send`, { + method: 'POST', + headers: { + Authorization: `Bearer ${token}`, + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + text: 'hello world', + model: { providerID: 'google', modelID: 'gemini-2.5-pro' }, + }), + }) + expect(sendRes.status).toBe(202) + expect(mockPi.sendUserMessage).toHaveBeenCalledWith('hello world') + expect(switchSession).not.toHaveBeenCalled() + + const sendOtherRes = await fetch(`${baseUrl}/api/messages/send`, { + method: 'POST', + headers: { + Authorization: `Bearer ${token}`, + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + sessionId: otherSessionId, + text: 'hello other session', + model: { providerID: 'google', modelID: 'gemini-2.5-pro' }, + }), + }) + expect(sendOtherRes.status).toBe(202) + expect(switchSession).toHaveBeenCalledWith( + otherSessionFile, + expect.objectContaining({ + withSession: expect.any(Function), + }), + ) + expect(replacedSetModel).toHaveBeenCalledWith({ id: 'gemini-2.5-pro', provider: 'google', name: 'gemini-2.5-pro' }) + expect(replacedSendUserMessage).toHaveBeenCalledWith('hello other session') + expect(fs.existsSync(discoveryPath)).toBe(true) + + const missingSessionRes = await fetch(`${baseUrl}/api/messages/send`, { + method: 'POST', + headers: { + Authorization: `Bearer ${token}`, + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + sessionId: 'missing-session-id', + text: 'must not be sent', + model: { providerID: 'google', modelID: 'gemini-2.5-pro' }, + }), + }) + expect(missingSessionRes.status).toBe(404) + expect(replacedSendUserMessage).not.toHaveBeenCalledWith('must not be sent') + + switchSession.mockImplementationOnce(async sessionPath => { + expect(sessionPath).toBe(noopSessionFile) + return { cancelled: false } + }) + const noopSwitchRes = await fetch(`${baseUrl}/api/messages/send`, { + method: 'POST', + headers: { + Authorization: `Bearer ${token}`, + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + sessionId: noopSessionId, + text: 'must not falsely succeed', + model: { providerID: 'google', modelID: 'gemini-2.5-pro' }, + }), + }) + expect(noopSwitchRes.status).toBe(501) + expect(replacedSendUserMessage).not.toHaveBeenCalledWith('must not falsely succeed') + + switchSession.mockImplementationOnce(async sessionPath => { + expect(sessionPath).toBe(cancelledSessionFile) + return { cancelled: true } + }) + const cancelledSwitchRes = await fetch(`${baseUrl}/api/messages/send`, { + method: 'POST', + headers: { + Authorization: `Bearer ${token}`, + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + sessionId: cancelledSessionId, + text: 'must not be sent after cancellation', + model: { providerID: 'google', modelID: 'gemini-2.5-pro' }, + }), + }) + expect(cancelledSwitchRes.status).toBe(409) + expect(replacedSendUserMessage).not.toHaveBeenCalledWith('must not be sent after cancellation') + + // 9. Test /api/sessions/:sessionId/messages (GET) with tool formatting + // Let's write some message content to the JSONL file first + fs.appendFileSync( + sessionFile, + JSON.stringify({ + type: 'message', + id: 'msg-user-1', + message: { role: 'user', content: [{ type: 'text', text: 'run command' }], timestamp: Date.now() }, + }) + '\n', + ) + + fs.appendFileSync( + sessionFile, + JSON.stringify({ + type: 'message', + id: 'msg-assistant-1', + message: { + role: 'assistant', + content: [ + { type: 'text', text: 'sure' }, + { type: 'toolCall', id: 'tool-call-123', name: 'run_command', arguments: { command: 'echo hello' } }, + { type: 'toolCall', id: 'tool-call-456', name: 'run_command', arguments: { command: 'echo chained' } }, + { type: 'toolCall', id: 'tool-call-789', name: 'run_command', arguments: { command: 'echo error' } }, + ], + timestamp: Date.now(), + }, + }) + '\n', + ) + + fs.appendFileSync( + sessionFile, + JSON.stringify({ + type: 'message', + id: 'tool-result-123', + parentId: 'msg-assistant-1', + message: { + role: 'toolResult', + toolCallId: 'tool-call-123', + toolName: 'run_command', + content: 'hello', + isError: false, + }, + }) + '\n', + ) + + fs.appendFileSync( + sessionFile, + JSON.stringify({ + type: 'message', + id: 'tool-result-456', + parentId: 'tool-result-123', + message: { + role: 'toolResult', + toolCallId: 'tool-call-456', + toolName: 'run_command', + content: [{ type: 'text', text: 'chained output' }], + isError: false, + }, + }) + '\n', + ) + + fs.appendFileSync( + sessionFile, + JSON.stringify({ + type: 'message', + id: 'tool-result-789', + parentId: 'tool-result-456', + message: { + role: 'toolResult', + toolCallId: 'tool-call-789', + toolName: 'run_command', + content: [{ type: 'text', text: 'chained failure' }], + isError: true, + }, + }) + '\n', + ) + + const messagesRes = await fetch(`${baseUrl}/api/sessions/${activeSessionId}/messages`, { + headers: { Authorization: `Bearer ${token}` }, + }) + expect(messagesRes.status).toBe(200) + const messagesData = (await messagesRes.json()) as any + expect(messagesData.messages).toBeDefined() + expect(messagesData.messages.length).toBe(2) + expect(messagesData.messages.every((message: any) => message.info.role !== 'toolResult')).toBe(true) + + // Verify tool part mapping has both id and callID and chained toolResult entries attach by toolCallId. + const assistantMsg = messagesData.messages[1] + const toolsById = new Map(assistantMsg.parts.filter((p: any) => p.type === 'tool').map((p: any) => [p.id, p])) + const toolPart = toolsById.get('tool-call-123') as any + expect(toolPart).toBeDefined() + expect(toolPart.id).toBe('tool-call-123') + expect(toolPart.callID).toBe('tool-call-123') + expect(toolPart.state.status).toBe('completed') + expect(toolPart.state.output).toBe('hello') + + const chainedToolPart = toolsById.get('tool-call-456') as any + expect(chainedToolPart.state.status).toBe('completed') + expect(chainedToolPart.state.output).toBe('chained output') + + const failedChainedToolPart = toolsById.get('tool-call-789') as any + expect(failedChainedToolPart.state.status).toBe('error') + expect(failedChainedToolPart.state.output).toBe('chained failure') + expect(failedChainedToolPart.state.error).toBe('chained failure') + + // 10. Test SSE Event Stream (/global/event) + const eventsRes = await fetch(`${baseUrl}/global/event`, { + headers: { Authorization: `Bearer ${token}` }, + }) + expect(eventsRes.status).toBe(200) + const reader = eventsRes.body?.getReader() + expect(reader).toBeDefined() + + // Read initial server.connected event + const chunk1 = await reader?.read() + const text1 = new TextDecoder().decode(chunk1?.value) + expect(text1).toContain('server.connected') + + // Trigger new session creation + const nextSessionId = 'test-session-uuid-56789' + const nextSessionFile = path.join(tempSessionDir, `session_${nextSessionId}.jsonl`) + fs.writeFileSync( + nextSessionFile, + JSON.stringify({ + type: 'session', + id: nextSessionId, + timestamp: new Date().toISOString(), + cwd: '/mock/cwd', + }) + '\n', + ) + + const nextMockContext = { + ...mockContext, + sessionManager: { + getSessionDir: () => tempSessionDir, + getSessionId: () => nextSessionId, + }, + } + + // Trigger session_start for the new session - should broadcast session.created! + await listeners['session_start']({}, nextMockContext as any) + const chunk2 = await reader?.read() + const text2 = new TextDecoder().decode(chunk2?.value) + expect(text2).toContain('session.created') + expect(text2).toContain(nextSessionId) + + // Trigger agent_start - should broadcast session.status and session.updated! + await listeners['agent_start']() + const chunk3 = await reader?.read() + const text3 = new TextDecoder().decode(chunk3?.value) + expect(text3).toContain('session.status') + expect(text3).toContain('working') + expect(text3).toContain('session.updated') + + // Close reader stream + await reader?.cancel() + + // Trigger session_shutdown + await listeners['session_shutdown']({}) + + // Verify discovery file is deleted + expect(fs.existsSync(discoveryPath)).toBe(false) + }) +}) diff --git a/extensions/piagentui-server.ts b/extensions/piagentui-server.ts new file mode 100644 index 0000000..37913c3 --- /dev/null +++ b/extensions/piagentui-server.ts @@ -0,0 +1,2345 @@ +import type { ExtensionAPI, ExtensionContext } from '@mariozechner/pi-coding-agent' +import { WebSocketServer, WebSocket } from 'ws' +import * as http from 'node:http' +import * as fs from 'node:fs' +import * as path from 'node:path' +import { randomUUID } from 'node:crypto' +import { + validateBearerToken, + preventPathTraversal, + validateHostAndOriginForAccess, + isLoopbackHost, + isRequestBodySizeAllowed, + getLocalNetworkUrls, + validateSttBaseUrl, +} from './piagentui-server-core.js' +import { + createPiAgentUiSettingsStore, + resolvePiAgentUiSettingsPaths, + type PiAgentUiLocalSettings, + type StoredSttSettings, + type StoredTtsSettings, +} from './piagentui-settings-store.js' +import { + buildExtensionCatalog, + executeExtensionInstallCommand, + executeExtensionPackageRemoval, + type ExtensionPackageScope, +} from './piagentui-extension-manager.js' +import { + checkoutGitBranch, + commitGitChanges, + createGitBranch, + getGitStatus, + listGitBranches, + pullGitBranch, + pushGitBranch, + stageGitPaths, + unstageGitPaths, +} from './piagentui-git-manager.js' + +const MIME_TYPES: Record = { + '.html': 'text/html', + '.css': 'text/css', + '.js': 'application/javascript', + '.json': 'application/json', + '.png': 'image/png', + '.jpg': 'image/jpeg', + '.svg': 'image/svg+xml', + '.ico': 'image/x-icon', + '.woff': 'font/woff', + '.woff2': 'font/woff2', +} + +type SwitchableExtensionContext = ExtensionContext & { + switchSession?: ( + sessionPath: string, + options?: { withSession?: (ctx: any) => Promise }, + ) => Promise<{ cancelled: boolean }> + setModel?: (model: any) => Promise | void + sendUserMessage?: (content: string) => Promise | void +} + +const messageIds = new Map() + +function getMessageId(message: any): string { + if (!message) return '' + if (message.id) return message.id + // Use a stable key (responseId or timestamp) instead of object reference. + // The agent loop passes spread copies of the same logical message across + // message_start, message_update, and message_end events, so WeakMap + // (keyed by object identity) would generate different IDs each time — + // causing part/delta SSE events to reference a non-existent message ID. + const stableKey = message.responseId || message.timestamp || message.response_id + if (!stableKey) { + return 'msg-' + Math.random().toString(36).substring(2) + '-' + Date.now() + } + const key = String(stableKey) + let id = messageIds.get(key) + if (!id) { + id = 'msg-' + Math.random().toString(36).substring(2) + '-' + key + messageIds.set(key, id) + } + return id +} + +function isVisibleChatRole(role: unknown): role is 'user' | 'assistant' { + return role === 'user' || role === 'assistant' +} + +function getMessageText(message: any): string { + if (!message) return '' + if (typeof message.content === 'string') { + return message.content + } + if (Array.isArray(message.content)) { + return message.content + .filter((c: any) => c && c.type === 'text') + .map((c: any) => c.text) + .join('') + } + if (message.text) { + return message.text + } + return '' +} + +type SkillSource = 'global' | 'project' | 'package' | 'other' +type McpTransport = 'stdio' | 'http' | 'sse' | 'unknown' +type McpSource = 'global' | 'project' | 'other' +type CommandApiSource = 'builtin' | 'extension' | 'prompt' | 'skill' | 'unknown' + +interface ApiSkill { + name: string + description: string + location: string + content: string + source: SkillSource +} + +interface ApiMcpStatus { + status: 'configured' | 'disabled' | 'failed' + transport: McpTransport + source: McpSource + description?: string + command?: string + args?: string[] + url?: string + directTools?: boolean + lifecycle?: string + error?: string +} + +type SanitizedSttSettings = Omit, 'apiKey' | 'language'> & { + language?: string + apiKeyConfigured: boolean +} + +type SanitizedTtsSettings = Omit, 'apiKey'> & { + apiKeyConfigured: boolean +} + +interface ApiCommand { + name: string + description?: string + keybind?: string + apiSource: CommandApiSource + category: string + sourceInfo?: unknown + requiresArgs?: boolean + dangerous?: boolean +} + +const BUILTIN_SLASH_COMMANDS: ApiCommand[] = [ + { name: 'settings', description: 'Open settings menu', apiSource: 'builtin', category: 'general' }, + { name: 'model', description: 'Select model (opens selector UI)', apiSource: 'builtin', category: 'model' }, + { + name: 'scoped-models', + description: 'Enable/disable models for Ctrl+P cycling', + apiSource: 'builtin', + category: 'model', + }, + { + name: 'export', + description: 'Export session (HTML default, or specify path: .html/.jsonl)', + apiSource: 'builtin', + category: 'session', + }, + { + name: 'import', + description: 'Import and resume a session from a JSONL file', + apiSource: 'builtin', + category: 'session', + requiresArgs: true, + }, + { name: 'share', description: 'Share session as a secret GitHub gist', apiSource: 'builtin', category: 'session' }, + { name: 'copy', description: 'Copy last agent message to clipboard', apiSource: 'builtin', category: 'message' }, + { name: 'name', description: 'Set session display name', apiSource: 'builtin', category: 'session' }, + { name: 'session', description: 'Show session info and stats', apiSource: 'builtin', category: 'session' }, + { name: 'changelog', description: 'Show changelog entries', apiSource: 'builtin', category: 'help' }, + { name: 'hotkeys', description: 'Show all keyboard shortcuts', apiSource: 'builtin', category: 'help' }, + { + name: 'fork', + description: 'Create a new fork from a previous user message', + apiSource: 'builtin', + category: 'session', + }, + { + name: 'clone', + description: 'Duplicate the current session at the current position', + apiSource: 'builtin', + category: 'session', + }, + { name: 'tree', description: 'Navigate session tree (switch branches)', apiSource: 'builtin', category: 'session' }, + { name: 'login', description: 'Configure provider authentication', apiSource: 'builtin', category: 'auth' }, + { name: 'logout', description: 'Remove provider authentication', apiSource: 'builtin', category: 'auth' }, + { name: 'new', description: 'Start a new session', apiSource: 'builtin', category: 'session' }, + { name: 'compact', description: 'Manually compact the session context', apiSource: 'builtin', category: 'context' }, + { name: 'resume', description: 'Resume a different session', apiSource: 'builtin', category: 'session' }, + { + name: 'reload', + description: 'Reload keybindings, extensions, skills, prompts, and themes', + apiSource: 'builtin', + category: 'developer', + }, + { name: 'quit', description: 'Quit Pi', apiSource: 'builtin', category: 'app', dangerous: true }, +] + +function normalizeCommandApiSource(source: unknown): CommandApiSource { + return source === 'extension' || source === 'prompt' || source === 'skill' || source === 'builtin' + ? source + : 'unknown' +} + +function categoryForCommandSource(source: CommandApiSource): string { + if (source === 'extension' || source === 'prompt' || source === 'skill') return source + return 'other' +} + +function getAvailableCommands(pi: ExtensionAPI): ApiCommand[] { + const dynamicCommands = typeof pi.getCommands === 'function' ? pi.getCommands() : [] + const commands = new Map() + + for (const command of BUILTIN_SLASH_COMMANDS) { + commands.set(command.name, command) + } + + for (const command of dynamicCommands) { + if (!command?.name || commands.has(command.name)) continue + const apiSource = normalizeCommandApiSource(command.source) + commands.set(command.name, { + name: command.name, + description: command.description, + apiSource, + category: categoryForCommandSource(apiSource), + sourceInfo: command.sourceInfo, + }) + } + + return [...commands.values()].sort((a, b) => a.name.localeCompare(b.name)) +} + +function countCommandsBySource(commands: ApiCommand[]): Record { + return commands.reduce>( + (acc, command) => { + acc[command.apiSource] += 1 + return acc + }, + { builtin: 0, extension: 0, prompt: 0, skill: 0, unknown: 0 }, + ) +} + +function decodeXml(text: string): string { + return text + .replace(/'/g, "'") + .replace(/"/g, '"') + .replace(/>/g, '>') + .replace(/</g, '<') + .replace(/&/g, '&') +} + +function normalizeComparablePath(value: string | undefined): string { + return path + .resolve(value || '') + .replace(/\\/g, '/') + .toLowerCase() +} + +function classifySkillSource(location: string, cwd: string | undefined): SkillSource { + const normalizedLocation = normalizeComparablePath(location) + const normalizedCwd = normalizeComparablePath(cwd) + const projectSkillsRoot = `${normalizedCwd}/.pi/skills/` + + if (normalizedLocation.includes('/node_modules/') || normalizedLocation.includes('/.pi/agent/npm/')) return 'package' + if (normalizedCwd && normalizedLocation.startsWith(projectSkillsRoot)) return 'project' + if (normalizedLocation.includes('/.agents/skills/') || normalizedLocation.includes('/.pi/agent/skills/')) + return 'global' + return 'other' +} + +function parseSkillsFromSystemPrompt(prompt: string, cwd: string | undefined): ApiSkill[] { + const skills: ApiSkill[] = [] + const skillRegex = + /\s*([\s\S]*?)<\/name>\s*([\s\S]*?)<\/description>\s*([\s\S]*?)<\/location>\s*<\/skill>/g + + for (const match of prompt.matchAll(skillRegex)) { + const location = decodeXml(match[3]?.trim() ?? '') + let content = '' + if (location && fs.existsSync(location)) { + try { + content = fs.readFileSync(location, 'utf-8') + } catch { + content = '' + } + } + + skills.push({ + name: decodeXml(match[1]?.trim() ?? ''), + description: decodeXml(match[2]?.trim() ?? ''), + location, + content, + source: classifySkillSource(location, cwd), + }) + } + + return skills +} + +function countSkillsBySource(skills: ApiSkill[]): Record { + return skills.reduce>( + (acc, skill) => { + acc[skill.source] += 1 + return acc + }, + { global: 0, project: 0, package: 0, other: 0 }, + ) +} + +function getHomeDir(): string { + return process.env.USERPROFILE || process.env.HOME || '' +} + +function readJsonFile(filePath: string): any | null { + try { + if (!fs.existsSync(filePath)) return null + return JSON.parse(fs.readFileSync(filePath, 'utf8')) + } catch { + return null + } +} + +function getMcpConfigCandidates(cwd: string | undefined) { + const homeDir = getHomeDir() + return [ + { source: 'project' as const, filePath: cwd ? path.join(cwd, '.pi', 'agent', 'mcp.json') : '' }, + { source: 'project' as const, filePath: cwd ? path.join(cwd, '.pi', 'mcp.json') : '' }, + { source: 'global' as const, filePath: homeDir ? path.join(homeDir, '.pi', 'agent', 'mcp.json') : '' }, + ].filter(candidate => Boolean(candidate.filePath)) +} + +function normalizeMcpTransport(config: any): McpTransport { + if (config?.command) return 'stdio' + if (config?.type === 'http' || config?.url) return 'http' + if (config?.type === 'sse') return 'sse' + return 'unknown' +} + +function normalizeMcpServer(config: any, source: McpSource): ApiMcpStatus { + const disabled = config?.enabled === false || config?.disabled === true + const args = Array.isArray(config?.args) + ? config.args.map(String) + : typeof config?.args === 'string' + ? [config.args] + : undefined + return { + status: disabled ? 'disabled' : 'configured', + transport: normalizeMcpTransport(config), + source, + description: typeof config?.description === 'string' ? config.description : undefined, + command: typeof config?.command === 'string' ? config.command : undefined, + args, + url: typeof config?.url === 'string' ? config.url : undefined, + directTools: typeof config?.directTools === 'boolean' ? config.directTools : undefined, + lifecycle: typeof config?.lifecycle === 'string' ? config.lifecycle : undefined, + } +} + +function loadMcpStatus(cwd: string | undefined): { servers: Record; configPaths: string[] } { + const servers: Record = {} + const configPaths: string[] = [] + + for (const candidate of getMcpConfigCandidates(cwd)) { + const config = readJsonFile(candidate.filePath) + if (!config?.mcpServers || typeof config.mcpServers !== 'object') continue + configPaths.push(candidate.filePath) + for (const [name, serverConfig] of Object.entries(config.mcpServers)) { + servers[name] = normalizeMcpServer(serverConfig, candidate.source) + } + } + + return { servers, configPaths } +} + +export default function (pi: ExtensionAPI) { + let server: http.Server | null = null + let wss: WebSocketServer | null = null + let localPort = 0 + let localToken = '' + let latestCtx: SwitchableExtensionContext | null = null + const clients = new Set() + const sseClients = new Set() + const createdParts = new Set() + let lastAssistantMessageId = '' + let preserveServerForSessionSwitch = false + let sendQueue: Promise = Promise.resolve() + + function enqueueSessionSend(fn: () => Promise): Promise { + const run = sendQueue.catch(() => undefined).then(fn) + sendQueue = run.then( + () => undefined, + () => undefined, + ) + return run + } + + function getCurrentSessionId(): string { + return latestCtx?.sessionManager?.getSessionId() || 'active-session' + } + + function getSessionFileForId(sessionId: string): string | null { + const sessionDir = latestCtx?.sessionManager?.getSessionDir() + if (!sessionDir || !fs.existsSync(sessionDir)) return null + + const files = fs.readdirSync(sessionDir).filter(f => f.endsWith('.jsonl')) + const matchedFile = files.find(f => f.endsWith(`_${sessionId}.jsonl`)) + return matchedFile ? path.join(sessionDir, matchedFile) : null + } + + function getFallbackSessionTitle(sessionId: string): string { + return `Session ${sessionId.slice(0, 8)}` + } + + function createSessionId(): string { + return randomUUID() + } + + function createSessionEntryId(): string { + return randomUUID().slice(0, 8) + } + + function createRealSessionFile(params: { directory?: string; title?: string; parentID?: string }): string { + const sessionDir = latestCtx?.sessionManager?.getSessionDir() + if (!sessionDir) { + throw new Error('Session directory is unavailable') + } + + fs.mkdirSync(sessionDir, { recursive: true }) + const sessionId = createSessionId() + const timestamp = new Date().toISOString() + const fileTimestamp = timestamp.replace(/[:.]/g, '-') + const sessionFile = path.join(sessionDir, `${fileTimestamp}_${sessionId}.jsonl`) + const header: Record = { + type: 'session', + version: 3, + id: sessionId, + timestamp, + cwd: params.directory || latestCtx?.cwd || process.cwd(), + } + if (params.parentID) { + header.parentSession = params.parentID + } + + const entries = [JSON.stringify(header)] + const title = normalizeSessionTitle(params.title || '') + if (title) { + entries.push( + JSON.stringify({ + type: 'session_info', + id: createSessionEntryId(), + parentId: null, + timestamp, + name: title, + }), + ) + } + + fs.writeFileSync(sessionFile, `${entries.join('\n')}\n`, { flag: 'wx' }) + return sessionFile + } + + async function createAndSwitchToRealSession(params: { directory?: string; title?: string; parentID?: string }) { + if (!latestCtx?.switchSession) { + return { status: 501, body: { error: 'Pi session switching is not available in this runtime' } } + } + + const sessionFile = createRealSessionFile(params) + preserveServerForSessionSwitch = true + try { + const result = await latestCtx.switchSession(sessionFile, { + withSession: async replacedCtx => { + latestCtx = replacedCtx as SwitchableExtensionContext + }, + }) + + if (result.cancelled) { + return { status: 409, body: { error: 'Session switch cancelled' } } + } + + const metadata = readSessionMetadata(sessionFile) + return { + status: 200, + body: + metadata || + getSessionInfo( + path + .basename(sessionFile) + .replace(/\.jsonl$/, '') + .split('_') + .pop() || '', + ), + } + } finally { + preserveServerForSessionSwitch = false + } + } + + function normalizeSessionTitle(title: string): string { + return title + .split('') + .map(char => { + const code = char.charCodeAt(0) + return code < 32 || code === 127 ? ' ' : char + }) + .join('') + .replace(/\s+/g, ' ') + .trim() + .slice(0, 120) + } + + function readSessionMetadata(filePath: string): any | null { + try { + const content = fs.readFileSync(filePath, 'utf8') + const lines = content.trim().split('\n').filter(Boolean) + if (lines.length === 0) return null + + const header = JSON.parse(lines[0]) + if (header.type !== 'session' || !header.id) return null + + let sessionInfoTitle = '' + let firstUserMessage = '' + let messageCount = 0 + + for (const line of lines.slice(1)) { + try { + const entry = JSON.parse(line) + if (entry.type === 'session_info') { + sessionInfoTitle = normalizeSessionTitle(entry.name || '') + } else if (entry.type === 'message') { + messageCount++ + if (!firstUserMessage && entry.message?.role === 'user') { + firstUserMessage = normalizeSessionTitle(getMessageText(entry.message)) + } + } + } catch { + // ignore malformed entries + } + } + + const stats = fs.statSync(filePath) + const createdTime = header.timestamp ? new Date(header.timestamp).getTime() : stats.birthtimeMs + const title = sessionInfoTitle || firstUserMessage || getFallbackSessionTitle(header.id) + + return { + id: header.id, + title, + directory: header.cwd || latestCtx?.cwd || process.cwd(), + time: { + created: Number.isNaN(createdTime) ? stats.birthtimeMs : createdTime, + updated: stats.mtimeMs, + }, + summary: { deletions: 0, files: 0, additions: messageCount }, + } + } catch { + return null + } + } + + async function setRequestedModel(ctx: SwitchableExtensionContext, model: any) { + if (!model?.providerID || !model?.modelID) return + + try { + const targetModel = ctx.modelRegistry?.find(model.providerID, model.modelID) + if (!targetModel) return + + const currentModel = ctx.model + if (!currentModel || currentModel.id !== targetModel.id || currentModel.provider !== targetModel.provider) { + console.log(`[PiAgentUi] Switching session model to ${targetModel.provider}:${targetModel.id}`) + if (ctx.setModel) { + await ctx.setModel(targetModel) + } else { + await pi.setModel(targetModel) + } + } + } catch (err) { + console.error('[PiAgentUi] Failed to set model:', err) + } + } + + async function sendUserMessageToRequestedSession(parsed: any): Promise<{ status: number; body: any }> { + const requestedSessionId = parsed.sessionId + const activeSessionId = getCurrentSessionId() + + if (!parsed.text) { + return { status: 400, body: { error: 'Missing message text' } } + } + + if (!requestedSessionId || requestedSessionId === activeSessionId) { + if (latestCtx) { + await setRequestedModel(latestCtx, parsed.model) + } + const p = pi.sendUserMessage(parsed.text) as any + if (p && typeof p.catch === 'function') { + p.catch((err: any) => { + console.error('[PiAgentUi] Failed to send user message:', err) + }) + } + return { status: 202, body: { sessionID: activeSessionId } } + } + + const sessionFile = getSessionFileForId(requestedSessionId) + if (!sessionFile) { + return { status: 404, body: { error: `Session not found: ${requestedSessionId}` } } + } + + if (!latestCtx?.switchSession) { + return { status: 501, body: { error: 'Pi session switching is not available in this runtime' } } + } + + preserveServerForSessionSwitch = true + let didSend = false + try { + const result = await latestCtx.switchSession(sessionFile, { + withSession: async replacedCtx => { + latestCtx = replacedCtx as SwitchableExtensionContext + await setRequestedModel(latestCtx, parsed.model) + if (typeof replacedCtx.sendUserMessage === 'function') { + await replacedCtx.sendUserMessage(parsed.text) + didSend = true + } + }, + }) + + if (result.cancelled) { + return { status: 409, body: { error: 'Session switch cancelled' } } + } + + if (!didSend) { + return { status: 501, body: { error: 'Pi session switching is not available in this runtime' } } + } + + return { status: 202, body: { sessionID: requestedSessionId } } + } finally { + preserveServerForSessionSwitch = false + } + } + + function getSessionInfo(sessionId: string): any { + const sessionFile = getSessionFileForId(sessionId) + const metadata = sessionFile ? readSessionMetadata(sessionFile) : null + + return { + id: sessionId, + title: metadata?.title || getFallbackSessionTitle(sessionId), + directory: metadata?.directory || latestCtx?.cwd || process.cwd(), + time: metadata?.time || { + created: Date.now(), + updated: Date.now(), + }, + status: { type: latestCtx && !latestCtx.isIdle() ? 'busy' : 'idle' }, + summary: metadata?.summary || { deletions: 0, files: 0, additions: 0 }, + } + } + + function broadcastSessionUpdated(sessionId: string) { + try { + const sessionInfo = getSessionInfo(sessionId) + broadcastSSE('session.updated', { info: sessionInfo }) + } catch (err) { + console.error('[PiAgentUi] Failed to broadcast session.updated:', err) + } + } + + function broadcastSSE(type: string, properties: any) { + const rawEvent = JSON.stringify({ + id: Math.random().toString(36).substring(2), + time: Date.now(), + directory: latestCtx?.cwd || 'global', + payload: { + type, + properties, + }, + }) + const payload = `data: ${rawEvent}\n\n` + for (const res of sseClients) { + try { + res.write(payload) + } catch { + // ignore + } + } + } + + function generateBearerToken(): string { + return Array.from({ length: 4 }, () => Math.random().toString(36).substring(2)).join('-') + } + + const settingsStore = createPiAgentUiSettingsStore(resolvePiAgentUiSettingsPaths()) + + function getLocalSettings(): PiAgentUiLocalSettings { + return settingsStore.getSettings() + } + + function saveLocalSettings(settings: PiAgentUiLocalSettings) { + settingsStore.saveSettings(settings) + } + + function buildBrowserUrl(baseUrl: string | null): string | null { + return baseUrl + } + + function getNetworkAccessInfo() { + const lanAccessEnabled = getLocalSettings().network?.lanAccessEnabled === true + const port = localPort || 0 + const localUrl = port ? `http://127.0.0.1:${port}` : '' + const lanUrls = port ? getLocalNetworkUrls(port) : [] + const primaryLanUrl = lanUrls[0] || null + return { + lanAccessEnabled, + port, + localUrl, + lanUrls, + primaryLanUrl, + browserLanUrl: buildBrowserUrl(primaryLanUrl), + } + } + + function getEffectiveSttSettings(): StoredSttSettings { + return { + enabled: false, + providerKind: 'openai-compatible', + mode: 'file', + baseUrl: 'https://api.openai.com/v1', + apiKeyRequired: false, + transcriptionEndpoint: '/audio/transcriptions', + transcriptionModel: 'gpt-4o-mini-transcribe', + insertMode: 'append', + ...getLocalSettings().stt, + } + } + + function sanitizeSttSettings(settings: StoredSttSettings = getEffectiveSttSettings()): SanitizedSttSettings { + const effective = { ...getEffectiveSttSettings(), ...settings } + const sanitized: SanitizedSttSettings = { + enabled: effective.enabled === true, + providerKind: effective.providerKind === 'openai' ? 'openai' : 'openai-compatible', + mode: effective.mode === 'realtime' ? 'realtime' : 'file', + baseUrl: effective.baseUrl || 'https://api.openai.com/v1', + transcriptionEndpoint: effective.transcriptionEndpoint || '/audio/transcriptions', + transcriptionModel: effective.transcriptionModel || 'gpt-4o-mini-transcribe', + insertMode: effective.insertMode === 'replace' ? 'replace' : 'append', + apiKeyRequired: effective.apiKeyRequired === true, + apiKeyConfigured: typeof effective.apiKey === 'string' && effective.apiKey.length > 0, + } + if (effective.language) sanitized.language = effective.language + return sanitized + } + + async function readJsonBody(req: http.IncomingMessage): Promise { + return await new Promise((resolve, reject) => { + let body = '' + req.on('data', chunk => { + body += chunk + }) + req.on('end', () => { + try { + resolve(body.trim() ? JSON.parse(body) : {}) + } catch (error) { + reject(error) + } + }) + req.on('error', reject) + }) + } + + function updateSttSettings(update: any): { ok: true; settings: SanitizedSttSettings } | { ok: false; error: string } { + const current = getLocalSettings() + const existing = current.stt || {} + const next: StoredSttSettings = { ...existing } + + if (update.enabled !== undefined) next.enabled = update.enabled === true + if (update.providerKind !== undefined) { + if (update.providerKind !== 'openai' && update.providerKind !== 'openai-compatible') { + return { ok: false, error: 'Invalid providerKind' } + } + next.providerKind = update.providerKind + } + if (update.mode !== undefined) { + if (update.mode !== 'file' && update.mode !== 'realtime') return { ok: false, error: 'Invalid mode' } + next.mode = update.mode + } + if (update.baseUrl !== undefined) { + if (typeof update.baseUrl !== 'string' || !validateSttBaseUrl(update.baseUrl)) { + return { ok: false, error: 'Invalid baseUrl' } + } + next.baseUrl = update.baseUrl.replace(/\/+$/, '') + } + if (update.apiKeyRequired !== undefined) next.apiKeyRequired = update.apiKeyRequired === true + if (update.transcriptionEndpoint !== undefined) { + if (typeof update.transcriptionEndpoint !== 'string' || !update.transcriptionEndpoint.startsWith('/')) { + return { ok: false, error: 'Invalid transcriptionEndpoint' } + } + next.transcriptionEndpoint = update.transcriptionEndpoint + } + if (update.transcriptionModel !== undefined) { + if (typeof update.transcriptionModel !== 'string' || !update.transcriptionModel.trim()) { + return { ok: false, error: 'Invalid transcriptionModel' } + } + next.transcriptionModel = update.transcriptionModel.trim() + } + if (update.language !== undefined) { + if (update.language === null || update.language === '') delete next.language + else if (typeof update.language === 'string') next.language = update.language.trim() + else return { ok: false, error: 'Invalid language' } + } + if (update.insertMode !== undefined) { + if (update.insertMode !== 'append' && update.insertMode !== 'replace') + return { ok: false, error: 'Invalid insertMode' } + next.insertMode = update.insertMode + } + if (Object.prototype.hasOwnProperty.call(update, 'apiKey')) { + if (update.apiKey === null) delete next.apiKey + else if (typeof update.apiKey === 'string' && update.apiKey.trim()) next.apiKey = update.apiKey.trim() + } + + saveLocalSettings({ ...current, stt: next }) + return { ok: true, settings: sanitizeSttSettings(next) } + } + + function getEffectiveTtsSettings(): StoredTtsSettings { + return { + enabled: false, + providerKind: 'openai-compatible', + baseUrl: 'https://api.openai.com/v1', + apiKeyRequired: false, + speechEndpoint: '/audio/speech', + model: 'tts-1', + voice: 'alloy', + responseFormat: 'mp3', + speed: 1, + ...getLocalSettings().tts, + } + } + + function sanitizeTtsSettings(settings: StoredTtsSettings = getEffectiveTtsSettings()): SanitizedTtsSettings { + const effective = { ...getEffectiveTtsSettings(), ...settings } + return { + enabled: effective.enabled === true, + providerKind: effective.providerKind === 'openai' ? 'openai' : 'openai-compatible', + baseUrl: effective.baseUrl || 'https://api.openai.com/v1', + apiKeyRequired: effective.apiKeyRequired === true, + speechEndpoint: effective.speechEndpoint || '/audio/speech', + model: effective.model || 'tts-1', + voice: effective.voice || 'alloy', + responseFormat: isTtsResponseFormat(effective.responseFormat) ? effective.responseFormat : 'mp3', + speed: typeof effective.speed === 'number' ? effective.speed : 1, + apiKeyConfigured: typeof effective.apiKey === 'string' && effective.apiKey.length > 0, + } + } + + function isTtsResponseFormat(value: unknown): value is NonNullable { + return ( + value === 'mp3' || value === 'opus' || value === 'aac' || value === 'flac' || value === 'wav' || value === 'pcm' + ) + } + + function updateTtsSettings(update: any): { ok: true; settings: SanitizedTtsSettings } | { ok: false; error: string } { + const current = getLocalSettings() + const existing = current.tts || {} + const next: StoredTtsSettings = { ...existing } + + if (update.enabled !== undefined) next.enabled = update.enabled === true + if (update.providerKind !== undefined) { + if (update.providerKind !== 'openai' && update.providerKind !== 'openai-compatible') { + return { ok: false, error: 'Invalid providerKind' } + } + next.providerKind = update.providerKind + } + if (update.baseUrl !== undefined) { + if (typeof update.baseUrl !== 'string' || !validateSttBaseUrl(update.baseUrl)) { + return { ok: false, error: 'Invalid baseUrl' } + } + next.baseUrl = update.baseUrl.replace(/\/+$/, '') + } + if (update.apiKeyRequired !== undefined) next.apiKeyRequired = update.apiKeyRequired === true + if (update.speechEndpoint !== undefined) { + if (typeof update.speechEndpoint !== 'string' || !update.speechEndpoint.startsWith('/')) { + return { ok: false, error: 'Invalid speechEndpoint' } + } + next.speechEndpoint = update.speechEndpoint + } + if (update.model !== undefined) { + if (typeof update.model !== 'string' || !update.model.trim()) return { ok: false, error: 'Invalid model' } + next.model = update.model.trim() + } + if (update.voice !== undefined) { + if (typeof update.voice !== 'string' || !update.voice.trim()) return { ok: false, error: 'Invalid voice' } + next.voice = update.voice.trim() + } + if (update.responseFormat !== undefined) { + if (!isTtsResponseFormat(update.responseFormat)) return { ok: false, error: 'Invalid responseFormat' } + next.responseFormat = update.responseFormat + } + if (update.speed !== undefined) { + if (typeof update.speed !== 'number' || update.speed < 0.25 || update.speed > 4) { + return { ok: false, error: 'Invalid speed' } + } + next.speed = update.speed + } + if (Object.prototype.hasOwnProperty.call(update, 'apiKey')) { + if (update.apiKey === null) delete next.apiKey + else if (typeof update.apiKey === 'string' && update.apiKey.trim()) next.apiKey = update.apiKey.trim() + } + + saveLocalSettings({ ...current, tts: next }) + return { ok: true, settings: sanitizeTtsSettings(next) } + } + + async function readRequestBuffer(req: http.IncomingMessage): Promise { + return await new Promise((resolve, reject) => { + const chunks: Buffer[] = [] + req.on('data', chunk => chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk))) + req.on('end', () => resolve(Buffer.concat(chunks))) + req.on('error', reject) + }) + } + + function readMultipartFormData(contentType: string | undefined, body: Buffer): FormData { + const boundaryMatch = contentType?.match(/boundary=(?:"([^"]+)"|([^;]+))/) + const boundary = boundaryMatch?.[1] || boundaryMatch?.[2] + if (!boundary) throw new Error('Missing multipart boundary') + + const form = new FormData() + const rawBody = body.toString('latin1') + for (const rawPart of rawBody.split(`--${boundary}`)) { + const part = rawPart.replace(/^\r\n/, '') + if (!part || part === '--\r\n' || part === '--') continue + const headerEnd = part.indexOf('\r\n\r\n') + if (headerEnd === -1) continue + const rawHeaders = part.slice(0, headerEnd) + const rawContent = part + .slice(headerEnd + 4) + .replace(/\r\n--$/, '') + .replace(/\r\n$/, '') + const disposition = rawHeaders.match(/content-disposition:([^\r\n]+)/i)?.[1] || '' + const name = disposition.match(/name="([^"]+)"/)?.[1] + if (!name) continue + const filename = disposition.match(/filename="([^"]*)"/)?.[1] + const mime = rawHeaders.match(/content-type:\s*([^\r\n]+)/i)?.[1]?.trim() || 'application/octet-stream' + if (filename !== undefined) { + form.set(name, new File([Buffer.from(rawContent, 'latin1')], filename || 'audio.webm', { type: mime })) + } else { + form.set(name, rawContent) + } + } + return form + } + + async function transcribeAudio(req: http.IncomingMessage) { + if (!isRequestBodySizeAllowed(req.headers['content-length'], 25 * 1024 * 1024)) { + return { status: 413, body: { error: 'Audio upload too large' } } + } + + const settings = getEffectiveSttSettings() + if (!settings.enabled) return { status: 400, body: { error: 'STT is disabled' } } + if (settings.apiKeyRequired && !settings.apiKey) { + return { status: 400, body: { error: 'STT API key is not configured' } } + } + if (!validateSttBaseUrl(settings.baseUrl)) return { status: 400, body: { error: 'Invalid STT baseUrl' } } + + const startedAt = Date.now() + const requestBody = await readRequestBuffer(req) + const inputForm = readMultipartFormData(req.headers['content-type'], requestBody) + const file = inputForm.get('file') + if (!(file instanceof File)) return { status: 400, body: { error: 'Missing audio file' } } + + const providerForm = new FormData() + providerForm.set('file', file) + providerForm.set('model', settings.transcriptionModel || 'gpt-4o-mini-transcribe') + if (settings.language) providerForm.set('language', settings.language) + + const baseUrl = (settings.baseUrl || 'https://api.openai.com/v1').replace(/\/+$/, '') + const endpoint = settings.transcriptionEndpoint || '/audio/transcriptions' + const headers: Record = {} + if (settings.apiKey) headers.Authorization = `Bearer ${settings.apiKey}` + const providerRes = await fetch(`${baseUrl}${endpoint}`, { + method: 'POST', + headers, + body: providerForm, + }) + const providerText = await providerRes.text() + let providerJson: any = {} + try { + providerJson = providerText ? JSON.parse(providerText) : {} + } catch { + providerJson = {} + } + if (!providerRes.ok) { + return { status: 502, body: { error: providerJson.error?.message || 'STT provider request failed' } } + } + + return { + status: 200, + body: { + text: String(providerJson.text || ''), + durationMs: Date.now() - startedAt, + provider: settings.providerKind || 'openai-compatible', + model: settings.transcriptionModel || 'gpt-4o-mini-transcribe', + }, + } + } + + async function synthesizeSpeech(req: http.IncomingMessage) { + if (!isRequestBodySizeAllowed(req.headers['content-length'], 1024 * 1024)) { + return { + status: 413, + contentType: 'application/json', + body: Buffer.from(JSON.stringify({ error: 'TTS request too large' })), + } + } + + const settings = getEffectiveTtsSettings() + if (!settings.enabled) { + return { + status: 400, + contentType: 'application/json', + body: Buffer.from(JSON.stringify({ error: 'TTS is disabled' })), + } + } + if (settings.apiKeyRequired && !settings.apiKey) { + return { + status: 400, + contentType: 'application/json', + body: Buffer.from(JSON.stringify({ error: 'TTS API key is not configured' })), + } + } + if (!validateSttBaseUrl(settings.baseUrl)) { + return { + status: 400, + contentType: 'application/json', + body: Buffer.from(JSON.stringify({ error: 'Invalid TTS baseUrl' })), + } + } + + const requestBody = await readJsonBody(req) + const input = typeof requestBody.input === 'string' ? requestBody.input.trim() : '' + if (!input) { + return { + status: 400, + contentType: 'application/json', + body: Buffer.from(JSON.stringify({ error: 'Missing input' })), + } + } + + const headers: Record = { 'Content-Type': 'application/json' } + if (settings.apiKey) headers.Authorization = `Bearer ${settings.apiKey}` + const baseUrl = (settings.baseUrl || 'https://api.openai.com/v1').replace(/\/+$/, '') + const endpoint = settings.speechEndpoint || '/audio/speech' + const responseFormat = isTtsResponseFormat(settings.responseFormat) ? settings.responseFormat : 'mp3' + const providerRes = await fetch(`${baseUrl}${endpoint}`, { + method: 'POST', + headers, + body: JSON.stringify({ + model: settings.model || 'tts-1', + input, + voice: settings.voice || 'alloy', + response_format: responseFormat, + speed: typeof settings.speed === 'number' ? settings.speed : 1, + }), + }) + + const body = Buffer.from(await providerRes.arrayBuffer()) + const contentType = providerRes.headers.get('Content-Type') || `audio/${responseFormat}` + return { status: providerRes.status, contentType, body } + } + + function handleStaticFile(req: http.IncomingMessage, res: http.ServerResponse, relativePath: string) { + const staticDir = path.resolve(path.join(__dirname, '..', 'dist')) + const targetFile = relativePath === '/' || relativePath === '' ? 'index.html' : relativePath + + if (!preventPathTraversal(staticDir, targetFile)) { + res.writeHead(403, { 'Content-Type': 'text/plain' }) + res.end('403 Forbidden') + return + } + + const filePath = path.join(staticDir, targetFile) + if (!fs.existsSync(filePath) || fs.statSync(filePath).isDirectory()) { + // For static assets (e.g. .js, .css, .png), do NOT fallback to index.html + const ext = path.extname(targetFile).toLowerCase() + if (ext && ext !== '.html') { + res.writeHead(404, { 'Content-Type': 'text/plain' }) + res.end('404 Not Found') + return + } + + // Fallback to index.html for React Router SPA behavior + const indexPath = path.join(staticDir, 'index.html') + if (fs.existsSync(indexPath)) { + serveIndexHtml(indexPath, req, res) + } else { + res.writeHead(404, { 'Content-Type': 'text/plain' }) + res.end('404 Not Found') + } + return + } + + if (targetFile === 'index.html') { + serveIndexHtml(filePath, req, res) + return + } + + const ext = path.extname(filePath).toLowerCase() + const mime = MIME_TYPES[ext] || 'application/octet-stream' + res.writeHead(200, { 'Content-Type': mime }) + fs.createReadStream(filePath).pipe(res) + } + + function serveIndexHtml(filePath: string, req: http.IncomingMessage, res: http.ServerResponse) { + try { + let content = fs.readFileSync(filePath, 'utf8') + const host = req.headers.host || `127.0.0.1:${localPort}` + const token = isLoopbackHost(host) ? JSON.stringify(localToken) : 'null' + const bootDataScript = ` + +` + // Inject boot script before closing head tag or at the beginning of head + if (content.includes('')) { + content = content.replace('', `${bootDataScript}`) + } else { + content = bootDataScript + content + } + + res.writeHead(200, { + 'Content-Type': 'text/html', + 'Cache-Control': 'no-cache, no-store, must-revalidate', + }) + res.end(content) + } catch { + res.writeHead(500, { 'Content-Type': 'text/plain' }) + res.end('500 Internal Server Error') + } + } + + function checkAuth(req: http.IncomingMessage): boolean { + const authHeader = req.headers.authorization + if (validateBearerToken(authHeader, localToken)) return true + + const host = req.headers.host + const origin = req.headers.origin as string | undefined + const lanAccessEnabled = getLocalSettings().network?.lanAccessEnabled === true + if (!lanAccessEnabled || isLoopbackHost(host)) return false + + return validateHostAndOriginForAccess(host, origin, true) + } + + async function handleApiRequest(req: http.IncomingMessage, res: http.ServerResponse) { + const url = req.url || '' + + if (url === '/global/health') { + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ status: 'ok', pi: 'ready' })) + return + } + + if (!checkAuth(req)) { + res.writeHead(401, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: 'Unauthorized' })) + return + } + + if (url === '/global/event') { + res.writeHead(200, { + 'Content-Type': 'text/event-stream', + 'Cache-Control': 'no-cache, no-transform', + Connection: 'keep-alive', + 'X-Accel-Buffering': 'no', + }) + const rawEvent = JSON.stringify({ + id: Math.random().toString(36).substring(2), + time: Date.now(), + directory: latestCtx?.cwd || 'global', + payload: { + type: 'server.connected', + properties: { + timestamp: Date.now(), + }, + }, + }) + res.write(`data: ${rawEvent}\n\n`) + + const heartbeat = setInterval(() => { + try { + res.write(`: heartbeat ${Date.now()}\n\n`) + } catch { + clearInterval(heartbeat) + sseClients.delete(res) + } + }, 25000) + + sseClients.add(res) + req.on('close', () => { + clearInterval(heartbeat) + sseClients.delete(res) + }) + return + } + + const parsedUrl = new URL(url, 'http://localhost') + const pathname = parsedUrl.pathname + const method = req.method || 'GET' + const pathParts = pathname.split('/').filter(Boolean) + + if (pathParts[0] === 'api') { + if (pathParts[1] === 'network' && pathParts[2] === 'access') { + if (method === 'GET') { + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify(getNetworkAccessInfo())) + return + } + + if (method === 'POST') { + let body = '' + req.on('data', chunk => { + body += chunk + }) + req.on('end', () => { + try { + const parsed = body.trim() ? JSON.parse(body) : {} + const current = getLocalSettings() + const next: PiAgentUiLocalSettings = { + ...current, + network: { + ...current.network, + lanAccessEnabled: parsed.lanAccessEnabled === true, + }, + } + saveLocalSettings(next) + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify(getNetworkAccessInfo())) + } catch { + res.writeHead(400, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: 'Bad Request' })) + } + }) + return + } + } + + if (pathParts[1] === 'settings' && pathParts[2] === 'stt') { + if (method === 'GET') { + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify(sanitizeSttSettings())) + return + } + + if (method === 'POST') { + try { + const update = await readJsonBody(req) + const result = updateSttSettings(update) + if (!result.ok) { + res.writeHead(400, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: result.error })) + return + } + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify(result.settings)) + } catch { + res.writeHead(400, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: 'Bad Request' })) + } + return + } + } + + if (pathParts[1] === 'settings' && pathParts[2] === 'tts') { + if (method === 'GET') { + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify(sanitizeTtsSettings())) + return + } + + if (method === 'POST') { + try { + const update = await readJsonBody(req) + const result = updateTtsSettings(update) + if (!result.ok) { + res.writeHead(400, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: result.error })) + return + } + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify(result.settings)) + } catch { + res.writeHead(400, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: 'Bad Request' })) + } + return + } + } + + if (pathParts[1] === 'extensions') { + const targetDir = parsedUrl.searchParams.get('directory') || latestCtx?.cwd || process.cwd() + + if (method === 'GET') { + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify(buildExtensionCatalog({ cwd: targetDir }))) + return + } + + if (method === 'POST' && pathParts[2] === 'install') { + try { + const body = await readJsonBody(req) + if (!body || typeof body.command !== 'string') { + res.writeHead(400, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: 'Missing install command' })) + return + } + const result = await executeExtensionInstallCommand(body.command, { + cwd: typeof body.directory === 'string' ? body.directory : targetDir, + }) + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end( + JSON.stringify({ + source: result.source, + scope: result.scope, + reloadRequired: true, + stdout: result.stdout, + stderr: result.stderr, + }), + ) + } catch (error) { + res.writeHead(400, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: error instanceof Error ? error.message : 'Failed to install extension' })) + } + return + } + + if (method === 'DELETE' && pathParts[2] === 'package') { + try { + const body = await readJsonBody(req) + if (!body || typeof body.source !== 'string') { + res.writeHead(400, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: 'Missing extension source' })) + return + } + const scope: ExtensionPackageScope = body.scope === 'project' ? 'project' : 'user' + const result = await executeExtensionPackageRemoval( + { source: body.source, scope }, + { cwd: typeof body.directory === 'string' ? body.directory : targetDir }, + ) + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ source: body.source, scope, reloadRequired: true, ...result })) + } catch (error) { + res.writeHead(400, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: error instanceof Error ? error.message : 'Failed to remove extension' })) + } + return + } + } + + if (pathParts[1] === 'stt' && pathParts[2] === 'transcriptions' && method === 'POST') { + try { + const result = await transcribeAudio(req) + res.writeHead(result.status, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify(result.body)) + } catch { + res.writeHead(500, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: 'Failed to transcribe audio' })) + } + return + } + + if (pathParts[1] === 'tts' && pathParts[2] === 'speech' && method === 'POST') { + try { + const result = await synthesizeSpeech(req) + res.writeHead(result.status, { 'Content-Type': result.contentType }) + res.end(result.body) + } catch { + res.writeHead(500, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: 'Failed to synthesize speech' })) + } + return + } + + if (pathParts[1] === 'skills' && method === 'GET') { + const skills = parseSkillsFromSystemPrompt(latestCtx?.getSystemPrompt?.() ?? '', latestCtx?.cwd) + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ skills, groups: countSkillsBySource(skills) })) + return + } + + if (pathParts[1] === 'mcp' && pathParts[2] === 'status' && method === 'GET') { + const status = loadMcpStatus(latestCtx?.cwd) + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify(status)) + return + } + + if (pathParts[1] === 'models' && method === 'GET') { + const activeModel = latestCtx?.model as any + const registryModels: any[] = + latestCtx?.modelRegistry?.getAvailable() || latestCtx?.modelRegistry?.getAll() || [] + + const mapModel = (m: any) => ({ + id: m.id, + name: m.name || m.id, + provider: m.provider, + family: m.family ?? '', + contextLimit: m.contextLimit ?? m.contextWindow ?? 128000, + outputLimit: m.outputLimit ?? m.maxOutputTokens ?? m.maxTokens ?? 4096, + supportsReasoning: m.supportsReasoning ?? m.reasoning ?? false, + supportsImages: m.supportsImages ?? m.input?.includes('image') ?? false, + supportsPdf: m.supportsPdf ?? false, + supportsAudio: m.supportsAudio ?? false, + supportsVideo: m.supportsVideo ?? false, + supportsToolcall: m.supportsToolcall ?? true, + variants: m.variants ?? [], + }) + + let models = registryModels.map(mapModel) + + if (activeModel) { + const registryActiveModel = registryModels.find( + (m: any) => m.id === activeModel.id && m.provider === activeModel.provider, + ) + const activeMapped = mapModel({ + ...registryActiveModel, + ...activeModel, + contextLimit: activeModel.contextLimit ?? registryActiveModel?.contextLimit, + contextWindow: activeModel.contextWindow ?? registryActiveModel?.contextWindow, + outputLimit: activeModel.outputLimit ?? registryActiveModel?.outputLimit, + maxOutputTokens: activeModel.maxOutputTokens ?? registryActiveModel?.maxOutputTokens, + maxTokens: activeModel.maxTokens ?? registryActiveModel?.maxTokens, + supportsReasoning: activeModel.supportsReasoning ?? registryActiveModel?.supportsReasoning, + reasoning: activeModel.reasoning ?? registryActiveModel?.reasoning, + supportsImages: activeModel.supportsImages ?? registryActiveModel?.supportsImages, + input: activeModel.input ?? registryActiveModel?.input, + }) + + models = models.filter((m: any) => !(m.id === activeModel.id && m.provider === activeModel.provider)) + models.unshift(activeMapped) + } else { + if (models.length === 0) { + models = [ + { + id: 'gemini-2.5-flash', + name: 'Gemini 2.5 Flash', + provider: 'google', + family: '', + contextLimit: 128000, + outputLimit: 4096, + supportsReasoning: true, + supportsImages: true, + supportsPdf: false, + supportsAudio: false, + supportsVideo: false, + supportsToolcall: true, + variants: [], + }, + ] + } + } + + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ models })) + return + } + + if (pathParts[1] === 'sessions') { + // POST /api/sessions/abort + if (pathParts.length === 3 && pathParts[2] === 'abort' && method === 'POST') { + try { + if (latestCtx) { + latestCtx.abort() + } + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ status: 'aborted' })) + } catch (err) { + res.writeHead(500, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: 'Failed to abort session' })) + } + return + } + + // POST /api/sessions + if (pathParts.length === 2 && method === 'POST') { + let body = '' + req.on('data', chunk => { + body += chunk + }) + req.on('end', async () => { + try { + const parsed = body.trim() ? JSON.parse(body) : {} + const result = await createAndSwitchToRealSession({ + directory: typeof parsed.directory === 'string' ? parsed.directory : undefined, + title: typeof parsed.title === 'string' ? parsed.title : undefined, + parentID: typeof parsed.parentID === 'string' ? parsed.parentID : undefined, + }) + res.writeHead(result.status, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify(result.body)) + } catch (err) { + res.writeHead(500, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: 'Failed to create session' })) + } + }) + return + } + + // GET /api/sessions/:sessionId/context + if (pathParts.length === 4 && pathParts[3] === 'context' && method === 'GET') { + const sessionId = pathParts[2] + const activeSessionId = getCurrentSessionId() + + if (!latestCtx) { + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ available: false, sessionId, reason: 'runtime_unavailable' })) + return + } + + if (sessionId !== 'active-session' && activeSessionId && sessionId !== activeSessionId) { + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end( + JSON.stringify({ + available: false, + sessionId, + activeSessionId, + reason: 'session_not_active', + }), + ) + return + } + + const currentModel = latestCtx.model as + | { + id?: string + modelID?: string + name?: string + provider?: string + providerID?: string + contextWindow?: number + maxOutputTokens?: number + maxTokens?: number + } + | undefined + const modelContext = { + providerID: currentModel?.providerID ?? currentModel?.provider, + modelID: currentModel?.modelID ?? currentModel?.id, + modelName: currentModel?.name, + contextWindow: currentModel?.contextWindow ?? null, + outputLimit: currentModel?.maxOutputTokens ?? currentModel?.maxTokens ?? null, + } + + const usage = latestCtx.getContextUsage?.() + if (!usage) { + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end( + JSON.stringify({ + available: false, + sessionId: activeSessionId || sessionId, + activeSessionId, + ...modelContext, + reason: 'context_usage_unavailable', + }), + ) + return + } + + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end( + JSON.stringify({ + available: true, + sessionId: activeSessionId || sessionId, + activeSessionId, + ...modelContext, + tokens: usage.tokens, + contextWindow: usage.contextWindow, + percent: usage.percent, + }), + ) + return + } + + const sessionDir = latestCtx?.sessionManager?.getSessionDir() + if (!sessionDir || !fs.existsSync(sessionDir)) { + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end( + JSON.stringify(pathParts.length === 4 && pathParts[3] === 'messages' ? { messages: [] } : { sessions: [] }), + ) + return + } + + // GET /api/sessions/:sessionId/messages + if (pathParts.length === 4 && pathParts[3] === 'messages' && method === 'GET') { + const sessionId = pathParts[2] + try { + const files = fs.readdirSync(sessionDir).filter(f => f.endsWith('.jsonl')) + let matchedFile = files.find(f => f.endsWith(`_${sessionId}.jsonl`)) + + if (!matchedFile && sessionId === 'active-session') { + const activeSessionId = getCurrentSessionId() + if (activeSessionId) { + matchedFile = files.find(f => f.endsWith(`_${activeSessionId}.jsonl`)) + } + if (!matchedFile && files.length > 0) { + const filesWithTime = files.map(f => { + const p = path.join(sessionDir, f) + return { name: f, mtime: fs.statSync(p).mtimeMs } + }) + filesWithTime.sort((a, b) => b.mtime - a.mtime) + matchedFile = filesWithTime[0].name + } + } + + if (!matchedFile) { + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ messages: [] })) + return + } + + const filePath = path.join(sessionDir, matchedFile) + const content = fs.readFileSync(filePath, 'utf8') + const lines = content.trim().split('\n') + + const messageMap = new Map() + const toolCallMessageIds = new Map() + const orderedMessageIds: string[] = [] + let currentModel: { providerID: string; modelID: string } | undefined = undefined + + for (const line of lines) { + if (!line.trim()) continue + try { + const entry = JSON.parse(line) + if (entry.type === 'model_change') { + currentModel = { + providerID: entry.provider, + modelID: entry.modelId, + } + } else if (entry.type === 'message' && entry.message) { + const msgId = entry.id + const role = entry.message.role + + if (isVisibleChatRole(role)) { + if (!messageMap.has(msgId)) { + const timestamp = + entry.message.timestamp || (entry.timestamp ? new Date(entry.timestamp).getTime() : Date.now()) + const msgObj = { + info: { + id: msgId, + sessionID: sessionId, + role: role, + time: { + created: timestamp, + completed: entry.timestamp ? new Date(entry.timestamp).getTime() : timestamp, + }, + text: '', + model: currentModel, + }, + parts: [] as any[], + } + messageMap.set(msgId, msgObj) + orderedMessageIds.push(msgId) + } + + const msgObj = messageMap.get(msgId)! + + if (Array.isArray(entry.message.content)) { + for (const block of entry.message.content) { + if (block.type === 'text') { + msgObj.parts.push({ + id: msgId + '-text-' + msgObj.parts.length, + sessionID: sessionId, + messageID: msgId, + type: 'text', + text: block.text || '', + }) + } else if (block.type === 'thinking') { + msgObj.parts.push({ + id: msgId + '-reasoning-' + msgObj.parts.length, + sessionID: sessionId, + messageID: msgId, + type: 'reasoning', + text: block.thinking || '', + }) + } else if (block.type === 'toolCall') { + if (block.id) toolCallMessageIds.set(block.id, msgId) + msgObj.parts.push({ + id: block.id, + callID: block.id, + sessionID: sessionId, + messageID: msgId, + type: 'tool', + tool: block.name, + state: { + status: 'running', + input: block.arguments, + }, + }) + } + } + } + } else if (role === 'toolResult') { + const toolCallId = entry.message.toolCallId + const parentMsgId = + (toolCallId && toolCallMessageIds.get(toolCallId)) || + (entry.parentId && messageMap.has(entry.parentId) ? entry.parentId : undefined) + if (parentMsgId && messageMap.has(parentMsgId)) { + const parentMsg = messageMap.get(parentMsgId)! + const toolPart = parentMsg.parts.find( + (p: any) => p.type === 'tool' && p.id === entry.message.toolCallId, + ) + + let outputText = '' + if (Array.isArray(entry.message.content)) { + outputText = entry.message.content + .filter((c: any) => c && c.type === 'text') + .map((c: any) => c.text) + .join('') + } else if (typeof entry.message.content === 'string') { + outputText = entry.message.content + } + + if (toolPart) { + toolPart.state.status = entry.message.isError ? 'error' : 'completed' + toolPart.state.output = outputText + if (entry.message.isError) { + toolPart.state.error = outputText || 'Tool execution failed' + } + } else { + const callId = entry.message.toolCallId || 'tool-' + Math.random().toString(36).substring(2) + parentMsg.parts.push({ + id: callId, + callID: callId, + sessionID: sessionId, + messageID: parentMsgId, + type: 'tool', + tool: entry.message.toolName || 'tool', + state: { + status: entry.message.isError ? 'error' : 'completed', + output: outputText, + error: entry.message.isError ? outputText || 'Tool execution failed' : undefined, + }, + }) + } + } + } + } + } catch { + // ignore malformed line + } + } + + const messages = orderedMessageIds.map(msgId => { + const msgObj = messageMap.get(msgId)! + msgObj.info.text = msgObj.parts + .filter((p: any) => p.type === 'text') + .map((p: any) => p.text) + .join('') + return msgObj + }) + + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ messages })) + } catch (err) { + res.writeHead(500, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: 'Failed to parse session messages' })) + } + return + } + + // GET /api/sessions + if (pathParts.length === 2 && method === 'GET') { + try { + const files = fs.readdirSync(sessionDir).filter(f => f.endsWith('.jsonl')) + const sessions = [] + for (const file of files) { + const metadata = readSessionMetadata(path.join(sessionDir, file)) + if (metadata) { + sessions.push({ + ...metadata, + status: { type: 'idle' }, + }) + } + } + + sessions.sort((a, b) => b.time.updated - a.time.updated) + + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ sessions })) + } catch (err) { + res.writeHead(500, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: 'Failed to list sessions' })) + } + return + } + } + + if (pathParts[1] === 'messages' && pathParts[2] === 'send' && method === 'POST') { + let body = '' + req.on('data', chunk => { + body += chunk + }) + req.on('end', async () => { + try { + const parsed = JSON.parse(body) + const result = await enqueueSessionSend(() => sendUserMessageToRequestedSession(parsed)) + res.writeHead(result.status, { 'Content-Type': 'application/json' }) + res.end( + JSON.stringify({ + messageID: 'msg-' + Math.random().toString(36).substring(2) + '-' + Date.now(), + ...result.body, + }), + ) + } catch { + res.writeHead(400, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: 'Bad Request' })) + } + }) + return + } + + // GET /api/agents + if (pathParts[1] === 'agents' && method === 'GET') { + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end( + JSON.stringify({ + agents: [ + { id: 'build', name: 'Build', description: 'Main coder agent', hidden: false, mode: 'chat' }, + { id: 'research', name: 'Research', description: 'Code researcher', hidden: false, mode: 'chat' }, + ], + }), + ) + return + } + + // GET /api/permissions/list + if (pathParts[1] === 'permissions' && pathParts[2] === 'list' && method === 'GET') { + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ permissions: [] })) + return + } + + // GET /api/questions/list + if (pathParts[1] === 'questions' && pathParts[2] === 'list' && method === 'GET') { + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ questions: [] })) + return + } + + // GET /api/commands/list + if (pathParts[1] === 'commands' && pathParts[2] === 'list' && method === 'GET') { + const commands = getAvailableCommands(pi) + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ commands, groups: countCommandsBySource(commands) })) + return + } + + if (pathParts[1] === 'vcs') { + const targetDir = parsedUrl.searchParams.get('directory') || latestCtx?.cwd || process.cwd() + + async function sendGitAction(action: () => Promise) { + try { + const body = await action() + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify(body)) + } catch (error) { + res.writeHead(400, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: error instanceof Error ? error.message : 'Git operation failed' })) + } + } + + // GET /api/vcs/info + if (pathParts[2] === 'info' && method === 'GET') { + await sendGitAction(async () => { + const status = await getGitStatus(targetDir) + return { + branch: status.branch || 'main', + dirty: status.dirty, + default_branch: 'main', + } + }) + return + } + + // GET /api/vcs/status + if (pathParts[2] === 'status' && method === 'GET') { + await sendGitAction(() => getGitStatus(targetDir)) + return + } + + // GET /api/vcs/branches + if (pathParts[2] === 'branches' && method === 'GET') { + await sendGitAction(() => listGitBranches(targetDir)) + return + } + + if (pathParts[2] === 'checkout' && method === 'POST') { + await sendGitAction(async () => checkoutGitBranch(targetDir, await readJsonBody(req))) + return + } + + if (pathParts[2] === 'branch' && method === 'POST') { + await sendGitAction(async () => createGitBranch(targetDir, await readJsonBody(req))) + return + } + + if (pathParts[2] === 'stage' && method === 'POST') { + await sendGitAction(async () => stageGitPaths(targetDir, await readJsonBody(req))) + return + } + + if (pathParts[2] === 'unstage' && method === 'POST') { + await sendGitAction(async () => unstageGitPaths(targetDir, await readJsonBody(req))) + return + } + + if (pathParts[2] === 'commit' && method === 'POST') { + await sendGitAction(async () => commitGitChanges(targetDir, await readJsonBody(req))) + return + } + + if (pathParts[2] === 'pull' && method === 'POST') { + await sendGitAction(() => pullGitBranch(targetDir)) + return + } + + if (pathParts[2] === 'push' && method === 'POST') { + await sendGitAction(() => pushGitBranch(targetDir)) + return + } + } + + // GET /api/files/list + if (pathParts[1] === 'files' && pathParts[2] === 'list' && method === 'GET') { + try { + const targetDir = parsedUrl.searchParams.get('directory') || latestCtx?.cwd || process.cwd() + const subPath = parsedUrl.searchParams.get('path') || '.' + + if (!preventPathTraversal(targetDir, subPath)) { + res.writeHead(403, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: 'Forbidden' })) + return + } + + const resolvedPath = path.resolve(path.join(targetDir, subPath)) + if (!fs.existsSync(resolvedPath)) { + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ files: [] })) + return + } + + const entries = fs.readdirSync(resolvedPath, { withFileTypes: true }) + const files = entries.map(entry => { + const fullEntryPath = path.join(resolvedPath, entry.name) + const relPath = path.relative(targetDir, fullEntryPath).replace(/\\/g, '/') + let size: number | undefined + try { + if (entry.isFile()) { + size = fs.statSync(fullEntryPath).size + } + } catch { + // ignore + } + return { + name: entry.name, + path: relPath, + type: entry.isDirectory() ? 'directory' : 'file', + size, + } + }) + + res.writeHead(200, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ files })) + } catch (err) { + res.writeHead(500, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: 'Failed to list files' })) + } + return + } + } + + // Default error/unsupported response for other endpoints + res.writeHead(501, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: 'Feature Not Implemented in Pi MVP' })) + } + + function listenOnAvailablePort(srv: http.Server, basePort: number, host: string): Promise { + function canReserveLoopbackPort(port: number): Promise { + return new Promise(resolve => { + const probe = http.createServer() + probe.once('error', () => resolve(false)) + probe.once('listening', () => { + probe.close(() => resolve(true)) + }) + probe.listen(port, '127.0.0.1') + }) + } + + return new Promise((resolve, reject) => { + let currentPort = basePort + + async function tryListen() { + if (host === '0.0.0.0' && !(await canReserveLoopbackPort(currentPort))) { + currentPort++ + tryListen() + return + } + + const onError = (err: any) => { + srv.removeListener('listening', onListening) + if (err.code === 'EADDRINUSE') { + currentPort++ + tryListen() + } else { + reject(err) + } + } + + const onListening = () => { + srv.removeListener('error', onError) + resolve(currentPort) + } + + srv.once('error', onError) + srv.once('listening', onListening) + srv.listen(currentPort, host) + } + + tryListen() + }) + } + + function setWebLinkWidget(ctx: ExtensionContext) { + if (!localPort) return + + try { + ctx.ui.setWidget( + 'piagentui-link', + ['\x1b[1;36mPiAgentUI Web:\x1b[0m \x1b[4;36mhttp://127.0.0.1:' + localPort + '\x1b[0m'], + { placement: 'belowEditor' }, + ) + } catch (e) { + console.error('[PiAgentUi] Failed to set widget:', e) + } + } + + function startServer(ctx: ExtensionContext) { + latestCtx = ctx + if (server) { + setWebLinkWidget(ctx) + return + } + + localToken = generateBearerToken() + + server = http.createServer((req, res) => { + const host = req.headers.host + const origin = req.headers.origin as string | undefined + + if (!validateHostAndOriginForAccess(host, origin, getLocalSettings().network?.lanAccessEnabled === true)) { + res.writeHead(403, { 'Content-Type': 'text/plain' }) + res.end('403 Forbidden - Loopback Access Only') + return + } + + if (!isRequestBodySizeAllowed(req.headers['content-length'])) { + res.writeHead(413, { 'Content-Type': 'text/plain' }) + res.end('413 Payload Too Large') + return + } + + const urlPath = req.url || '' + if (urlPath.startsWith('/api/') || urlPath.startsWith('/global/')) { + handleApiRequest(req, res).catch(() => { + res.writeHead(500, { 'Content-Type': 'application/json' }) + res.end(JSON.stringify({ error: 'Internal Server Error' })) + }) + } else { + handleStaticFile(req, res, urlPath) + } + }) + + wss = new WebSocketServer({ noServer: true }) + + server.on('upgrade', (request, socket, head) => { + const host = request.headers.host + if (!validateHostAndOriginForAccess(host, undefined, getLocalSettings().network?.lanAccessEnabled === true)) { + socket.write('HTTP/1.1 403 Forbidden\r\n\r\n') + socket.destroy() + return + } + + // Upgrade WS safely + wss!.handleUpgrade(request, socket, head, (ws: WebSocket) => { + wss!.emit('connection', ws, request) + }) + }) + + wss.on('connection', (ws: WebSocket) => { + clients.add(ws) + ws.send(JSON.stringify({ type: 'server.connected', properties: {} })) + + ws.on('close', () => { + clients.delete(ws) + }) + ws.on('error', () => { + clients.delete(ws) + }) + }) + + // Listen on all interfaces so LAN access can be enabled dynamically; request validation remains closed by default. + const DEFAULT_PORT = 58785 + listenOnAvailablePort(server, DEFAULT_PORT, '0.0.0.0') + .then(port => { + localPort = port + console.log(`[PiAgentUi] Server listening at http://127.0.0.1:${localPort}`) + + // Expose dynamic web access URL below the editor/chat input in Pi Agent TUI + setWebLinkWidget(ctx) + + // Write connection details to discovery file + const homeDir = process.env.USERPROFILE || process.env.HOME || '' + const piAgentDir = path.join(homeDir, '.pi', 'agent') + const discoveryPath = path.join(piAgentDir, 'piagentui-port.json') + try { + if (!fs.existsSync(piAgentDir)) { + fs.mkdirSync(piAgentDir, { recursive: true }) + } + fs.writeFileSync(discoveryPath, JSON.stringify({ port: localPort, token: localToken }, null, 2), 'utf8') + console.log(`[PiAgentUi] Wrote connection info to: ${discoveryPath}`) + } catch (err) { + console.error('[PiAgentUi] Failed to write discovery file:', err) + } + }) + .catch(err => { + console.error('[PiAgentUi] Failed to listen on available port:', err) + }) + } + + function stopServer() { + if (latestCtx) { + try { + latestCtx.ui.setWidget('piagentui-link', undefined) + } catch (e) { + // ignore + } + } + // Delete discovery file + const homeDir = process.env.USERPROFILE || process.env.HOME || '' + const discoveryPath = path.join(homeDir, '.pi', 'agent', 'piagentui-port.json') + try { + if (fs.existsSync(discoveryPath)) { + fs.unlinkSync(discoveryPath) + } + } catch { + // ignore + } + + // End all SSE clients + for (const res of sseClients) { + try { + res.end() + } catch { + /* ignore */ + } + } + sseClients.clear() + createdParts.clear() + + if (wss) { + for (const client of clients) { + try { + client.close() + } catch { + /* ignore */ + } + } + clients.clear() + wss.close() + wss = null + } + if (server) { + server.close() + server = null + } + } + + pi.on('session_start', async (_event, ctx) => { + latestCtx = ctx + startServer(ctx) + + const sessionId = ctx.sessionManager?.getSessionId() + if (sessionId) { + const sessionInfo = getSessionInfo(sessionId) + broadcastSSE('session.created', { info: sessionInfo }) + } + }) + + pi.on('session_shutdown', async event => { + if (preserveServerForSessionSwitch && event?.reason === 'resume') { + return + } + stopServer() + }) + + // Event translation for global SSE subscription + pi.on('agent_start', () => { + const sessionID = getCurrentSessionId() + broadcastSSE('session.status', { sessionID, status: { type: 'working' } }) + broadcastSessionUpdated(sessionID) + }) + + pi.on('agent_end', () => { + const sessionID = getCurrentSessionId() + broadcastSSE('session.status', { sessionID, status: { type: 'idle' } }) + broadcastSessionUpdated(sessionID) + }) + + pi.on('turn_end', () => { + const sessionID = getCurrentSessionId() + broadcastSSE('session.idle', { sessionID }) + broadcastSessionUpdated(sessionID) + }) + + pi.on('message_start', event => { + const sessionID = getCurrentSessionId() + const { message } = event + const messageID = getMessageId(message) + if (message.role === 'assistant') { + lastAssistantMessageId = messageID + } + createdParts.clear() + + broadcastSSE('message.updated', { + id: messageID, + sessionID, + role: message.role, + time: { + created: Date.now(), + }, + text: '', + }) + }) + + pi.on('message_update', event => { + const sessionID = getCurrentSessionId() + const { assistantMessageEvent, message } = event + const messageID = getMessageId(message) + + if (assistantMessageEvent.type === 'text_delta') { + const partID = messageID + '-text' + if (!createdParts.has(partID)) { + broadcastSSE('message.part.updated', { + id: partID, + sessionID, + messageID: messageID, + type: 'text', + text: '', + }) + createdParts.add(partID) + } + broadcastSSE('message.part.delta', { + sessionID, + messageID: messageID, + partID, + field: 'text', + delta: assistantMessageEvent.delta, + }) + } else if (assistantMessageEvent.type === 'thinking_delta') { + const partID = messageID + '-reasoning' + if (!createdParts.has(partID)) { + broadcastSSE('message.part.updated', { + id: partID, + sessionID, + messageID: messageID, + type: 'reasoning', + text: '', + }) + createdParts.add(partID) + } + broadcastSSE('message.part.delta', { + sessionID, + messageID: messageID, + partID, + field: 'reasoning', + delta: assistantMessageEvent.delta, + }) + } + }) + + pi.on('message_end', event => { + const sessionID = getCurrentSessionId() + const { message } = event + if (!isVisibleChatRole(message?.role)) return + broadcastSSE('message.updated', { + id: getMessageId(message), + sessionID, + role: message.role, + time: { + created: (message as any).timestamp || Date.now(), + completed: Date.now(), + }, + text: getMessageText(message), + }) + broadcastSessionUpdated(sessionID) + }) + + pi.on('tool_execution_start', event => { + const sessionID = getCurrentSessionId() + const messageID = lastAssistantMessageId || 'assistant-msg-id' + broadcastSSE('message.part.updated', { + id: event.toolCallId, + callID: event.toolCallId, + sessionID, + messageID, + type: 'tool', + tool: event.toolName, + state: { + status: 'running', + input: event.args, + }, + }) + }) + + pi.on('tool_execution_end', event => { + const sessionID = getCurrentSessionId() + const messageID = lastAssistantMessageId || 'assistant-msg-id' + broadcastSSE('message.part.updated', { + id: event.toolCallId, + callID: event.toolCallId, + sessionID, + messageID, + type: 'tool', + tool: event.toolName, + state: { + status: event.isError ? 'error' : 'completed', + output: event.result, + error: event.isError ? String(event.result) : undefined, + }, + }) + }) +} diff --git a/extensions/piagentui-settings-store.test.ts b/extensions/piagentui-settings-store.test.ts new file mode 100644 index 0000000..120d13b --- /dev/null +++ b/extensions/piagentui-settings-store.test.ts @@ -0,0 +1,99 @@ +import * as fs from 'node:fs' +import * as os from 'node:os' +import * as path from 'node:path' +import { afterEach, describe, expect, it } from 'vitest' +import { createPiAgentUiSettingsStore, resolvePiAgentUiSettingsPaths } from './piagentui-settings-store.js' + +const tempDirs: string[] = [] + +function makeTempHome(): string { + const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'piagentui-settings-store-')) + tempDirs.push(dir) + return dir +} + +afterEach(() => { + for (const dir of tempDirs.splice(0)) { + fs.rmSync(dir, { recursive: true, force: true }) + } +}) + +describe('PiAgentUI SQLite settings store', () => { + it('persists namespaced settings in a SQLite database independent of browser origin', () => { + const homeDir = makeTempHome() + const paths = resolvePiAgentUiSettingsPaths(homeDir) + const first = createPiAgentUiSettingsStore(paths) + + first.saveSettings({ + network: { lanAccessEnabled: true }, + stt: { + enabled: true, + providerKind: 'openai-compatible', + baseUrl: 'http://127.0.0.1:8022/v1', + transcriptionModel: 'deepdml/faster-whisper-large-v3-turbo-ct2', + apiKeyRequired: false, + }, + tts: { + enabled: true, + baseUrl: 'http://127.0.0.1:8022/v1', + model: 'speaches-ai/Kokoro-82M-v1.0-ONNX', + voice: 'pf_dora', + responseFormat: 'wav', + apiKeyRequired: false, + }, + }) + first.close() + + const second = createPiAgentUiSettingsStore(paths) + expect(fs.existsSync(paths.databasePath)).toBe(true) + expect(second.getSettings()).toMatchObject({ + network: { lanAccessEnabled: true }, + stt: { + enabled: true, + baseUrl: 'http://127.0.0.1:8022/v1', + transcriptionModel: 'deepdml/faster-whisper-large-v3-turbo-ct2', + apiKeyRequired: false, + }, + tts: { + enabled: true, + model: 'speaches-ai/Kokoro-82M-v1.0-ONNX', + voice: 'pf_dora', + responseFormat: 'wav', + apiKeyRequired: false, + }, + }) + second.close() + }) + + it('imports the legacy JSON settings file once into SQLite', () => { + const homeDir = makeTempHome() + const paths = resolvePiAgentUiSettingsPaths(homeDir) + fs.mkdirSync(path.dirname(paths.legacyJsonPath), { recursive: true }) + fs.writeFileSync( + paths.legacyJsonPath, + JSON.stringify({ + network: { lanAccessEnabled: true }, + stt: { + enabled: true, + baseUrl: 'http://127.0.0.1:8022/v1', + apiKey: 'legacy-secret', + apiKeyRequired: false, + }, + }), + 'utf8', + ) + + const store = createPiAgentUiSettingsStore(paths) + expect(store.getSettings()).toMatchObject({ + network: { lanAccessEnabled: true }, + stt: { + enabled: true, + baseUrl: 'http://127.0.0.1:8022/v1', + apiKey: 'legacy-secret', + apiKeyRequired: false, + }, + }) + expect(store.getMeta('legacy_json_imported_at')).toEqual(expect.any(String)) + store.close() + }) +}) diff --git a/extensions/piagentui-settings-store.ts b/extensions/piagentui-settings-store.ts new file mode 100644 index 0000000..178ea9d --- /dev/null +++ b/extensions/piagentui-settings-store.ts @@ -0,0 +1,214 @@ +import * as fs from 'node:fs' +import * as path from 'node:path' +import { createRequire } from 'node:module' + +const nodeRequire = createRequire(import.meta.url) +const { DatabaseSync } = nodeRequire('node:sqlite') as typeof import('node:sqlite') +type DatabaseSyncInstance = InstanceType + +export type SttProviderKind = 'openai' | 'openai-compatible' +export type SttMode = 'file' | 'realtime' +export type SttInsertMode = 'append' | 'replace' +export type TtsResponseFormat = 'mp3' | 'opus' | 'aac' | 'flac' | 'wav' | 'pcm' + +export type StoredSttSettings = { + enabled?: boolean + providerKind?: SttProviderKind + mode?: SttMode + baseUrl?: string + apiKey?: string + apiKeyRequired?: boolean + transcriptionEndpoint?: string + transcriptionModel?: string + language?: string + insertMode?: SttInsertMode +} + +export type StoredTtsSettings = { + enabled?: boolean + providerKind?: SttProviderKind + baseUrl?: string + apiKey?: string + apiKeyRequired?: boolean + speechEndpoint?: string + model?: string + voice?: string + responseFormat?: TtsResponseFormat + speed?: number +} + +export type PiAgentUiLocalSettings = { + schemaVersion?: number + network?: { + lanAccessEnabled?: boolean + } + stt?: StoredSttSettings + tts?: StoredTtsSettings +} + +export interface PiAgentUiSettingsPaths { + databasePath: string + legacyJsonPath: string +} + +type SettingsNamespace = 'network' | 'stt' | 'tts' + +const SETTINGS_SCHEMA_VERSION = 1 +const SETTINGS_KEYS: Record = { + network: 'access', + stt: 'settings', + tts: 'settings', +} + +export function resolvePiAgentUiSettingsPaths( + homeDir = process.env.USERPROFILE || process.env.HOME || '', +): PiAgentUiSettingsPaths { + const settingsDir = path.join(homeDir, '.pi', 'agent') + return { + databasePath: path.join(settingsDir, 'piagentui.db'), + legacyJsonPath: path.join(settingsDir, 'piagentui-settings.json'), + } +} + +function isObject(value: unknown): value is Record { + return typeof value === 'object' && value !== null && !Array.isArray(value) +} + +function parseJsonObject(value: string | undefined): Record | undefined { + if (!value) return undefined + try { + const parsed = JSON.parse(value) + return isObject(parsed) ? parsed : undefined + } catch { + return undefined + } +} + +function normalizeSettings(raw: unknown): PiAgentUiLocalSettings { + if (!isObject(raw)) return {} + const next: PiAgentUiLocalSettings = { schemaVersion: SETTINGS_SCHEMA_VERSION } + + if (isObject(raw.network)) { + next.network = { lanAccessEnabled: raw.network.lanAccessEnabled === true } + } + if (isObject(raw.stt)) { + next.stt = raw.stt as StoredSttSettings + } + if (isObject(raw.tts)) { + next.tts = raw.tts as StoredTtsSettings + } + + return next +} + +function readLegacyJsonSettings(legacyJsonPath: string): PiAgentUiLocalSettings | null { + try { + if (!fs.existsSync(legacyJsonPath)) return null + return normalizeSettings(JSON.parse(fs.readFileSync(legacyJsonPath, 'utf8'))) + } catch { + return null + } +} + +export class PiAgentUiSettingsStore { + private readonly db: DatabaseSyncInstance + + constructor(private readonly paths: PiAgentUiSettingsPaths) { + fs.mkdirSync(path.dirname(paths.databasePath), { recursive: true }) + this.db = new DatabaseSync(paths.databasePath) + this.initialize() + this.importLegacyJsonOnce() + } + + close(): void { + this.db.close() + } + + getMeta(key: string): string | null { + const row = this.db.prepare('SELECT value FROM app_meta WHERE key = ?').get(key) as { value?: string } | undefined + return typeof row?.value === 'string' ? row.value : null + } + + setMeta(key: string, value: string): void { + this.db + .prepare( + `INSERT INTO app_meta (key, value, updated_at) + VALUES (?, ?, ?) + ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at`, + ) + .run(key, value, Date.now()) + } + + getSettings(): PiAgentUiLocalSettings { + return { + schemaVersion: SETTINGS_SCHEMA_VERSION, + network: this.getNamespace('network') as PiAgentUiLocalSettings['network'], + stt: this.getNamespace('stt') as StoredSttSettings | undefined, + tts: this.getNamespace('tts') as StoredTtsSettings | undefined, + } + } + + saveSettings(settings: PiAgentUiLocalSettings): void { + const normalized = normalizeSettings(settings) + this.db.exec('BEGIN') + try { + if (normalized.network) this.setNamespace('network', normalized.network) + if (normalized.stt) this.setNamespace('stt', normalized.stt) + if (normalized.tts) this.setNamespace('tts', normalized.tts) + this.setMeta('schema_version', String(SETTINGS_SCHEMA_VERSION)) + this.db.exec('COMMIT') + } catch (error) { + this.db.exec('ROLLBACK') + throw error + } + } + + private initialize(): void { + this.db.exec('PRAGMA journal_mode = WAL') + this.db.exec('PRAGMA foreign_keys = ON') + this.db.exec(` + CREATE TABLE IF NOT EXISTS app_meta ( + key TEXT PRIMARY KEY, + value TEXT NOT NULL, + updated_at INTEGER NOT NULL + ); + CREATE TABLE IF NOT EXISTS settings ( + namespace TEXT NOT NULL, + key TEXT NOT NULL, + value_json TEXT NOT NULL, + updated_at INTEGER NOT NULL, + PRIMARY KEY (namespace, key) + ); + `) + this.setMeta('schema_version', String(SETTINGS_SCHEMA_VERSION)) + } + + private importLegacyJsonOnce(): void { + if (this.getMeta('legacy_json_imported_at')) return + const legacy = readLegacyJsonSettings(this.paths.legacyJsonPath) + if (!legacy) return + this.saveSettings(legacy) + this.setMeta('legacy_json_imported_at', new Date().toISOString()) + } + + private getNamespace(namespace: SettingsNamespace): Record | undefined { + const row = this.db + .prepare('SELECT value_json FROM settings WHERE namespace = ? AND key = ?') + .get(namespace, SETTINGS_KEYS[namespace]) as { value_json?: string } | undefined + return parseJsonObject(row?.value_json) + } + + private setNamespace(namespace: SettingsNamespace, value: unknown): void { + this.db + .prepare( + `INSERT INTO settings (namespace, key, value_json, updated_at) + VALUES (?, ?, ?, ?) + ON CONFLICT(namespace, key) DO UPDATE SET value_json = excluded.value_json, updated_at = excluded.updated_at`, + ) + .run(namespace, SETTINGS_KEYS[namespace], JSON.stringify(value), Date.now()) + } +} + +export function createPiAgentUiSettingsStore(paths = resolvePiAgentUiSettingsPaths()): PiAgentUiSettingsStore { + return new PiAgentUiSettingsStore(paths) +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..7950b12 --- /dev/null +++ b/index.html @@ -0,0 +1,27 @@ + + + + + + + Pi Agent + + + + + + + + + + + + + +
+ + + diff --git a/openapi_doc.json b/openapi_doc.json new file mode 100644 index 0000000..091c0f7 --- /dev/null +++ b/openapi_doc.json @@ -0,0 +1,5378 @@ +{ + "openapi": "3.1.1", + "info": { "title": "opencode", "description": "opencode api", "version": "0.0.3" }, + "paths": { + "/global/health": { + "get": { + "operationId": "global.health", + "summary": "Get health", + "description": "Get health information about the OpenCode server.", + "responses": { + "200": { + "description": "Health information", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { "healthy": { "type": "boolean", "const": true }, "version": { "type": "string" } }, + "required": ["healthy", "version"] + } + } + } + } + } + } + }, + "/global/event": { + "get": { + "operationId": "global.event", + "summary": "Get global events", + "description": "Subscribe to global events from the OpenCode system using server-sent events.", + "responses": { + "200": { + "description": "Event stream", + "content": { "text/event-stream": { "schema": { "$ref": "#/components/schemas/GlobalEvent" } } } + } + } + } + }, + "/global/config": { + "get": { + "operationId": "global.config.get", + "summary": "Get global configuration", + "description": "Retrieve the current global OpenCode configuration settings and preferences.", + "responses": { + "200": { + "description": "Get global config info", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Config" } } } + } + } + }, + "patch": { + "operationId": "global.config.update", + "summary": "Update global configuration", + "description": "Update global OpenCode configuration settings and preferences.", + "responses": { + "200": { + "description": "Successfully updated global config", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Config" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + } + }, + "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Config" } } } } + } + }, + "/global/dispose": { + "post": { + "operationId": "global.dispose", + "summary": "Dispose instance", + "description": "Clean up and dispose all OpenCode instances, releasing all resources.", + "responses": { + "200": { + "description": "Global disposed", + "content": { "application/json": { "schema": { "type": "boolean" } } } + } + } + } + }, + "/auth/{providerID}": { + "put": { + "operationId": "auth.set", + "summary": "Set auth credentials", + "description": "Set authentication credentials", + "responses": { + "200": { + "description": "Successfully set authentication credentials", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + } + }, + "parameters": [{ "in": "path", "name": "providerID", "schema": { "type": "string" }, "required": true }], + "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Auth" } } } } + }, + "delete": { + "operationId": "auth.remove", + "summary": "Remove auth credentials", + "description": "Remove authentication credentials", + "responses": { + "200": { + "description": "Successfully removed authentication credentials", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + } + }, + "parameters": [{ "in": "path", "name": "providerID", "schema": { "type": "string" }, "required": true }] + } + }, + "/project": { + "get": { + "operationId": "project.list", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "List all projects", + "description": "Get a list of projects that have been opened with OpenCode.", + "responses": { + "200": { + "description": "List of projects", + "content": { + "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Project" } } } + } + } + } + } + }, + "/project/current": { + "get": { + "operationId": "project.current", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Get current project", + "description": "Retrieve the currently active project that OpenCode is working with.", + "responses": { + "200": { + "description": "Current project information", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project" } } } + } + } + } + }, + "/project/{projectID}": { + "patch": { + "operationId": "project.update", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "projectID", "schema": { "type": "string" }, "required": true } + ], + "summary": "Update project", + "description": "Update project properties such as name, icon, and commands.", + "responses": { + "200": { + "description": "Updated project information", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "icon": { + "type": "object", + "properties": { + "url": { "type": "string" }, + "override": { "type": "string" }, + "color": { "type": "string" } + } + }, + "commands": { + "type": "object", + "properties": { + "start": { + "description": "Startup script to run when creating a new workspace (worktree)", + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "/pty": { + "get": { + "operationId": "pty.list", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "List PTY sessions", + "description": "Get a list of all active pseudo-terminal (PTY) sessions managed by OpenCode.", + "responses": { + "200": { + "description": "List of sessions", + "content": { + "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Pty" } } } + } + } + } + }, + "post": { + "operationId": "pty.create", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Create PTY session", + "description": "Create a new pseudo-terminal (PTY) session for running shell commands and processes.", + "responses": { + "200": { + "description": "Created session", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Pty" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "command": { "type": "string" }, + "args": { "type": "array", "items": { "type": "string" } }, + "cwd": { "type": "string" }, + "title": { "type": "string" }, + "env": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "type": "string" } + } + } + } + } + } + } + } + }, + "/pty/{ptyID}": { + "get": { + "operationId": "pty.get", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "ptyID", "schema": { "type": "string" }, "required": true } + ], + "summary": "Get PTY session", + "description": "Retrieve detailed information about a specific pseudo-terminal (PTY) session.", + "responses": { + "200": { + "description": "Session info", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Pty" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + } + }, + "put": { + "operationId": "pty.update", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "ptyID", "schema": { "type": "string" }, "required": true } + ], + "summary": "Update PTY session", + "description": "Update properties of an existing pseudo-terminal (PTY) session.", + "responses": { + "200": { + "description": "Updated session", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Pty" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "title": { "type": "string" }, + "size": { + "type": "object", + "properties": { "rows": { "type": "number" }, "cols": { "type": "number" } }, + "required": ["rows", "cols"] + } + } + } + } + } + } + }, + "delete": { + "operationId": "pty.remove", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "ptyID", "schema": { "type": "string" }, "required": true } + ], + "summary": "Remove PTY session", + "description": "Remove and terminate a specific pseudo-terminal (PTY) session.", + "responses": { + "200": { + "description": "Session removed", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + } + } + }, + "/pty/{ptyID}/connect": { + "get": { + "operationId": "pty.connect", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "ptyID", "schema": { "type": "string" }, "required": true } + ], + "summary": "Connect to PTY session", + "description": "Establish a WebSocket connection to interact with a pseudo-terminal (PTY) session in real-time.", + "responses": { + "200": { + "description": "Connected session", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + } + } + }, + "/config": { + "get": { + "operationId": "config.get", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Get configuration", + "description": "Retrieve the current OpenCode configuration settings and preferences.", + "responses": { + "200": { + "description": "Get config info", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Config" } } } + } + } + }, + "patch": { + "operationId": "config.update", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Update configuration", + "description": "Update OpenCode configuration settings and preferences.", + "responses": { + "200": { + "description": "Successfully updated config", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Config" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + } + }, + "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Config" } } } } + } + }, + "/config/providers": { + "get": { + "operationId": "config.providers", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "List config providers", + "description": "Get a list of all configured AI providers and their default models.", + "responses": { + "200": { + "description": "List of providers", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "providers": { "type": "array", "items": { "$ref": "#/components/schemas/Provider" } }, + "default": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "type": "string" } + } + }, + "required": ["providers", "default"] + } + } + } + } + } + } + }, + "/experimental/tool/ids": { + "get": { + "operationId": "tool.ids", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "List tool IDs", + "description": "Get a list of all available tool IDs, including both built-in tools and dynamically registered tools.", + "responses": { + "200": { + "description": "Tool IDs", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolIDs" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + } + } + } + }, + "/experimental/tool": { + "get": { + "operationId": "tool.list", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "query", "name": "provider", "schema": { "type": "string" }, "required": true }, + { "in": "query", "name": "model", "schema": { "type": "string" }, "required": true } + ], + "summary": "List tools", + "description": "Get a list of available tools with their JSON schema parameters for a specific provider and model combination.", + "responses": { + "200": { + "description": "Tools", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolList" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + } + } + } + }, + "/experimental/worktree": { + "post": { + "operationId": "worktree.create", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Create worktree", + "description": "Create a new git worktree for the current project and run any configured startup scripts.", + "responses": { + "200": { + "description": "Worktree created", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Worktree" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + } + }, + "requestBody": { + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorktreeCreateInput" } } } + } + }, + "get": { + "operationId": "worktree.list", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "List worktrees", + "description": "List all sandbox worktrees for the current project.", + "responses": { + "200": { + "description": "List of worktree directories", + "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } + } + } + }, + "delete": { + "operationId": "worktree.remove", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Remove worktree", + "description": "Remove a git worktree and delete its branch.", + "responses": { + "200": { + "description": "Worktree removed", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + } + }, + "requestBody": { + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorktreeRemoveInput" } } } + } + } + }, + "/experimental/worktree/reset": { + "post": { + "operationId": "worktree.reset", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Reset worktree", + "description": "Reset a worktree branch to the primary default branch.", + "responses": { + "200": { + "description": "Worktree reset", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + } + }, + "requestBody": { + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorktreeResetInput" } } } + } + } + }, + "/experimental/resource": { + "get": { + "operationId": "experimental.resource.list", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Get MCP resources", + "description": "Get all available MCP resources from connected servers. Optionally filter by name.", + "responses": { + "200": { + "description": "MCP resources", + "content": { + "application/json": { + "schema": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "$ref": "#/components/schemas/McpResource" } + } + } + } + } + } + } + }, + "/session": { + "get": { + "operationId": "session.list", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { "type": "string" }, + "description": "Filter sessions by project directory" + }, + { + "in": "query", + "name": "roots", + "schema": { "type": "boolean" }, + "description": "Only return root sessions (no parentID)" + }, + { + "in": "query", + "name": "start", + "schema": { "type": "number" }, + "description": "Filter sessions updated on or after this timestamp (milliseconds since epoch)" + }, + { + "in": "query", + "name": "search", + "schema": { "type": "string" }, + "description": "Filter sessions by title (case-insensitive)" + }, + { + "in": "query", + "name": "limit", + "schema": { "type": "number" }, + "description": "Maximum number of sessions to return" + } + ], + "summary": "List sessions", + "description": "Get a list of all OpenCode sessions, sorted by most recently updated.", + "responses": { + "200": { + "description": "List of sessions", + "content": { + "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Session" } } } + } + } + } + }, + "post": { + "operationId": "session.create", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Create session", + "description": "Create a new OpenCode session for interacting with AI assistants and managing conversations.", + "responses": { + "200": { + "description": "Successfully created session", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Session" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "parentID": { "type": "string", "pattern": "^ses.*" }, + "title": { "type": "string" }, + "permission": { "$ref": "#/components/schemas/PermissionRuleset" } + } + } + } + } + } + } + }, + "/session/status": { + "get": { + "operationId": "session.status", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Get session status", + "description": "Retrieve the current status of all sessions, including active, idle, and completed states.", + "responses": { + "200": { + "description": "Get session status", + "content": { + "application/json": { + "schema": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "$ref": "#/components/schemas/SessionStatus" } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + } + } + } + }, + "/session/{sessionID}": { + "get": { + "operationId": "session.get", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "sessionID", "schema": { "type": "string", "pattern": "^ses.*" }, "required": true } + ], + "summary": "Get session", + "description": "Retrieve detailed information about a specific OpenCode session.", + "tags": ["Session"], + "responses": { + "200": { + "description": "Get session", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Session" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + } + }, + "delete": { + "operationId": "session.delete", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "sessionID", "schema": { "type": "string", "pattern": "^ses.*" }, "required": true } + ], + "summary": "Delete session", + "description": "Delete a session and permanently remove all associated data, including messages and history.", + "responses": { + "200": { + "description": "Successfully deleted session", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + } + }, + "patch": { + "operationId": "session.update", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true } + ], + "summary": "Update session", + "description": "Update properties of an existing session, such as title or other metadata.", + "responses": { + "200": { + "description": "Successfully updated session", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Session" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "title": { "type": "string" }, + "time": { "type": "object", "properties": { "archived": { "type": "number" } } } + } + } + } + } + } + } + }, + "/session/{sessionID}/children": { + "get": { + "operationId": "session.children", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "sessionID", "schema": { "type": "string", "pattern": "^ses.*" }, "required": true } + ], + "summary": "Get session children", + "tags": ["Session"], + "description": "Retrieve all child sessions that were forked from the specified parent session.", + "responses": { + "200": { + "description": "List of children", + "content": { + "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Session" } } } + } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + } + } + }, + "/session/{sessionID}/todo": { + "get": { + "operationId": "session.todo", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { + "in": "path", + "name": "sessionID", + "schema": { "type": "string" }, + "required": true, + "description": "Session ID" + } + ], + "summary": "Get session todos", + "description": "Retrieve the todo list associated with a specific session, showing tasks and action items.", + "responses": { + "200": { + "description": "Todo list", + "content": { + "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Todo" } } } + } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + } + } + }, + "/session/{sessionID}/init": { + "post": { + "operationId": "session.init", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { + "in": "path", + "name": "sessionID", + "schema": { "type": "string" }, + "required": true, + "description": "Session ID" + } + ], + "summary": "Initialize session", + "description": "Analyze the current application and create an AGENTS.md file with project-specific agent configurations.", + "responses": { + "200": { "description": "200", "content": { "application/json": { "schema": { "type": "boolean" } } } }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "modelID": { "type": "string" }, + "providerID": { "type": "string" }, + "messageID": { "type": "string", "pattern": "^msg.*" } + }, + "required": ["modelID", "providerID", "messageID"] + } + } + } + } + } + }, + "/session/{sessionID}/fork": { + "post": { + "operationId": "session.fork", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "sessionID", "schema": { "type": "string", "pattern": "^ses.*" }, "required": true } + ], + "summary": "Fork session", + "description": "Create a new session by forking an existing session at a specific message point.", + "responses": { + "200": { + "description": "200", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Session" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { "type": "object", "properties": { "messageID": { "type": "string", "pattern": "^msg.*" } } } + } + } + } + } + }, + "/session/{sessionID}/abort": { + "post": { + "operationId": "session.abort", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true } + ], + "summary": "Abort session", + "description": "Abort an active session and stop any ongoing AI processing or command execution.", + "responses": { + "200": { + "description": "Aborted session", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + } + } + }, + "/session/{sessionID}/share": { + "post": { + "operationId": "session.share", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true } + ], + "summary": "Share session", + "description": "Create a shareable link for a session, allowing others to view the conversation.", + "responses": { + "200": { + "description": "Successfully shared session", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Session" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + } + }, + "delete": { + "operationId": "session.unshare", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "sessionID", "schema": { "type": "string", "pattern": "^ses.*" }, "required": true } + ], + "summary": "Unshare session", + "description": "Remove the shareable link for a session, making it private again.", + "responses": { + "200": { + "description": "Successfully unshared session", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Session" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + } + } + }, + "/session/{sessionID}/diff": { + "get": { + "operationId": "session.diff", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "sessionID", "schema": { "type": "string", "pattern": "^ses.*" }, "required": true }, + { "in": "query", "name": "messageID", "schema": { "type": "string", "pattern": "^msg.*" } } + ], + "summary": "Get message diff", + "description": "Get the file changes (diff) that resulted from a specific user message in the session.", + "responses": { + "200": { + "description": "Successfully retrieved diff", + "content": { + "application/json": { + "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FileDiff" } } + } + } + } + } + } + }, + "/session/{sessionID}/summarize": { + "post": { + "operationId": "session.summarize", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { + "in": "path", + "name": "sessionID", + "schema": { "type": "string" }, + "required": true, + "description": "Session ID" + } + ], + "summary": "Summarize session", + "description": "Generate a concise summary of the session using AI compaction to preserve key information.", + "responses": { + "200": { + "description": "Summarized session", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "providerID": { "type": "string" }, + "modelID": { "type": "string" }, + "auto": { "default": false, "type": "boolean" } + }, + "required": ["providerID", "modelID"] + } + } + } + } + } + }, + "/session/{sessionID}/message": { + "get": { + "operationId": "session.messages", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { + "in": "path", + "name": "sessionID", + "schema": { "type": "string" }, + "required": true, + "description": "Session ID" + }, + { "in": "query", "name": "limit", "schema": { "type": "number" } } + ], + "summary": "Get session messages", + "description": "Retrieve all messages in a session, including user prompts and AI responses.", + "responses": { + "200": { + "description": "List of messages", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "info": { "$ref": "#/components/schemas/Message" }, + "parts": { "type": "array", "items": { "$ref": "#/components/schemas/Part" } } + }, + "required": ["info", "parts"] + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + } + }, + "post": { + "operationId": "session.prompt", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { + "in": "path", + "name": "sessionID", + "schema": { "type": "string" }, + "required": true, + "description": "Session ID" + } + ], + "summary": "Send message", + "description": "Create and send a new message to a session, streaming the AI response.", + "responses": { + "200": { + "description": "Created message", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "info": { "$ref": "#/components/schemas/AssistantMessage" }, + "parts": { "type": "array", "items": { "$ref": "#/components/schemas/Part" } } + }, + "required": ["info", "parts"] + } + } + } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "messageID": { "type": "string", "pattern": "^msg.*" }, + "model": { + "type": "object", + "properties": { "providerID": { "type": "string" }, "modelID": { "type": "string" } }, + "required": ["providerID", "modelID"] + }, + "agent": { "type": "string" }, + "noReply": { "type": "boolean" }, + "tools": { + "description": "@deprecated tools and permissions have been merged, you can set permissions on the session itself now", + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "type": "boolean" } + }, + "system": { "type": "string" }, + "variant": { "type": "string" }, + "parts": { + "type": "array", + "items": { + "anyOf": [ + { "$ref": "#/components/schemas/TextPartInput" }, + { "$ref": "#/components/schemas/FilePartInput" }, + { "$ref": "#/components/schemas/AgentPartInput" }, + { "$ref": "#/components/schemas/SubtaskPartInput" } + ] + } + } + }, + "required": ["parts"] + } + } + } + } + } + }, + "/session/{sessionID}/message/{messageID}": { + "get": { + "operationId": "session.message", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { + "in": "path", + "name": "sessionID", + "schema": { "type": "string" }, + "required": true, + "description": "Session ID" + }, + { + "in": "path", + "name": "messageID", + "schema": { "type": "string" }, + "required": true, + "description": "Message ID" + } + ], + "summary": "Get message", + "description": "Retrieve a specific message from a session by its message ID.", + "responses": { + "200": { + "description": "Message", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "info": { "$ref": "#/components/schemas/Message" }, + "parts": { "type": "array", "items": { "$ref": "#/components/schemas/Part" } } + }, + "required": ["info", "parts"] + } + } + } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + } + } + }, + "/session/{sessionID}/message/{messageID}/part/{partID}": { + "delete": { + "operationId": "part.delete", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { + "in": "path", + "name": "sessionID", + "schema": { "type": "string" }, + "required": true, + "description": "Session ID" + }, + { + "in": "path", + "name": "messageID", + "schema": { "type": "string" }, + "required": true, + "description": "Message ID" + }, + { "in": "path", "name": "partID", "schema": { "type": "string" }, "required": true, "description": "Part ID" } + ], + "description": "Delete a part from a message", + "responses": { + "200": { + "description": "Successfully deleted part", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + } + }, + "patch": { + "operationId": "part.update", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { + "in": "path", + "name": "sessionID", + "schema": { "type": "string" }, + "required": true, + "description": "Session ID" + }, + { + "in": "path", + "name": "messageID", + "schema": { "type": "string" }, + "required": true, + "description": "Message ID" + }, + { "in": "path", "name": "partID", "schema": { "type": "string" }, "required": true, "description": "Part ID" } + ], + "description": "Update a part in a message", + "responses": { + "200": { + "description": "Successfully updated part", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Part" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + }, + "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Part" } } } } + } + }, + "/session/{sessionID}/prompt_async": { + "post": { + "operationId": "session.prompt_async", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { + "in": "path", + "name": "sessionID", + "schema": { "type": "string" }, + "required": true, + "description": "Session ID" + } + ], + "summary": "Send async message", + "description": "Create and send a new message to a session asynchronously, starting the session if needed and returning immediately.", + "responses": { + "204": { "description": "Prompt accepted" }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "messageID": { "type": "string", "pattern": "^msg.*" }, + "model": { + "type": "object", + "properties": { "providerID": { "type": "string" }, "modelID": { "type": "string" } }, + "required": ["providerID", "modelID"] + }, + "agent": { "type": "string" }, + "noReply": { "type": "boolean" }, + "tools": { + "description": "@deprecated tools and permissions have been merged, you can set permissions on the session itself now", + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "type": "boolean" } + }, + "system": { "type": "string" }, + "variant": { "type": "string" }, + "parts": { + "type": "array", + "items": { + "anyOf": [ + { "$ref": "#/components/schemas/TextPartInput" }, + { "$ref": "#/components/schemas/FilePartInput" }, + { "$ref": "#/components/schemas/AgentPartInput" }, + { "$ref": "#/components/schemas/SubtaskPartInput" } + ] + } + } + }, + "required": ["parts"] + } + } + } + } + } + }, + "/session/{sessionID}/command": { + "post": { + "operationId": "session.command", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { + "in": "path", + "name": "sessionID", + "schema": { "type": "string" }, + "required": true, + "description": "Session ID" + } + ], + "summary": "Send command", + "description": "Send a new command to a session for execution by the AI assistant.", + "responses": { + "200": { + "description": "Created message", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "info": { "$ref": "#/components/schemas/AssistantMessage" }, + "parts": { "type": "array", "items": { "$ref": "#/components/schemas/Part" } } + }, + "required": ["info", "parts"] + } + } + } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "messageID": { "type": "string", "pattern": "^msg.*" }, + "agent": { "type": "string" }, + "model": { "type": "string" }, + "arguments": { "type": "string" }, + "command": { "type": "string" }, + "variant": { "type": "string" }, + "parts": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "object", + "properties": { + "id": { "type": "string" }, + "type": { "type": "string", "const": "file" }, + "mime": { "type": "string" }, + "filename": { "type": "string" }, + "url": { "type": "string" }, + "source": { "$ref": "#/components/schemas/FilePartSource" } + }, + "required": ["type", "mime", "url"] + } + ] + } + } + }, + "required": ["arguments", "command"] + } + } + } + } + } + }, + "/session/{sessionID}/shell": { + "post": { + "operationId": "session.shell", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { + "in": "path", + "name": "sessionID", + "schema": { "type": "string" }, + "required": true, + "description": "Session ID" + } + ], + "summary": "Run shell command", + "description": "Execute a shell command within the session context and return the AI's response.", + "responses": { + "200": { + "description": "Created message", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssistantMessage" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "agent": { "type": "string" }, + "model": { + "type": "object", + "properties": { "providerID": { "type": "string" }, "modelID": { "type": "string" } }, + "required": ["providerID", "modelID"] + }, + "command": { "type": "string" } + }, + "required": ["agent", "command"] + } + } + } + } + } + }, + "/session/{sessionID}/revert": { + "post": { + "operationId": "session.revert", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true } + ], + "summary": "Revert message", + "description": "Revert a specific message in a session, undoing its effects and restoring the previous state.", + "responses": { + "200": { + "description": "Updated session", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Session" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "messageID": { "type": "string", "pattern": "^msg.*" }, + "partID": { "type": "string", "pattern": "^prt.*" } + }, + "required": ["messageID"] + } + } + } + } + } + }, + "/session/{sessionID}/unrevert": { + "post": { + "operationId": "session.unrevert", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true } + ], + "summary": "Restore reverted messages", + "description": "Restore all previously reverted messages in a session.", + "responses": { + "200": { + "description": "Updated session", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Session" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + } + } + }, + "/session/{sessionID}/permissions/{permissionID}": { + "post": { + "operationId": "permission.respond", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "sessionID", "schema": { "type": "string" }, "required": true }, + { "in": "path", "name": "permissionID", "schema": { "type": "string" }, "required": true } + ], + "summary": "Respond to permission", + "deprecated": true, + "description": "Approve or deny a permission request from the AI assistant.", + "responses": { + "200": { + "description": "Permission processed successfully", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { "response": { "type": "string", "enum": ["once", "always", "reject"] } }, + "required": ["response"] + } + } + } + } + } + }, + "/permission/{requestID}/reply": { + "post": { + "operationId": "permission.reply", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "requestID", "schema": { "type": "string" }, "required": true } + ], + "summary": "Respond to permission request", + "description": "Approve or deny a permission request from the AI assistant.", + "responses": { + "200": { + "description": "Permission processed successfully", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "reply": { "type": "string", "enum": ["once", "always", "reject"] }, + "message": { "type": "string" } + }, + "required": ["reply"] + } + } + } + } + } + }, + "/permission": { + "get": { + "operationId": "permission.list", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "List pending permissions", + "description": "Get all pending permission requests across all sessions.", + "responses": { + "200": { + "description": "List of pending permissions", + "content": { + "application/json": { + "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PermissionRequest" } } + } + } + } + } + } + }, + "/question": { + "get": { + "operationId": "question.list", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "List pending questions", + "description": "Get all pending question requests across all sessions.", + "responses": { + "200": { + "description": "List of pending questions", + "content": { + "application/json": { + "schema": { "type": "array", "items": { "$ref": "#/components/schemas/QuestionRequest" } } + } + } + } + } + } + }, + "/question/{requestID}/reply": { + "post": { + "operationId": "question.reply", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "requestID", "schema": { "type": "string" }, "required": true } + ], + "summary": "Reply to question request", + "description": "Provide answers to a question request from the AI assistant.", + "responses": { + "200": { + "description": "Question answered successfully", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "answers": { + "description": "User answers in order of questions (each answer is an array of selected labels)", + "type": "array", + "items": { "$ref": "#/components/schemas/QuestionAnswer" } + } + }, + "required": ["answers"] + } + } + } + } + } + }, + "/question/{requestID}/reject": { + "post": { + "operationId": "question.reject", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "requestID", "schema": { "type": "string" }, "required": true } + ], + "summary": "Reject question request", + "description": "Reject a question request from the AI assistant.", + "responses": { + "200": { + "description": "Question rejected successfully", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + } + } + }, + "/provider": { + "get": { + "operationId": "provider.list", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "List providers", + "description": "Get a list of all available AI providers, including both available and connected ones.", + "responses": { + "200": { + "description": "List of providers", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "all": { + "type": "array", + "items": { + "type": "object", + "properties": { + "api": { "type": "string" }, + "name": { "type": "string" }, + "env": { "type": "array", "items": { "type": "string" } }, + "id": { "type": "string" }, + "npm": { "type": "string" }, + "models": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "name": { "type": "string" }, + "family": { "type": "string" }, + "release_date": { "type": "string" }, + "attachment": { "type": "boolean" }, + "reasoning": { "type": "boolean" }, + "temperature": { "type": "boolean" }, + "tool_call": { "type": "boolean" }, + "interleaved": { + "anyOf": [ + { "type": "boolean", "const": true }, + { + "type": "object", + "properties": { + "field": { + "type": "string", + "enum": ["reasoning_content", "reasoning_details"] + } + }, + "required": ["field"], + "additionalProperties": false + } + ] + }, + "cost": { + "type": "object", + "properties": { + "input": { "type": "number" }, + "output": { "type": "number" }, + "cache_read": { "type": "number" }, + "cache_write": { "type": "number" }, + "context_over_200k": { + "type": "object", + "properties": { + "input": { "type": "number" }, + "output": { "type": "number" }, + "cache_read": { "type": "number" }, + "cache_write": { "type": "number" } + }, + "required": ["input", "output"] + } + }, + "required": ["input", "output"] + }, + "limit": { + "type": "object", + "properties": { + "context": { "type": "number" }, + "input": { "type": "number" }, + "output": { "type": "number" } + }, + "required": ["context", "output"] + }, + "modalities": { + "type": "object", + "properties": { + "input": { + "type": "array", + "items": { "type": "string", "enum": ["text", "audio", "image", "video", "pdf"] } + }, + "output": { + "type": "array", + "items": { "type": "string", "enum": ["text", "audio", "image", "video", "pdf"] } + } + }, + "required": ["input", "output"] + }, + "experimental": { "type": "boolean" }, + "status": { "type": "string", "enum": ["alpha", "beta", "deprecated"] }, + "options": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": {} + }, + "headers": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "type": "string" } + }, + "provider": { + "type": "object", + "properties": { "npm": { "type": "string" } }, + "required": ["npm"] + }, + "variants": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": {} + } + } + }, + "required": [ + "id", + "name", + "release_date", + "attachment", + "reasoning", + "temperature", + "tool_call", + "limit", + "options" + ] + } + } + }, + "required": ["name", "env", "id", "models"] + } + }, + "default": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "type": "string" } + }, + "connected": { "type": "array", "items": { "type": "string" } } + }, + "required": ["all", "default", "connected"] + } + } + } + } + } + } + }, + "/provider/auth": { + "get": { + "operationId": "provider.auth", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Get provider auth methods", + "description": "Retrieve available authentication methods for all AI providers.", + "responses": { + "200": { + "description": "Provider auth methods", + "content": { + "application/json": { + "schema": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { + "type": "array", + "items": { "$ref": "#/components/schemas/ProviderAuthMethod" } + } + } + } + } + } + } + } + }, + "/provider/{providerID}/oauth/authorize": { + "post": { + "operationId": "provider.oauth.authorize", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { + "in": "path", + "name": "providerID", + "schema": { "type": "string" }, + "required": true, + "description": "Provider ID" + } + ], + "summary": "OAuth authorize", + "description": "Initiate OAuth authorization for a specific AI provider to get an authorization URL.", + "responses": { + "200": { + "description": "Authorization URL and method", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/ProviderAuthAuthorization" } } + } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { "method": { "description": "Auth method index", "type": "number" } }, + "required": ["method"] + } + } + } + } + } + }, + "/provider/{providerID}/oauth/callback": { + "post": { + "operationId": "provider.oauth.callback", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { + "in": "path", + "name": "providerID", + "schema": { "type": "string" }, + "required": true, + "description": "Provider ID" + } + ], + "summary": "OAuth callback", + "description": "Handle the OAuth callback from a provider after user authorization.", + "responses": { + "200": { + "description": "OAuth callback processed successfully", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "method": { "description": "Auth method index", "type": "number" }, + "code": { "description": "OAuth authorization code", "type": "string" } + }, + "required": ["method"] + } + } + } + } + } + }, + "/find": { + "get": { + "operationId": "find.text", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "query", "name": "pattern", "schema": { "type": "string" }, "required": true } + ], + "summary": "Find text", + "description": "Search for text patterns across files in the project using ripgrep.", + "responses": { + "200": { + "description": "Matches", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "path": { + "type": "object", + "properties": { "text": { "type": "string" } }, + "required": ["text"] + }, + "lines": { + "type": "object", + "properties": { "text": { "type": "string" } }, + "required": ["text"] + }, + "line_number": { "type": "number" }, + "absolute_offset": { "type": "number" }, + "submatches": { + "type": "array", + "items": { + "type": "object", + "properties": { + "match": { + "type": "object", + "properties": { "text": { "type": "string" } }, + "required": ["text"] + }, + "start": { "type": "number" }, + "end": { "type": "number" } + }, + "required": ["match", "start", "end"] + } + } + }, + "required": ["path", "lines", "line_number", "absolute_offset", "submatches"] + } + } + } + } + } + } + } + }, + "/find/file": { + "get": { + "operationId": "find.files", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "query", "name": "query", "schema": { "type": "string" }, "required": true }, + { "in": "query", "name": "dirs", "schema": { "type": "string", "enum": ["true", "false"] } }, + { "in": "query", "name": "type", "schema": { "type": "string", "enum": ["file", "directory"] } }, + { "in": "query", "name": "limit", "schema": { "type": "integer", "minimum": 1, "maximum": 200 } } + ], + "summary": "Find files", + "description": "Search for files or directories by name or pattern in the project directory.", + "responses": { + "200": { + "description": "File paths", + "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } + } + } + } + }, + "/find/symbol": { + "get": { + "operationId": "find.symbols", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "query", "name": "query", "schema": { "type": "string" }, "required": true } + ], + "summary": "Find symbols", + "description": "Search for workspace symbols like functions, classes, and variables using LSP.", + "responses": { + "200": { + "description": "Symbols", + "content": { + "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Symbol" } } } + } + } + } + } + }, + "/file": { + "get": { + "operationId": "file.list", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "query", "name": "path", "schema": { "type": "string" }, "required": true } + ], + "summary": "List files", + "description": "List files and directories in a specified path.", + "responses": { + "200": { + "description": "Files and directories", + "content": { + "application/json": { + "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FileNode" } } + } + } + } + } + } + }, + "/file/content": { + "get": { + "operationId": "file.read", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "query", "name": "path", "schema": { "type": "string" }, "required": true } + ], + "summary": "Read file", + "description": "Read the content of a specified file.", + "responses": { + "200": { + "description": "File content", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FileContent" } } } + } + } + } + }, + "/file/status": { + "get": { + "operationId": "file.status", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Get file status", + "description": "Get the git status of all files in the project.", + "responses": { + "200": { + "description": "File status", + "content": { + "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/File" } } } + } + } + } + } + }, + "/mcp": { + "get": { + "operationId": "mcp.status", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Get MCP status", + "description": "Get the status of all Model Context Protocol (MCP) servers.", + "responses": { + "200": { + "description": "MCP server status", + "content": { + "application/json": { + "schema": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "$ref": "#/components/schemas/MCPStatus" } + } + } + } + } + } + }, + "post": { + "operationId": "mcp.add", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Add MCP server", + "description": "Dynamically add a new Model Context Protocol (MCP) server to the system.", + "responses": { + "200": { + "description": "MCP server added successfully", + "content": { + "application/json": { + "schema": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "$ref": "#/components/schemas/MCPStatus" } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "config": { + "anyOf": [ + { "$ref": "#/components/schemas/McpLocalConfig" }, + { "$ref": "#/components/schemas/McpRemoteConfig" } + ] + } + }, + "required": ["name", "config"] + } + } + } + } + } + }, + "/mcp/{name}/auth": { + "post": { + "operationId": "mcp.auth.start", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "schema": { "type": "string" }, "in": "path", "name": "name", "required": true } + ], + "summary": "Start MCP OAuth", + "description": "Start OAuth authentication flow for a Model Context Protocol (MCP) server.", + "responses": { + "200": { + "description": "OAuth flow started", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "authorizationUrl": { "description": "URL to open in browser for authorization", "type": "string" } + }, + "required": ["authorizationUrl"] + } + } + } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + } + }, + "delete": { + "operationId": "mcp.auth.remove", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "schema": { "type": "string" }, "in": "path", "name": "name", "required": true } + ], + "summary": "Remove MCP OAuth", + "description": "Remove OAuth credentials for an MCP server", + "responses": { + "200": { + "description": "OAuth credentials removed", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { "success": { "type": "boolean", "const": true } }, + "required": ["success"] + } + } + } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + } + } + }, + "/mcp/{name}/auth/callback": { + "post": { + "operationId": "mcp.auth.callback", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "schema": { "type": "string" }, "in": "path", "name": "name", "required": true } + ], + "summary": "Complete MCP OAuth", + "description": "Complete OAuth authentication for a Model Context Protocol (MCP) server using the authorization code.", + "responses": { + "200": { + "description": "OAuth authentication completed", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MCPStatus" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { "code": { "description": "Authorization code from OAuth callback", "type": "string" } }, + "required": ["code"] + } + } + } + } + } + }, + "/mcp/{name}/auth/authenticate": { + "post": { + "operationId": "mcp.auth.authenticate", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "schema": { "type": "string" }, "in": "path", "name": "name", "required": true } + ], + "summary": "Authenticate MCP OAuth", + "description": "Start OAuth flow and wait for callback (opens browser)", + "responses": { + "200": { + "description": "OAuth authentication completed", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MCPStatus" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + } + } + }, + "/mcp/{name}/connect": { + "post": { + "operationId": "mcp.connect", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "name", "schema": { "type": "string" }, "required": true } + ], + "description": "Connect an MCP server", + "responses": { + "200": { + "description": "MCP server connected successfully", + "content": { "application/json": { "schema": { "type": "boolean" } } } + } + } + } + }, + "/mcp/{name}/disconnect": { + "post": { + "operationId": "mcp.disconnect", + "parameters": [ + { "in": "query", "name": "directory", "schema": { "type": "string" } }, + { "in": "path", "name": "name", "schema": { "type": "string" }, "required": true } + ], + "description": "Disconnect an MCP server", + "responses": { + "200": { + "description": "MCP server disconnected successfully", + "content": { "application/json": { "schema": { "type": "boolean" } } } + } + } + } + }, + "/tui/append-prompt": { + "post": { + "operationId": "tui.appendPrompt", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Append TUI prompt", + "description": "Append prompt to the TUI", + "responses": { + "200": { + "description": "Prompt processed successfully", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { "type": "object", "properties": { "text": { "type": "string" } }, "required": ["text"] } + } + } + } + } + }, + "/tui/open-help": { + "post": { + "operationId": "tui.openHelp", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Open help dialog", + "description": "Open the help dialog in the TUI to display user assistance information.", + "responses": { + "200": { + "description": "Help dialog opened successfully", + "content": { "application/json": { "schema": { "type": "boolean" } } } + } + } + } + }, + "/tui/open-sessions": { + "post": { + "operationId": "tui.openSessions", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Open sessions dialog", + "description": "Open the session dialog", + "responses": { + "200": { + "description": "Session dialog opened successfully", + "content": { "application/json": { "schema": { "type": "boolean" } } } + } + } + } + }, + "/tui/open-themes": { + "post": { + "operationId": "tui.openThemes", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Open themes dialog", + "description": "Open the theme dialog", + "responses": { + "200": { + "description": "Theme dialog opened successfully", + "content": { "application/json": { "schema": { "type": "boolean" } } } + } + } + } + }, + "/tui/open-models": { + "post": { + "operationId": "tui.openModels", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Open models dialog", + "description": "Open the model dialog", + "responses": { + "200": { + "description": "Model dialog opened successfully", + "content": { "application/json": { "schema": { "type": "boolean" } } } + } + } + } + }, + "/tui/submit-prompt": { + "post": { + "operationId": "tui.submitPrompt", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Submit TUI prompt", + "description": "Submit the prompt", + "responses": { + "200": { + "description": "Prompt submitted successfully", + "content": { "application/json": { "schema": { "type": "boolean" } } } + } + } + } + }, + "/tui/clear-prompt": { + "post": { + "operationId": "tui.clearPrompt", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Clear TUI prompt", + "description": "Clear the prompt", + "responses": { + "200": { + "description": "Prompt cleared successfully", + "content": { "application/json": { "schema": { "type": "boolean" } } } + } + } + } + }, + "/tui/execute-command": { + "post": { + "operationId": "tui.executeCommand", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Execute TUI command", + "description": "Execute a TUI command (e.g. agent_cycle)", + "responses": { + "200": { + "description": "Command executed successfully", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { "type": "object", "properties": { "command": { "type": "string" } }, "required": ["command"] } + } + } + } + } + }, + "/tui/show-toast": { + "post": { + "operationId": "tui.showToast", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Show TUI toast", + "description": "Show a toast notification in the TUI", + "responses": { + "200": { + "description": "Toast notification shown successfully", + "content": { "application/json": { "schema": { "type": "boolean" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "title": { "type": "string" }, + "message": { "type": "string" }, + "variant": { "type": "string", "enum": ["info", "success", "warning", "error"] }, + "duration": { "description": "Duration in milliseconds", "default": 5000, "type": "number" } + }, + "required": ["message", "variant"] + } + } + } + } + } + }, + "/tui/publish": { + "post": { + "operationId": "tui.publish", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Publish TUI event", + "description": "Publish a TUI event", + "responses": { + "200": { + "description": "Event published successfully", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "anyOf": [ + { "$ref": "#/components/schemas/Event.tui.prompt.append" }, + { "$ref": "#/components/schemas/Event.tui.command.execute" }, + { "$ref": "#/components/schemas/Event.tui.toast.show" }, + { "$ref": "#/components/schemas/Event.tui.session.select" } + ] + } + } + } + } + } + }, + "/tui/select-session": { + "post": { + "operationId": "tui.selectSession", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Select session", + "description": "Navigate the TUI to display the specified session.", + "responses": { + "200": { + "description": "Session selected successfully", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + }, + "404": { + "description": "Not found", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotFoundError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "sessionID": { "description": "Session ID to navigate to", "type": "string", "pattern": "^ses" } + }, + "required": ["sessionID"] + } + } + } + } + } + }, + "/tui/control/next": { + "get": { + "operationId": "tui.control.next", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Get next TUI request", + "description": "Retrieve the next TUI (Terminal User Interface) request from the queue for processing.", + "responses": { + "200": { + "description": "Next TUI request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { "path": { "type": "string" }, "body": {} }, + "required": ["path", "body"] + } + } + } + } + } + } + }, + "/tui/control/response": { + "post": { + "operationId": "tui.control.response", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Submit TUI response", + "description": "Submit a response to the TUI request queue to complete a pending request.", + "responses": { + "200": { + "description": "Response submitted successfully", + "content": { "application/json": { "schema": { "type": "boolean" } } } + } + }, + "requestBody": { "content": { "application/json": { "schema": {} } } } + } + }, + "/instance/dispose": { + "post": { + "operationId": "instance.dispose", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Dispose instance", + "description": "Clean up and dispose the current OpenCode instance, releasing all resources.", + "responses": { + "200": { + "description": "Instance disposed", + "content": { "application/json": { "schema": { "type": "boolean" } } } + } + } + } + }, + "/path": { + "get": { + "operationId": "path.get", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Get paths", + "description": "Retrieve the current working directory and related path information for the OpenCode instance.", + "responses": { + "200": { + "description": "Path", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Path" } } } + } + } + } + }, + "/vcs": { + "get": { + "operationId": "vcs.get", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Get VCS info", + "description": "Retrieve version control system (VCS) information for the current project, such as git branch.", + "responses": { + "200": { + "description": "VCS info", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VcsInfo" } } } + } + } + } + }, + "/command": { + "get": { + "operationId": "command.list", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "List commands", + "description": "Get a list of all available commands in the OpenCode system.", + "responses": { + "200": { + "description": "List of commands", + "content": { + "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Command" } } } + } + } + } + } + }, + "/log": { + "post": { + "operationId": "app.log", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Write log", + "description": "Write a log entry to the server logs with specified level and metadata.", + "responses": { + "200": { + "description": "Log entry written successfully", + "content": { "application/json": { "schema": { "type": "boolean" } } } + }, + "400": { + "description": "Bad request", + "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BadRequestError" } } } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "service": { "description": "Service name for the log entry", "type": "string" }, + "level": { "description": "Log level", "type": "string", "enum": ["debug", "info", "error", "warn"] }, + "message": { "description": "Log message", "type": "string" }, + "extra": { + "description": "Additional metadata for the log entry", + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": {} + } + }, + "required": ["service", "level", "message"] + } + } + } + } + } + }, + "/agent": { + "get": { + "operationId": "app.agents", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "List agents", + "description": "Get a list of all available AI agents in the OpenCode system.", + "responses": { + "200": { + "description": "List of agents", + "content": { + "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Agent" } } } + } + } + } + } + }, + "/skill": { + "get": { + "operationId": "app.skills", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "List skills", + "description": "Get a list of all available skills in the OpenCode system.", + "responses": { + "200": { + "description": "List of skills", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "description": { "type": "string" }, + "location": { "type": "string" }, + "content": { "type": "string" } + }, + "required": ["name", "description", "location", "content"] + } + } + } + } + } + } + } + }, + "/lsp": { + "get": { + "operationId": "lsp.status", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Get LSP status", + "description": "Get LSP server status", + "responses": { + "200": { + "description": "LSP server status", + "content": { + "application/json": { + "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LSPStatus" } } + } + } + } + } + } + }, + "/formatter": { + "get": { + "operationId": "formatter.status", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Get formatter status", + "description": "Get formatter status", + "responses": { + "200": { + "description": "Formatter status", + "content": { + "application/json": { + "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FormatterStatus" } } + } + } + } + } + } + }, + "/event": { + "get": { + "operationId": "event.subscribe", + "parameters": [{ "in": "query", "name": "directory", "schema": { "type": "string" } }], + "summary": "Subscribe to events", + "description": "Get events", + "responses": { + "200": { + "description": "Event stream", + "content": { "text/event-stream": { "schema": { "$ref": "#/components/schemas/Event" } } } + } + } + } + } + }, + "components": { + "schemas": { + "Event.server.connected": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "server.connected" }, + "properties": { "type": "object", "properties": {} } + }, + "required": ["type", "properties"] + }, + "Event.global.disposed": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "global.disposed" }, + "properties": { "type": "object", "properties": {} } + }, + "required": ["type", "properties"] + }, + "Event.tui.prompt.append": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "tui.prompt.append" }, + "properties": { "type": "object", "properties": { "text": { "type": "string" } }, "required": ["text"] } + }, + "required": ["type", "properties"] + }, + "Event.tui.command.execute": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "tui.command.execute" }, + "properties": { + "type": "object", + "properties": { + "command": { + "anyOf": [ + { + "type": "string", + "enum": [ + "session.list", + "session.new", + "session.share", + "session.interrupt", + "session.compact", + "session.page.up", + "session.page.down", + "session.line.up", + "session.line.down", + "session.half.page.up", + "session.half.page.down", + "session.first", + "session.last", + "prompt.clear", + "prompt.submit", + "agent.cycle" + ] + }, + { "type": "string" } + ] + } + }, + "required": ["command"] + } + }, + "required": ["type", "properties"] + }, + "Event.tui.toast.show": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "tui.toast.show" }, + "properties": { + "type": "object", + "properties": { + "title": { "type": "string" }, + "message": { "type": "string" }, + "variant": { "type": "string", "enum": ["info", "success", "warning", "error"] }, + "duration": { "description": "Duration in milliseconds", "default": 5000, "type": "number" } + }, + "required": ["message", "variant"] + } + }, + "required": ["type", "properties"] + }, + "Event.tui.session.select": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "tui.session.select" }, + "properties": { + "type": "object", + "properties": { + "sessionID": { "description": "Session ID to navigate to", "type": "string", "pattern": "^ses" } + }, + "required": ["sessionID"] + } + }, + "required": ["type", "properties"] + }, + "Event.installation.updated": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "installation.updated" }, + "properties": { "type": "object", "properties": { "version": { "type": "string" } }, "required": ["version"] } + }, + "required": ["type", "properties"] + }, + "Event.installation.update-available": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "installation.update-available" }, + "properties": { "type": "object", "properties": { "version": { "type": "string" } }, "required": ["version"] } + }, + "required": ["type", "properties"] + }, + "Project": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "worktree": { "type": "string" }, + "vcs": { "type": "string", "const": "git" }, + "name": { "type": "string" }, + "icon": { + "type": "object", + "properties": { + "url": { "type": "string" }, + "override": { "type": "string" }, + "color": { "type": "string" } + } + }, + "commands": { + "type": "object", + "properties": { + "start": { + "description": "Startup script to run when creating a new workspace (worktree)", + "type": "string" + } + } + }, + "time": { + "type": "object", + "properties": { + "created": { "type": "number" }, + "updated": { "type": "number" }, + "initialized": { "type": "number" } + }, + "required": ["created", "updated"] + }, + "sandboxes": { "type": "array", "items": { "type": "string" } } + }, + "required": ["id", "worktree", "time", "sandboxes"] + }, + "Event.project.updated": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "project.updated" }, + "properties": { "$ref": "#/components/schemas/Project" } + }, + "required": ["type", "properties"] + }, + "Event.server.instance.disposed": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "server.instance.disposed" }, + "properties": { + "type": "object", + "properties": { "directory": { "type": "string" } }, + "required": ["directory"] + } + }, + "required": ["type", "properties"] + }, + "Event.file.edited": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "file.edited" }, + "properties": { "type": "object", "properties": { "file": { "type": "string" } }, "required": ["file"] } + }, + "required": ["type", "properties"] + }, + "Event.worktree.ready": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "worktree.ready" }, + "properties": { + "type": "object", + "properties": { "name": { "type": "string" }, "branch": { "type": "string" } }, + "required": ["name", "branch"] + } + }, + "required": ["type", "properties"] + }, + "Event.worktree.failed": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "worktree.failed" }, + "properties": { "type": "object", "properties": { "message": { "type": "string" } }, "required": ["message"] } + }, + "required": ["type", "properties"] + }, + "Event.lsp.client.diagnostics": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "lsp.client.diagnostics" }, + "properties": { + "type": "object", + "properties": { "serverID": { "type": "string" }, "path": { "type": "string" } }, + "required": ["serverID", "path"] + } + }, + "required": ["type", "properties"] + }, + "PermissionRequest": { + "type": "object", + "properties": { + "id": { "type": "string", "pattern": "^per.*" }, + "sessionID": { "type": "string", "pattern": "^ses.*" }, + "permission": { "type": "string" }, + "patterns": { "type": "array", "items": { "type": "string" } }, + "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, + "always": { "type": "array", "items": { "type": "string" } }, + "tool": { + "type": "object", + "properties": { "messageID": { "type": "string" }, "callID": { "type": "string" } }, + "required": ["messageID", "callID"] + } + }, + "required": ["id", "sessionID", "permission", "patterns", "metadata", "always"] + }, + "Event.permission.asked": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "permission.asked" }, + "properties": { "$ref": "#/components/schemas/PermissionRequest" } + }, + "required": ["type", "properties"] + }, + "Event.permission.replied": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "permission.replied" }, + "properties": { + "type": "object", + "properties": { + "sessionID": { "type": "string" }, + "requestID": { "type": "string" }, + "reply": { "type": "string", "enum": ["once", "always", "reject"] } + }, + "required": ["sessionID", "requestID", "reply"] + } + }, + "required": ["type", "properties"] + }, + "SessionStatus": { + "anyOf": [ + { "type": "object", "properties": { "type": { "type": "string", "const": "idle" } }, "required": ["type"] }, + { + "type": "object", + "properties": { + "type": { "type": "string", "const": "retry" }, + "attempt": { "type": "number" }, + "message": { "type": "string" }, + "next": { "type": "number" } + }, + "required": ["type", "attempt", "message", "next"] + }, + { "type": "object", "properties": { "type": { "type": "string", "const": "busy" } }, "required": ["type"] } + ] + }, + "Event.session.status": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "session.status" }, + "properties": { + "type": "object", + "properties": { + "sessionID": { "type": "string" }, + "status": { "$ref": "#/components/schemas/SessionStatus" } + }, + "required": ["sessionID", "status"] + } + }, + "required": ["type", "properties"] + }, + "Event.session.idle": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "session.idle" }, + "properties": { + "type": "object", + "properties": { "sessionID": { "type": "string" } }, + "required": ["sessionID"] + } + }, + "required": ["type", "properties"] + }, + "QuestionOption": { + "type": "object", + "properties": { + "label": { "description": "Display text (1-5 words, concise)", "type": "string" }, + "description": { "description": "Explanation of choice", "type": "string" } + }, + "required": ["label", "description"] + }, + "QuestionInfo": { + "type": "object", + "properties": { + "question": { "description": "Complete question", "type": "string" }, + "header": { "description": "Very short label (max 30 chars)", "type": "string" }, + "options": { + "description": "Available choices", + "type": "array", + "items": { "$ref": "#/components/schemas/QuestionOption" } + }, + "multiple": { "description": "Allow selecting multiple choices", "type": "boolean" }, + "custom": { "description": "Allow typing a custom answer (default: true)", "type": "boolean" } + }, + "required": ["question", "header", "options"] + }, + "QuestionRequest": { + "type": "object", + "properties": { + "id": { "type": "string", "pattern": "^que.*" }, + "sessionID": { "type": "string", "pattern": "^ses.*" }, + "questions": { + "description": "Questions to ask", + "type": "array", + "items": { "$ref": "#/components/schemas/QuestionInfo" } + }, + "tool": { + "type": "object", + "properties": { "messageID": { "type": "string" }, "callID": { "type": "string" } }, + "required": ["messageID", "callID"] + } + }, + "required": ["id", "sessionID", "questions"] + }, + "Event.question.asked": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "question.asked" }, + "properties": { "$ref": "#/components/schemas/QuestionRequest" } + }, + "required": ["type", "properties"] + }, + "QuestionAnswer": { "type": "array", "items": { "type": "string" } }, + "Event.question.replied": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "question.replied" }, + "properties": { + "type": "object", + "properties": { + "sessionID": { "type": "string" }, + "requestID": { "type": "string" }, + "answers": { "type": "array", "items": { "$ref": "#/components/schemas/QuestionAnswer" } } + }, + "required": ["sessionID", "requestID", "answers"] + } + }, + "required": ["type", "properties"] + }, + "Event.question.rejected": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "question.rejected" }, + "properties": { + "type": "object", + "properties": { "sessionID": { "type": "string" }, "requestID": { "type": "string" } }, + "required": ["sessionID", "requestID"] + } + }, + "required": ["type", "properties"] + }, + "Todo": { + "type": "object", + "properties": { + "content": { "description": "Brief description of the task", "type": "string" }, + "status": { + "description": "Current status of the task: pending, in_progress, completed, cancelled", + "type": "string" + }, + "priority": { "description": "Priority level of the task: high, medium, low", "type": "string" }, + "id": { "description": "Unique identifier for the todo item", "type": "string" } + }, + "required": ["content", "status", "priority", "id"] + }, + "Event.todo.updated": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "todo.updated" }, + "properties": { + "type": "object", + "properties": { + "sessionID": { "type": "string" }, + "todos": { "type": "array", "items": { "$ref": "#/components/schemas/Todo" } } + }, + "required": ["sessionID", "todos"] + } + }, + "required": ["type", "properties"] + }, + "Pty": { + "type": "object", + "properties": { + "id": { "type": "string", "pattern": "^pty.*" }, + "title": { "type": "string" }, + "command": { "type": "string" }, + "args": { "type": "array", "items": { "type": "string" } }, + "cwd": { "type": "string" }, + "status": { "type": "string", "enum": ["running", "exited"] }, + "pid": { "type": "number" } + }, + "required": ["id", "title", "command", "args", "cwd", "status", "pid"] + }, + "Event.pty.created": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "pty.created" }, + "properties": { + "type": "object", + "properties": { "info": { "$ref": "#/components/schemas/Pty" } }, + "required": ["info"] + } + }, + "required": ["type", "properties"] + }, + "Event.pty.updated": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "pty.updated" }, + "properties": { + "type": "object", + "properties": { "info": { "$ref": "#/components/schemas/Pty" } }, + "required": ["info"] + } + }, + "required": ["type", "properties"] + }, + "Event.pty.exited": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "pty.exited" }, + "properties": { + "type": "object", + "properties": { "id": { "type": "string", "pattern": "^pty.*" }, "exitCode": { "type": "number" } }, + "required": ["id", "exitCode"] + } + }, + "required": ["type", "properties"] + }, + "Event.pty.deleted": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "pty.deleted" }, + "properties": { + "type": "object", + "properties": { "id": { "type": "string", "pattern": "^pty.*" } }, + "required": ["id"] + } + }, + "required": ["type", "properties"] + }, + "Event.file.watcher.updated": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "file.watcher.updated" }, + "properties": { + "type": "object", + "properties": { + "file": { "type": "string" }, + "event": { + "anyOf": [ + { "type": "string", "const": "add" }, + { "type": "string", "const": "change" }, + { "type": "string", "const": "unlink" } + ] + } + }, + "required": ["file", "event"] + } + }, + "required": ["type", "properties"] + }, + "Event.mcp.tools.changed": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "mcp.tools.changed" }, + "properties": { "type": "object", "properties": { "server": { "type": "string" } }, "required": ["server"] } + }, + "required": ["type", "properties"] + }, + "Event.mcp.browser.open.failed": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "mcp.browser.open.failed" }, + "properties": { + "type": "object", + "properties": { "mcpName": { "type": "string" }, "url": { "type": "string" } }, + "required": ["mcpName", "url"] + } + }, + "required": ["type", "properties"] + }, + "Event.lsp.updated": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "lsp.updated" }, + "properties": { "type": "object", "properties": {} } + }, + "required": ["type", "properties"] + }, + "Event.vcs.branch.updated": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "vcs.branch.updated" }, + "properties": { "type": "object", "properties": { "branch": { "type": "string" } } } + }, + "required": ["type", "properties"] + }, + "Event.command.executed": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "command.executed" }, + "properties": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "sessionID": { "type": "string", "pattern": "^ses.*" }, + "arguments": { "type": "string" }, + "messageID": { "type": "string", "pattern": "^msg.*" } + }, + "required": ["name", "sessionID", "arguments", "messageID"] + } + }, + "required": ["type", "properties"] + }, + "FileDiff": { + "type": "object", + "properties": { + "file": { "type": "string" }, + "before": { "type": "string" }, + "after": { "type": "string" }, + "additions": { "type": "number" }, + "deletions": { "type": "number" } + }, + "required": ["file", "before", "after", "additions", "deletions"] + }, + "UserMessage": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "sessionID": { "type": "string" }, + "role": { "type": "string", "const": "user" }, + "time": { "type": "object", "properties": { "created": { "type": "number" } }, "required": ["created"] }, + "summary": { + "type": "object", + "properties": { + "title": { "type": "string" }, + "body": { "type": "string" }, + "diffs": { "type": "array", "items": { "$ref": "#/components/schemas/FileDiff" } } + }, + "required": ["diffs"] + }, + "agent": { "type": "string" }, + "model": { + "type": "object", + "properties": { "providerID": { "type": "string" }, "modelID": { "type": "string" } }, + "required": ["providerID", "modelID"] + }, + "system": { "type": "string" }, + "tools": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "type": "boolean" } + }, + "variant": { "type": "string" } + }, + "required": ["id", "sessionID", "role", "time", "agent", "model"] + }, + "ProviderAuthError": { + "type": "object", + "properties": { + "name": { "type": "string", "const": "ProviderAuthError" }, + "data": { + "type": "object", + "properties": { "providerID": { "type": "string" }, "message": { "type": "string" } }, + "required": ["providerID", "message"] + } + }, + "required": ["name", "data"] + }, + "UnknownError": { + "type": "object", + "properties": { + "name": { "type": "string", "const": "UnknownError" }, + "data": { "type": "object", "properties": { "message": { "type": "string" } }, "required": ["message"] } + }, + "required": ["name", "data"] + }, + "MessageOutputLengthError": { + "type": "object", + "properties": { + "name": { "type": "string", "const": "MessageOutputLengthError" }, + "data": { "type": "object", "properties": {} } + }, + "required": ["name", "data"] + }, + "MessageAbortedError": { + "type": "object", + "properties": { + "name": { "type": "string", "const": "MessageAbortedError" }, + "data": { "type": "object", "properties": { "message": { "type": "string" } }, "required": ["message"] } + }, + "required": ["name", "data"] + }, + "APIError": { + "type": "object", + "properties": { + "name": { "type": "string", "const": "APIError" }, + "data": { + "type": "object", + "properties": { + "message": { "type": "string" }, + "statusCode": { "type": "number" }, + "isRetryable": { "type": "boolean" }, + "responseHeaders": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "type": "string" } + }, + "responseBody": { "type": "string" }, + "metadata": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "type": "string" } + } + }, + "required": ["message", "isRetryable"] + } + }, + "required": ["name", "data"] + }, + "AssistantMessage": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "sessionID": { "type": "string" }, + "role": { "type": "string", "const": "assistant" }, + "time": { + "type": "object", + "properties": { "created": { "type": "number" }, "completed": { "type": "number" } }, + "required": ["created"] + }, + "error": { + "anyOf": [ + { "$ref": "#/components/schemas/ProviderAuthError" }, + { "$ref": "#/components/schemas/UnknownError" }, + { "$ref": "#/components/schemas/MessageOutputLengthError" }, + { "$ref": "#/components/schemas/MessageAbortedError" }, + { "$ref": "#/components/schemas/APIError" } + ] + }, + "parentID": { "type": "string" }, + "modelID": { "type": "string" }, + "providerID": { "type": "string" }, + "mode": { "type": "string" }, + "agent": { "type": "string" }, + "path": { + "type": "object", + "properties": { "cwd": { "type": "string" }, "root": { "type": "string" } }, + "required": ["cwd", "root"] + }, + "summary": { "type": "boolean" }, + "cost": { "type": "number" }, + "tokens": { + "type": "object", + "properties": { + "input": { "type": "number" }, + "output": { "type": "number" }, + "reasoning": { "type": "number" }, + "cache": { + "type": "object", + "properties": { "read": { "type": "number" }, "write": { "type": "number" } }, + "required": ["read", "write"] + } + }, + "required": ["input", "output", "reasoning", "cache"] + }, + "finish": { "type": "string" } + }, + "required": [ + "id", + "sessionID", + "role", + "time", + "parentID", + "modelID", + "providerID", + "mode", + "agent", + "path", + "cost", + "tokens" + ] + }, + "Message": { + "anyOf": [{ "$ref": "#/components/schemas/UserMessage" }, { "$ref": "#/components/schemas/AssistantMessage" }] + }, + "Event.message.updated": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "message.updated" }, + "properties": { + "type": "object", + "properties": { "info": { "$ref": "#/components/schemas/Message" } }, + "required": ["info"] + } + }, + "required": ["type", "properties"] + }, + "Event.message.removed": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "message.removed" }, + "properties": { + "type": "object", + "properties": { "sessionID": { "type": "string" }, "messageID": { "type": "string" } }, + "required": ["sessionID", "messageID"] + } + }, + "required": ["type", "properties"] + }, + "TextPart": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "sessionID": { "type": "string" }, + "messageID": { "type": "string" }, + "type": { "type": "string", "const": "text" }, + "text": { "type": "string" }, + "synthetic": { "type": "boolean" }, + "ignored": { "type": "boolean" }, + "time": { + "type": "object", + "properties": { "start": { "type": "number" }, "end": { "type": "number" } }, + "required": ["start"] + }, + "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } + }, + "required": ["id", "sessionID", "messageID", "type", "text"] + }, + "SubtaskPart": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "sessionID": { "type": "string" }, + "messageID": { "type": "string" }, + "type": { "type": "string", "const": "subtask" }, + "prompt": { "type": "string" }, + "description": { "type": "string" }, + "agent": { "type": "string" }, + "model": { + "type": "object", + "properties": { "providerID": { "type": "string" }, "modelID": { "type": "string" } }, + "required": ["providerID", "modelID"] + }, + "command": { "type": "string" } + }, + "required": ["id", "sessionID", "messageID", "type", "prompt", "description", "agent"] + }, + "ReasoningPart": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "sessionID": { "type": "string" }, + "messageID": { "type": "string" }, + "type": { "type": "string", "const": "reasoning" }, + "text": { "type": "string" }, + "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, + "time": { + "type": "object", + "properties": { "start": { "type": "number" }, "end": { "type": "number" } }, + "required": ["start"] + } + }, + "required": ["id", "sessionID", "messageID", "type", "text", "time"] + }, + "FilePartSourceText": { + "type": "object", + "properties": { + "value": { "type": "string" }, + "start": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "end": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } + }, + "required": ["value", "start", "end"] + }, + "FileSource": { + "type": "object", + "properties": { + "text": { "$ref": "#/components/schemas/FilePartSourceText" }, + "type": { "type": "string", "const": "file" }, + "path": { "type": "string" } + }, + "required": ["text", "type", "path"] + }, + "Range": { + "type": "object", + "properties": { + "start": { + "type": "object", + "properties": { "line": { "type": "number" }, "character": { "type": "number" } }, + "required": ["line", "character"] + }, + "end": { + "type": "object", + "properties": { "line": { "type": "number" }, "character": { "type": "number" } }, + "required": ["line", "character"] + } + }, + "required": ["start", "end"] + }, + "SymbolSource": { + "type": "object", + "properties": { + "text": { "$ref": "#/components/schemas/FilePartSourceText" }, + "type": { "type": "string", "const": "symbol" }, + "path": { "type": "string" }, + "range": { "$ref": "#/components/schemas/Range" }, + "name": { "type": "string" }, + "kind": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } + }, + "required": ["text", "type", "path", "range", "name", "kind"] + }, + "ResourceSource": { + "type": "object", + "properties": { + "text": { "$ref": "#/components/schemas/FilePartSourceText" }, + "type": { "type": "string", "const": "resource" }, + "clientName": { "type": "string" }, + "uri": { "type": "string" } + }, + "required": ["text", "type", "clientName", "uri"] + }, + "FilePartSource": { + "anyOf": [ + { "$ref": "#/components/schemas/FileSource" }, + { "$ref": "#/components/schemas/SymbolSource" }, + { "$ref": "#/components/schemas/ResourceSource" } + ] + }, + "FilePart": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "sessionID": { "type": "string" }, + "messageID": { "type": "string" }, + "type": { "type": "string", "const": "file" }, + "mime": { "type": "string" }, + "filename": { "type": "string" }, + "url": { "type": "string" }, + "source": { "$ref": "#/components/schemas/FilePartSource" } + }, + "required": ["id", "sessionID", "messageID", "type", "mime", "url"] + }, + "ToolStatePending": { + "type": "object", + "properties": { + "status": { "type": "string", "const": "pending" }, + "input": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, + "raw": { "type": "string" } + }, + "required": ["status", "input", "raw"] + }, + "ToolStateRunning": { + "type": "object", + "properties": { + "status": { "type": "string", "const": "running" }, + "input": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, + "title": { "type": "string" }, + "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, + "time": { "type": "object", "properties": { "start": { "type": "number" } }, "required": ["start"] } + }, + "required": ["status", "input", "time"] + }, + "ToolStateCompleted": { + "type": "object", + "properties": { + "status": { "type": "string", "const": "completed" }, + "input": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, + "output": { "type": "string" }, + "title": { "type": "string" }, + "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, + "time": { + "type": "object", + "properties": { + "start": { "type": "number" }, + "end": { "type": "number" }, + "compacted": { "type": "number" } + }, + "required": ["start", "end"] + }, + "attachments": { "type": "array", "items": { "$ref": "#/components/schemas/FilePart" } } + }, + "required": ["status", "input", "output", "title", "metadata", "time"] + }, + "ToolStateError": { + "type": "object", + "properties": { + "status": { "type": "string", "const": "error" }, + "input": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, + "error": { "type": "string" }, + "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, + "time": { + "type": "object", + "properties": { "start": { "type": "number" }, "end": { "type": "number" } }, + "required": ["start", "end"] + } + }, + "required": ["status", "input", "error", "time"] + }, + "ToolState": { + "anyOf": [ + { "$ref": "#/components/schemas/ToolStatePending" }, + { "$ref": "#/components/schemas/ToolStateRunning" }, + { "$ref": "#/components/schemas/ToolStateCompleted" }, + { "$ref": "#/components/schemas/ToolStateError" } + ] + }, + "ToolPart": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "sessionID": { "type": "string" }, + "messageID": { "type": "string" }, + "type": { "type": "string", "const": "tool" }, + "callID": { "type": "string" }, + "tool": { "type": "string" }, + "state": { "$ref": "#/components/schemas/ToolState" }, + "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } + }, + "required": ["id", "sessionID", "messageID", "type", "callID", "tool", "state"] + }, + "StepStartPart": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "sessionID": { "type": "string" }, + "messageID": { "type": "string" }, + "type": { "type": "string", "const": "step-start" }, + "snapshot": { "type": "string" } + }, + "required": ["id", "sessionID", "messageID", "type"] + }, + "StepFinishPart": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "sessionID": { "type": "string" }, + "messageID": { "type": "string" }, + "type": { "type": "string", "const": "step-finish" }, + "reason": { "type": "string" }, + "snapshot": { "type": "string" }, + "cost": { "type": "number" }, + "tokens": { + "type": "object", + "properties": { + "input": { "type": "number" }, + "output": { "type": "number" }, + "reasoning": { "type": "number" }, + "cache": { + "type": "object", + "properties": { "read": { "type": "number" }, "write": { "type": "number" } }, + "required": ["read", "write"] + } + }, + "required": ["input", "output", "reasoning", "cache"] + } + }, + "required": ["id", "sessionID", "messageID", "type", "reason", "cost", "tokens"] + }, + "SnapshotPart": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "sessionID": { "type": "string" }, + "messageID": { "type": "string" }, + "type": { "type": "string", "const": "snapshot" }, + "snapshot": { "type": "string" } + }, + "required": ["id", "sessionID", "messageID", "type", "snapshot"] + }, + "PatchPart": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "sessionID": { "type": "string" }, + "messageID": { "type": "string" }, + "type": { "type": "string", "const": "patch" }, + "hash": { "type": "string" }, + "files": { "type": "array", "items": { "type": "string" } } + }, + "required": ["id", "sessionID", "messageID", "type", "hash", "files"] + }, + "AgentPart": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "sessionID": { "type": "string" }, + "messageID": { "type": "string" }, + "type": { "type": "string", "const": "agent" }, + "name": { "type": "string" }, + "source": { + "type": "object", + "properties": { + "value": { "type": "string" }, + "start": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "end": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } + }, + "required": ["value", "start", "end"] + } + }, + "required": ["id", "sessionID", "messageID", "type", "name"] + }, + "RetryPart": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "sessionID": { "type": "string" }, + "messageID": { "type": "string" }, + "type": { "type": "string", "const": "retry" }, + "attempt": { "type": "number" }, + "error": { "$ref": "#/components/schemas/APIError" }, + "time": { "type": "object", "properties": { "created": { "type": "number" } }, "required": ["created"] } + }, + "required": ["id", "sessionID", "messageID", "type", "attempt", "error", "time"] + }, + "CompactionPart": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "sessionID": { "type": "string" }, + "messageID": { "type": "string" }, + "type": { "type": "string", "const": "compaction" }, + "auto": { "type": "boolean" } + }, + "required": ["id", "sessionID", "messageID", "type", "auto"] + }, + "Part": { + "anyOf": [ + { "$ref": "#/components/schemas/TextPart" }, + { "$ref": "#/components/schemas/SubtaskPart" }, + { "$ref": "#/components/schemas/ReasoningPart" }, + { "$ref": "#/components/schemas/FilePart" }, + { "$ref": "#/components/schemas/ToolPart" }, + { "$ref": "#/components/schemas/StepStartPart" }, + { "$ref": "#/components/schemas/StepFinishPart" }, + { "$ref": "#/components/schemas/SnapshotPart" }, + { "$ref": "#/components/schemas/PatchPart" }, + { "$ref": "#/components/schemas/AgentPart" }, + { "$ref": "#/components/schemas/RetryPart" }, + { "$ref": "#/components/schemas/CompactionPart" } + ] + }, + "Event.message.part.updated": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "message.part.updated" }, + "properties": { + "type": "object", + "properties": { "part": { "$ref": "#/components/schemas/Part" }, "delta": { "type": "string" } }, + "required": ["part"] + } + }, + "required": ["type", "properties"] + }, + "Event.message.part.removed": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "message.part.removed" }, + "properties": { + "type": "object", + "properties": { + "sessionID": { "type": "string" }, + "messageID": { "type": "string" }, + "partID": { "type": "string" } + }, + "required": ["sessionID", "messageID", "partID"] + } + }, + "required": ["type", "properties"] + }, + "Event.session.compacted": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "session.compacted" }, + "properties": { + "type": "object", + "properties": { "sessionID": { "type": "string" } }, + "required": ["sessionID"] + } + }, + "required": ["type", "properties"] + }, + "PermissionAction": { "type": "string", "enum": ["allow", "deny", "ask"] }, + "PermissionRule": { + "type": "object", + "properties": { + "permission": { "type": "string" }, + "pattern": { "type": "string" }, + "action": { "$ref": "#/components/schemas/PermissionAction" } + }, + "required": ["permission", "pattern", "action"] + }, + "PermissionRuleset": { "type": "array", "items": { "$ref": "#/components/schemas/PermissionRule" } }, + "Session": { + "type": "object", + "properties": { + "id": { "type": "string", "pattern": "^ses.*" }, + "slug": { "type": "string" }, + "projectID": { "type": "string" }, + "directory": { "type": "string" }, + "parentID": { "type": "string", "pattern": "^ses.*" }, + "summary": { + "type": "object", + "properties": { + "additions": { "type": "number" }, + "deletions": { "type": "number" }, + "files": { "type": "number" }, + "diffs": { "type": "array", "items": { "$ref": "#/components/schemas/FileDiff" } } + }, + "required": ["additions", "deletions", "files"] + }, + "share": { "type": "object", "properties": { "url": { "type": "string" } }, "required": ["url"] }, + "title": { "type": "string" }, + "version": { "type": "string" }, + "time": { + "type": "object", + "properties": { + "created": { "type": "number" }, + "updated": { "type": "number" }, + "compacting": { "type": "number" }, + "archived": { "type": "number" } + }, + "required": ["created", "updated"] + }, + "permission": { "$ref": "#/components/schemas/PermissionRuleset" }, + "revert": { + "type": "object", + "properties": { + "messageID": { "type": "string" }, + "partID": { "type": "string" }, + "snapshot": { "type": "string" }, + "diff": { "type": "string" } + }, + "required": ["messageID"] + } + }, + "required": ["id", "slug", "projectID", "directory", "title", "version", "time"] + }, + "Event.session.created": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "session.created" }, + "properties": { + "type": "object", + "properties": { "info": { "$ref": "#/components/schemas/Session" } }, + "required": ["info"] + } + }, + "required": ["type", "properties"] + }, + "Event.session.updated": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "session.updated" }, + "properties": { + "type": "object", + "properties": { "info": { "$ref": "#/components/schemas/Session" } }, + "required": ["info"] + } + }, + "required": ["type", "properties"] + }, + "Event.session.deleted": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "session.deleted" }, + "properties": { + "type": "object", + "properties": { "info": { "$ref": "#/components/schemas/Session" } }, + "required": ["info"] + } + }, + "required": ["type", "properties"] + }, + "Event.session.diff": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "session.diff" }, + "properties": { + "type": "object", + "properties": { + "sessionID": { "type": "string" }, + "diff": { "type": "array", "items": { "$ref": "#/components/schemas/FileDiff" } } + }, + "required": ["sessionID", "diff"] + } + }, + "required": ["type", "properties"] + }, + "Event.session.error": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "session.error" }, + "properties": { + "type": "object", + "properties": { + "sessionID": { "type": "string" }, + "error": { + "anyOf": [ + { "$ref": "#/components/schemas/ProviderAuthError" }, + { "$ref": "#/components/schemas/UnknownError" }, + { "$ref": "#/components/schemas/MessageOutputLengthError" }, + { "$ref": "#/components/schemas/MessageAbortedError" }, + { "$ref": "#/components/schemas/APIError" } + ] + } + } + } + }, + "required": ["type", "properties"] + }, + "Event": { + "anyOf": [ + { "$ref": "#/components/schemas/Event.server.connected" }, + { "$ref": "#/components/schemas/Event.global.disposed" }, + { "$ref": "#/components/schemas/Event.tui.prompt.append" }, + { "$ref": "#/components/schemas/Event.tui.command.execute" }, + { "$ref": "#/components/schemas/Event.tui.toast.show" }, + { "$ref": "#/components/schemas/Event.tui.session.select" }, + { "$ref": "#/components/schemas/Event.installation.updated" }, + { "$ref": "#/components/schemas/Event.installation.update-available" }, + { "$ref": "#/components/schemas/Event.project.updated" }, + { "$ref": "#/components/schemas/Event.server.instance.disposed" }, + { "$ref": "#/components/schemas/Event.file.edited" }, + { "$ref": "#/components/schemas/Event.worktree.ready" }, + { "$ref": "#/components/schemas/Event.worktree.failed" }, + { "$ref": "#/components/schemas/Event.lsp.client.diagnostics" }, + { "$ref": "#/components/schemas/Event.permission.asked" }, + { "$ref": "#/components/schemas/Event.permission.replied" }, + { "$ref": "#/components/schemas/Event.session.status" }, + { "$ref": "#/components/schemas/Event.session.idle" }, + { "$ref": "#/components/schemas/Event.question.asked" }, + { "$ref": "#/components/schemas/Event.question.replied" }, + { "$ref": "#/components/schemas/Event.question.rejected" }, + { "$ref": "#/components/schemas/Event.todo.updated" }, + { "$ref": "#/components/schemas/Event.pty.created" }, + { "$ref": "#/components/schemas/Event.pty.updated" }, + { "$ref": "#/components/schemas/Event.pty.exited" }, + { "$ref": "#/components/schemas/Event.pty.deleted" }, + { "$ref": "#/components/schemas/Event.file.watcher.updated" }, + { "$ref": "#/components/schemas/Event.mcp.tools.changed" }, + { "$ref": "#/components/schemas/Event.mcp.browser.open.failed" }, + { "$ref": "#/components/schemas/Event.lsp.updated" }, + { "$ref": "#/components/schemas/Event.vcs.branch.updated" }, + { "$ref": "#/components/schemas/Event.command.executed" }, + { "$ref": "#/components/schemas/Event.message.updated" }, + { "$ref": "#/components/schemas/Event.message.removed" }, + { "$ref": "#/components/schemas/Event.message.part.updated" }, + { "$ref": "#/components/schemas/Event.message.part.removed" }, + { "$ref": "#/components/schemas/Event.session.compacted" }, + { "$ref": "#/components/schemas/Event.session.created" }, + { "$ref": "#/components/schemas/Event.session.updated" }, + { "$ref": "#/components/schemas/Event.session.deleted" }, + { "$ref": "#/components/schemas/Event.session.diff" }, + { "$ref": "#/components/schemas/Event.session.error" } + ] + }, + "GlobalEvent": { + "type": "object", + "properties": { "directory": { "type": "string" }, "payload": { "$ref": "#/components/schemas/Event" } }, + "required": ["directory", "payload"] + }, + "KeybindsConfig": { + "description": "Custom keybind configurations", + "type": "object", + "properties": { + "leader": { "description": "Leader key for keybind combinations", "default": "ctrl+x", "type": "string" }, + "app_exit": { "description": "Exit the application", "default": "ctrl+c,ctrl+d,q", "type": "string" }, + "editor_open": { "description": "Open external editor", "default": "e", "type": "string" }, + "theme_list": { "description": "List available themes", "default": "t", "type": "string" }, + "sidebar_toggle": { "description": "Toggle sidebar", "default": "b", "type": "string" }, + "scrollbar_toggle": { "description": "Toggle session scrollbar", "default": "none", "type": "string" }, + "username_toggle": { "description": "Toggle username visibility", "default": "none", "type": "string" }, + "status_view": { "description": "View status", "default": "s", "type": "string" }, + "session_export": { "description": "Export session to editor", "default": "x", "type": "string" }, + "session_new": { "description": "Create a new session", "default": "n", "type": "string" }, + "session_list": { "description": "List all sessions", "default": "l", "type": "string" }, + "session_timeline": { "description": "Show session timeline", "default": "g", "type": "string" }, + "session_fork": { "description": "Fork session from message", "default": "none", "type": "string" }, + "session_rename": { "description": "Rename session", "default": "ctrl+r", "type": "string" }, + "session_delete": { "description": "Delete session", "default": "ctrl+d", "type": "string" }, + "stash_delete": { "description": "Delete stash entry", "default": "ctrl+d", "type": "string" }, + "model_provider_list": { + "description": "Open provider list from model dialog", + "default": "ctrl+a", + "type": "string" + }, + "model_favorite_toggle": { + "description": "Toggle model favorite status", + "default": "ctrl+f", + "type": "string" + }, + "session_share": { "description": "Share current session", "default": "none", "type": "string" }, + "session_unshare": { "description": "Unshare current session", "default": "none", "type": "string" }, + "session_interrupt": { "description": "Interrupt current session", "default": "escape", "type": "string" }, + "session_compact": { "description": "Compact the session", "default": "c", "type": "string" }, + "messages_page_up": { + "description": "Scroll messages up by one page", + "default": "pageup,ctrl+alt+b", + "type": "string" + }, + "messages_page_down": { + "description": "Scroll messages down by one page", + "default": "pagedown,ctrl+alt+f", + "type": "string" + }, + "messages_line_up": { + "description": "Scroll messages up by one line", + "default": "ctrl+alt+y", + "type": "string" + }, + "messages_line_down": { + "description": "Scroll messages down by one line", + "default": "ctrl+alt+e", + "type": "string" + }, + "messages_half_page_up": { + "description": "Scroll messages up by half page", + "default": "ctrl+alt+u", + "type": "string" + }, + "messages_half_page_down": { + "description": "Scroll messages down by half page", + "default": "ctrl+alt+d", + "type": "string" + }, + "messages_first": { "description": "Navigate to first message", "default": "ctrl+g,home", "type": "string" }, + "messages_last": { "description": "Navigate to last message", "default": "ctrl+alt+g,end", "type": "string" }, + "messages_next": { "description": "Navigate to next message", "default": "none", "type": "string" }, + "messages_previous": { "description": "Navigate to previous message", "default": "none", "type": "string" }, + "messages_last_user": { "description": "Navigate to last user message", "default": "none", "type": "string" }, + "messages_copy": { "description": "Copy message", "default": "y", "type": "string" }, + "messages_undo": { "description": "Undo message", "default": "u", "type": "string" }, + "messages_redo": { "description": "Redo message", "default": "r", "type": "string" }, + "messages_toggle_conceal": { + "description": "Toggle code block concealment in messages", + "default": "h", + "type": "string" + }, + "tool_details": { "description": "Toggle tool details visibility", "default": "none", "type": "string" }, + "model_list": { "description": "List available models", "default": "m", "type": "string" }, + "model_cycle_recent": { "description": "Next recently used model", "default": "f2", "type": "string" }, + "model_cycle_recent_reverse": { + "description": "Previous recently used model", + "default": "shift+f2", + "type": "string" + }, + "model_cycle_favorite": { "description": "Next favorite model", "default": "none", "type": "string" }, + "model_cycle_favorite_reverse": { + "description": "Previous favorite model", + "default": "none", + "type": "string" + }, + "command_list": { "description": "List available commands", "default": "ctrl+p", "type": "string" }, + "agent_list": { "description": "List agents", "default": "a", "type": "string" }, + "agent_cycle": { "description": "Next agent", "default": "tab", "type": "string" }, + "agent_cycle_reverse": { "description": "Previous agent", "default": "shift+tab", "type": "string" }, + "variant_cycle": { "description": "Cycle model variants", "default": "ctrl+t", "type": "string" }, + "input_clear": { "description": "Clear input field", "default": "ctrl+c", "type": "string" }, + "input_paste": { "description": "Paste from clipboard", "default": "ctrl+v", "type": "string" }, + "input_submit": { "description": "Submit input", "default": "return", "type": "string" }, + "input_newline": { + "description": "Insert newline in input", + "default": "shift+return,ctrl+return,alt+return,ctrl+j", + "type": "string" + }, + "input_move_left": { "description": "Move cursor left in input", "default": "left,ctrl+b", "type": "string" }, + "input_move_right": { + "description": "Move cursor right in input", + "default": "right,ctrl+f", + "type": "string" + }, + "input_move_up": { "description": "Move cursor up in input", "default": "up", "type": "string" }, + "input_move_down": { "description": "Move cursor down in input", "default": "down", "type": "string" }, + "input_select_left": { "description": "Select left in input", "default": "shift+left", "type": "string" }, + "input_select_right": { "description": "Select right in input", "default": "shift+right", "type": "string" }, + "input_select_up": { "description": "Select up in input", "default": "shift+up", "type": "string" }, + "input_select_down": { "description": "Select down in input", "default": "shift+down", "type": "string" }, + "input_line_home": { "description": "Move to start of line in input", "default": "ctrl+a", "type": "string" }, + "input_line_end": { "description": "Move to end of line in input", "default": "ctrl+e", "type": "string" }, + "input_select_line_home": { + "description": "Select to start of line in input", + "default": "ctrl+shift+a", + "type": "string" + }, + "input_select_line_end": { + "description": "Select to end of line in input", + "default": "ctrl+shift+e", + "type": "string" + }, + "input_visual_line_home": { + "description": "Move to start of visual line in input", + "default": "alt+a", + "type": "string" + }, + "input_visual_line_end": { + "description": "Move to end of visual line in input", + "default": "alt+e", + "type": "string" + }, + "input_select_visual_line_home": { + "description": "Select to start of visual line in input", + "default": "alt+shift+a", + "type": "string" + }, + "input_select_visual_line_end": { + "description": "Select to end of visual line in input", + "default": "alt+shift+e", + "type": "string" + }, + "input_buffer_home": { + "description": "Move to start of buffer in input", + "default": "home", + "type": "string" + }, + "input_buffer_end": { "description": "Move to end of buffer in input", "default": "end", "type": "string" }, + "input_select_buffer_home": { + "description": "Select to start of buffer in input", + "default": "shift+home", + "type": "string" + }, + "input_select_buffer_end": { + "description": "Select to end of buffer in input", + "default": "shift+end", + "type": "string" + }, + "input_delete_line": { "description": "Delete line in input", "default": "ctrl+shift+d", "type": "string" }, + "input_delete_to_line_end": { + "description": "Delete to end of line in input", + "default": "ctrl+k", + "type": "string" + }, + "input_delete_to_line_start": { + "description": "Delete to start of line in input", + "default": "ctrl+u", + "type": "string" + }, + "input_backspace": { + "description": "Backspace in input", + "default": "backspace,shift+backspace", + "type": "string" + }, + "input_delete": { + "description": "Delete character in input", + "default": "ctrl+d,delete,shift+delete", + "type": "string" + }, + "input_undo": { "description": "Undo in input", "default": "ctrl+-,super+z", "type": "string" }, + "input_redo": { "description": "Redo in input", "default": "ctrl+.,super+shift+z", "type": "string" }, + "input_word_forward": { + "description": "Move word forward in input", + "default": "alt+f,alt+right,ctrl+right", + "type": "string" + }, + "input_word_backward": { + "description": "Move word backward in input", + "default": "alt+b,alt+left,ctrl+left", + "type": "string" + }, + "input_select_word_forward": { + "description": "Select word forward in input", + "default": "alt+shift+f,alt+shift+right", + "type": "string" + }, + "input_select_word_backward": { + "description": "Select word backward in input", + "default": "alt+shift+b,alt+shift+left", + "type": "string" + }, + "input_delete_word_forward": { + "description": "Delete word forward in input", + "default": "alt+d,alt+delete,ctrl+delete", + "type": "string" + }, + "input_delete_word_backward": { + "description": "Delete word backward in input", + "default": "ctrl+w,ctrl+backspace,alt+backspace", + "type": "string" + }, + "history_previous": { "description": "Previous history item", "default": "up", "type": "string" }, + "history_next": { "description": "Next history item", "default": "down", "type": "string" }, + "session_child_cycle": { "description": "Next child session", "default": "right", "type": "string" }, + "session_child_cycle_reverse": { + "description": "Previous child session", + "default": "left", + "type": "string" + }, + "session_parent": { "description": "Go to parent session", "default": "up", "type": "string" }, + "terminal_suspend": { "description": "Suspend terminal", "default": "ctrl+z", "type": "string" }, + "terminal_title_toggle": { "description": "Toggle terminal title", "default": "none", "type": "string" }, + "tips_toggle": { "description": "Toggle tips on home screen", "default": "h", "type": "string" } + }, + "additionalProperties": false + }, + "LogLevel": { "description": "Log level", "type": "string", "enum": ["DEBUG", "INFO", "WARN", "ERROR"] }, + "ServerConfig": { + "description": "Server configuration for opencode serve and web commands", + "type": "object", + "properties": { + "port": { + "description": "Port to listen on", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "hostname": { "description": "Hostname to listen on", "type": "string" }, + "mdns": { "description": "Enable mDNS service discovery", "type": "boolean" }, + "cors": { + "description": "Additional domains to allow for CORS", + "type": "array", + "items": { "type": "string" } + } + }, + "additionalProperties": false + }, + "PermissionActionConfig": { "type": "string", "enum": ["ask", "allow", "deny"] }, + "PermissionObjectConfig": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "$ref": "#/components/schemas/PermissionActionConfig" } + }, + "PermissionRuleConfig": { + "anyOf": [ + { "$ref": "#/components/schemas/PermissionActionConfig" }, + { "$ref": "#/components/schemas/PermissionObjectConfig" } + ] + }, + "PermissionConfig": { + "anyOf": [ + { + "type": "object", + "properties": { + "__originalKeys": { "type": "array", "items": { "type": "string" } }, + "read": { "$ref": "#/components/schemas/PermissionRuleConfig" }, + "edit": { "$ref": "#/components/schemas/PermissionRuleConfig" }, + "glob": { "$ref": "#/components/schemas/PermissionRuleConfig" }, + "grep": { "$ref": "#/components/schemas/PermissionRuleConfig" }, + "list": { "$ref": "#/components/schemas/PermissionRuleConfig" }, + "bash": { "$ref": "#/components/schemas/PermissionRuleConfig" }, + "task": { "$ref": "#/components/schemas/PermissionRuleConfig" }, + "external_directory": { "$ref": "#/components/schemas/PermissionRuleConfig" }, + "todowrite": { "$ref": "#/components/schemas/PermissionActionConfig" }, + "todoread": { "$ref": "#/components/schemas/PermissionActionConfig" }, + "question": { "$ref": "#/components/schemas/PermissionActionConfig" }, + "webfetch": { "$ref": "#/components/schemas/PermissionActionConfig" }, + "websearch": { "$ref": "#/components/schemas/PermissionActionConfig" }, + "codesearch": { "$ref": "#/components/schemas/PermissionActionConfig" }, + "lsp": { "$ref": "#/components/schemas/PermissionRuleConfig" }, + "doom_loop": { "$ref": "#/components/schemas/PermissionActionConfig" }, + "skill": { "$ref": "#/components/schemas/PermissionRuleConfig" } + }, + "additionalProperties": { "$ref": "#/components/schemas/PermissionRuleConfig" } + }, + { "$ref": "#/components/schemas/PermissionActionConfig" } + ] + }, + "AgentConfig": { + "type": "object", + "properties": { + "model": { "type": "string" }, + "temperature": { "type": "number" }, + "top_p": { "type": "number" }, + "prompt": { "type": "string" }, + "tools": { + "description": "@deprecated Use 'permission' field instead", + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "type": "boolean" } + }, + "disable": { "type": "boolean" }, + "description": { "description": "Description of when to use the agent", "type": "string" }, + "mode": { "type": "string", "enum": ["subagent", "primary", "all"] }, + "hidden": { + "description": "Hide this subagent from the @ autocomplete menu (default: false, only applies to mode: subagent)", + "type": "boolean" + }, + "options": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, + "color": { + "description": "Hex color code for the agent (e.g., #FF5733)", + "type": "string", + "pattern": "^#[0-9a-fA-F]{6}$" + }, + "steps": { + "description": "Maximum number of agentic iterations before forcing text-only response", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "maxSteps": { + "description": "@deprecated Use 'steps' field instead.", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "permission": { "$ref": "#/components/schemas/PermissionConfig" } + }, + "additionalProperties": {} + }, + "ProviderConfig": { + "type": "object", + "properties": { + "api": { "type": "string" }, + "name": { "type": "string" }, + "env": { "type": "array", "items": { "type": "string" } }, + "id": { "type": "string" }, + "npm": { "type": "string" }, + "models": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "name": { "type": "string" }, + "family": { "type": "string" }, + "release_date": { "type": "string" }, + "attachment": { "type": "boolean" }, + "reasoning": { "type": "boolean" }, + "temperature": { "type": "boolean" }, + "tool_call": { "type": "boolean" }, + "interleaved": { + "anyOf": [ + { "type": "boolean", "const": true }, + { + "type": "object", + "properties": { + "field": { "type": "string", "enum": ["reasoning_content", "reasoning_details"] } + }, + "required": ["field"], + "additionalProperties": false + } + ] + }, + "cost": { + "type": "object", + "properties": { + "input": { "type": "number" }, + "output": { "type": "number" }, + "cache_read": { "type": "number" }, + "cache_write": { "type": "number" }, + "context_over_200k": { + "type": "object", + "properties": { + "input": { "type": "number" }, + "output": { "type": "number" }, + "cache_read": { "type": "number" }, + "cache_write": { "type": "number" } + }, + "required": ["input", "output"] + } + }, + "required": ["input", "output"] + }, + "limit": { + "type": "object", + "properties": { + "context": { "type": "number" }, + "input": { "type": "number" }, + "output": { "type": "number" } + }, + "required": ["context", "output"] + }, + "modalities": { + "type": "object", + "properties": { + "input": { + "type": "array", + "items": { "type": "string", "enum": ["text", "audio", "image", "video", "pdf"] } + }, + "output": { + "type": "array", + "items": { "type": "string", "enum": ["text", "audio", "image", "video", "pdf"] } + } + }, + "required": ["input", "output"] + }, + "experimental": { "type": "boolean" }, + "status": { "type": "string", "enum": ["alpha", "beta", "deprecated"] }, + "options": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, + "headers": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "type": "string" } + }, + "provider": { "type": "object", "properties": { "npm": { "type": "string" } }, "required": ["npm"] }, + "variants": { + "description": "Variant-specific configuration", + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { + "type": "object", + "properties": { + "disabled": { "description": "Disable this variant for the model", "type": "boolean" } + }, + "additionalProperties": {} + } + } + } + } + }, + "whitelist": { "type": "array", "items": { "type": "string" } }, + "blacklist": { "type": "array", "items": { "type": "string" } }, + "options": { + "type": "object", + "properties": { + "apiKey": { "type": "string" }, + "baseURL": { "type": "string" }, + "enterpriseUrl": { "description": "GitHub Enterprise URL for copilot authentication", "type": "string" }, + "setCacheKey": { + "description": "Enable promptCacheKey for this provider (default false)", + "type": "boolean" + }, + "timeout": { + "description": "Timeout in milliseconds for requests to this provider. Default is 300000 (5 minutes). Set to false to disable timeout.", + "anyOf": [ + { + "description": "Timeout in milliseconds for requests to this provider. Default is 300000 (5 minutes). Set to false to disable timeout.", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + { "description": "Disable timeout for this provider entirely.", "type": "boolean", "const": false } + ] + } + }, + "additionalProperties": {} + } + }, + "additionalProperties": false + }, + "McpLocalConfig": { + "type": "object", + "properties": { + "type": { "description": "Type of MCP server connection", "type": "string", "const": "local" }, + "command": { + "description": "Command and arguments to run the MCP server", + "type": "array", + "items": { "type": "string" } + }, + "environment": { + "description": "Environment variables to set when running the MCP server", + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "type": "string" } + }, + "enabled": { "description": "Enable or disable the MCP server on startup", "type": "boolean" }, + "timeout": { + "description": "Timeout in ms for MCP server requests. Defaults to 5000 (5 seconds) if not specified.", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": ["type", "command"], + "additionalProperties": false + }, + "McpOAuthConfig": { + "type": "object", + "properties": { + "clientId": { + "description": "OAuth client ID. If not provided, dynamic client registration (RFC 7591) will be attempted.", + "type": "string" + }, + "clientSecret": { + "description": "OAuth client secret (if required by the authorization server)", + "type": "string" + }, + "scope": { "description": "OAuth scopes to request during authorization", "type": "string" } + }, + "additionalProperties": false + }, + "McpRemoteConfig": { + "type": "object", + "properties": { + "type": { "description": "Type of MCP server connection", "type": "string", "const": "remote" }, + "url": { "description": "URL of the remote MCP server", "type": "string" }, + "enabled": { "description": "Enable or disable the MCP server on startup", "type": "boolean" }, + "headers": { + "description": "Headers to send with the request", + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "type": "string" } + }, + "oauth": { + "description": "OAuth authentication configuration for the MCP server. Set to false to disable OAuth auto-detection.", + "anyOf": [{ "$ref": "#/components/schemas/McpOAuthConfig" }, { "type": "boolean", "const": false }] + }, + "timeout": { + "description": "Timeout in ms for MCP server requests. Defaults to 5000 (5 seconds) if not specified.", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": ["type", "url"], + "additionalProperties": false + }, + "LayoutConfig": { + "description": "@deprecated Always uses stretch layout.", + "type": "string", + "enum": ["auto", "stretch"] + }, + "Config": { + "type": "object", + "properties": { + "$schema": { "description": "JSON schema reference for configuration validation", "type": "string" }, + "theme": { "description": "Theme name to use for the interface", "type": "string" }, + "keybinds": { "$ref": "#/components/schemas/KeybindsConfig" }, + "logLevel": { "$ref": "#/components/schemas/LogLevel" }, + "tui": { + "description": "TUI specific settings", + "type": "object", + "properties": { + "scroll_speed": { "description": "TUI scroll speed", "type": "number", "minimum": 0.001 }, + "scroll_acceleration": { + "description": "Scroll acceleration settings", + "type": "object", + "properties": { "enabled": { "description": "Enable scroll acceleration", "type": "boolean" } }, + "required": ["enabled"] + }, + "diff_style": { + "description": "Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column", + "type": "string", + "enum": ["auto", "stacked"] + } + } + }, + "server": { "$ref": "#/components/schemas/ServerConfig" }, + "command": { + "description": "Command configuration, see https://opencode.ai/docs/commands", + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { + "type": "object", + "properties": { + "template": { "type": "string" }, + "description": { "type": "string" }, + "agent": { "type": "string" }, + "model": { "type": "string" }, + "subtask": { "type": "boolean" } + }, + "required": ["template"] + } + }, + "skills": { + "description": "Additional skill folder paths", + "type": "object", + "properties": { + "paths": { + "description": "Additional paths to skill folders", + "type": "array", + "items": { "type": "string" } + } + } + }, + "watcher": { + "type": "object", + "properties": { "ignore": { "type": "array", "items": { "type": "string" } } } + }, + "plugin": { "type": "array", "items": { "type": "string" } }, + "snapshot": { "type": "boolean" }, + "share": { + "description": "Control sharing behavior:'manual' allows manual sharing via commands, 'auto' enables automatic sharing, 'disabled' disables all sharing", + "type": "string", + "enum": ["manual", "auto", "disabled"] + }, + "autoshare": { + "description": "@deprecated Use 'share' field instead. Share newly created sessions automatically", + "type": "boolean" + }, + "autoupdate": { + "description": "Automatically update to the latest version. Set to true to auto-update, false to disable, or 'notify' to show update notifications", + "anyOf": [{ "type": "boolean" }, { "type": "string", "const": "notify" }] + }, + "disabled_providers": { + "description": "Disable providers that are loaded automatically", + "type": "array", + "items": { "type": "string" } + }, + "enabled_providers": { + "description": "When set, ONLY these providers will be enabled. All other providers will be ignored", + "type": "array", + "items": { "type": "string" } + }, + "model": { + "description": "Model to use in the format of provider/model, eg anthropic/claude-2", + "type": "string" + }, + "small_model": { + "description": "Small model to use for tasks like title generation in the format of provider/model", + "type": "string" + }, + "default_agent": { + "description": "Default agent to use when none is specified. Must be a primary agent. Falls back to 'build' if not set or if the specified agent is invalid.", + "type": "string" + }, + "username": { + "description": "Custom username to display in conversations instead of system username", + "type": "string" + }, + "mode": { + "description": "@deprecated Use `agent` field instead.", + "type": "object", + "properties": { + "build": { "$ref": "#/components/schemas/AgentConfig" }, + "plan": { "$ref": "#/components/schemas/AgentConfig" } + }, + "additionalProperties": { "$ref": "#/components/schemas/AgentConfig" } + }, + "agent": { + "description": "Agent configuration, see https://opencode.ai/docs/agents", + "type": "object", + "properties": { + "plan": { "$ref": "#/components/schemas/AgentConfig" }, + "build": { "$ref": "#/components/schemas/AgentConfig" }, + "general": { "$ref": "#/components/schemas/AgentConfig" }, + "explore": { "$ref": "#/components/schemas/AgentConfig" }, + "title": { "$ref": "#/components/schemas/AgentConfig" }, + "summary": { "$ref": "#/components/schemas/AgentConfig" }, + "compaction": { "$ref": "#/components/schemas/AgentConfig" } + }, + "additionalProperties": { "$ref": "#/components/schemas/AgentConfig" } + }, + "provider": { + "description": "Custom provider configurations and model overrides", + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "$ref": "#/components/schemas/ProviderConfig" } + }, + "mcp": { + "description": "MCP (Model Context Protocol) server configurations", + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { + "anyOf": [ + { + "anyOf": [ + { "$ref": "#/components/schemas/McpLocalConfig" }, + { "$ref": "#/components/schemas/McpRemoteConfig" } + ] + }, + { + "type": "object", + "properties": { "enabled": { "type": "boolean" } }, + "required": ["enabled"], + "additionalProperties": false + } + ] + } + }, + "formatter": { + "anyOf": [ + { "type": "boolean", "const": false }, + { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { + "type": "object", + "properties": { + "disabled": { "type": "boolean" }, + "command": { "type": "array", "items": { "type": "string" } }, + "environment": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "type": "string" } + }, + "extensions": { "type": "array", "items": { "type": "string" } } + } + } + } + ] + }, + "lsp": { + "anyOf": [ + { "type": "boolean", "const": false }, + { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { + "anyOf": [ + { + "type": "object", + "properties": { "disabled": { "type": "boolean", "const": true } }, + "required": ["disabled"] + }, + { + "type": "object", + "properties": { + "command": { "type": "array", "items": { "type": "string" } }, + "extensions": { "type": "array", "items": { "type": "string" } }, + "disabled": { "type": "boolean" }, + "env": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "type": "string" } + }, + "initialization": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": {} + } + }, + "required": ["command"] + } + ] + } + } + ] + }, + "instructions": { + "description": "Additional instruction files or patterns to include", + "type": "array", + "items": { "type": "string" } + }, + "layout": { "$ref": "#/components/schemas/LayoutConfig" }, + "permission": { "$ref": "#/components/schemas/PermissionConfig" }, + "tools": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "type": "boolean" } + }, + "enterprise": { + "type": "object", + "properties": { "url": { "description": "Enterprise URL", "type": "string" } } + }, + "compaction": { + "type": "object", + "properties": { + "auto": { + "description": "Enable automatic compaction when context is full (default: true)", + "type": "boolean" + }, + "prune": { "description": "Enable pruning of old tool outputs (default: true)", "type": "boolean" } + } + }, + "experimental": { + "type": "object", + "properties": { + "disable_paste_summary": { "type": "boolean" }, + "batch_tool": { "description": "Enable the batch tool", "type": "boolean" }, + "openTelemetry": { + "description": "Enable OpenTelemetry spans for AI SDK calls (using the 'experimental_telemetry' flag)", + "type": "boolean" + }, + "primary_tools": { + "description": "Tools that should only be available to primary agents.", + "type": "array", + "items": { "type": "string" } + }, + "continue_loop_on_deny": { + "description": "Continue the agent loop when a tool call is denied", + "type": "boolean" + }, + "mcp_timeout": { + "description": "Timeout in milliseconds for model context protocol (MCP) requests", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + } + } + }, + "additionalProperties": false + }, + "BadRequestError": { + "type": "object", + "properties": { + "data": {}, + "errors": { + "type": "array", + "items": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } + }, + "success": { "type": "boolean", "const": false } + }, + "required": ["data", "errors", "success"] + }, + "OAuth": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "oauth" }, + "refresh": { "type": "string" }, + "access": { "type": "string" }, + "expires": { "type": "number" }, + "accountId": { "type": "string" }, + "enterpriseUrl": { "type": "string" } + }, + "required": ["type", "refresh", "access", "expires"] + }, + "ApiAuth": { + "type": "object", + "properties": { "type": { "type": "string", "const": "api" }, "key": { "type": "string" } }, + "required": ["type", "key"] + }, + "WellKnownAuth": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "wellknown" }, + "key": { "type": "string" }, + "token": { "type": "string" } + }, + "required": ["type", "key", "token"] + }, + "Auth": { + "anyOf": [ + { "$ref": "#/components/schemas/OAuth" }, + { "$ref": "#/components/schemas/ApiAuth" }, + { "$ref": "#/components/schemas/WellKnownAuth" } + ] + }, + "NotFoundError": { + "type": "object", + "properties": { + "name": { "type": "string", "const": "NotFoundError" }, + "data": { "type": "object", "properties": { "message": { "type": "string" } }, "required": ["message"] } + }, + "required": ["name", "data"] + }, + "Model": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "providerID": { "type": "string" }, + "api": { + "type": "object", + "properties": { "id": { "type": "string" }, "url": { "type": "string" }, "npm": { "type": "string" } }, + "required": ["id", "url", "npm"] + }, + "name": { "type": "string" }, + "family": { "type": "string" }, + "capabilities": { + "type": "object", + "properties": { + "temperature": { "type": "boolean" }, + "reasoning": { "type": "boolean" }, + "attachment": { "type": "boolean" }, + "toolcall": { "type": "boolean" }, + "input": { + "type": "object", + "properties": { + "text": { "type": "boolean" }, + "audio": { "type": "boolean" }, + "image": { "type": "boolean" }, + "video": { "type": "boolean" }, + "pdf": { "type": "boolean" } + }, + "required": ["text", "audio", "image", "video", "pdf"] + }, + "output": { + "type": "object", + "properties": { + "text": { "type": "boolean" }, + "audio": { "type": "boolean" }, + "image": { "type": "boolean" }, + "video": { "type": "boolean" }, + "pdf": { "type": "boolean" } + }, + "required": ["text", "audio", "image", "video", "pdf"] + }, + "interleaved": { + "anyOf": [ + { "type": "boolean" }, + { + "type": "object", + "properties": { "field": { "type": "string", "enum": ["reasoning_content", "reasoning_details"] } }, + "required": ["field"] + } + ] + } + }, + "required": ["temperature", "reasoning", "attachment", "toolcall", "input", "output", "interleaved"] + }, + "cost": { + "type": "object", + "properties": { + "input": { "type": "number" }, + "output": { "type": "number" }, + "cache": { + "type": "object", + "properties": { "read": { "type": "number" }, "write": { "type": "number" } }, + "required": ["read", "write"] + }, + "experimentalOver200K": { + "type": "object", + "properties": { + "input": { "type": "number" }, + "output": { "type": "number" }, + "cache": { + "type": "object", + "properties": { "read": { "type": "number" }, "write": { "type": "number" } }, + "required": ["read", "write"] + } + }, + "required": ["input", "output", "cache"] + } + }, + "required": ["input", "output", "cache"] + }, + "limit": { + "type": "object", + "properties": { + "context": { "type": "number" }, + "input": { "type": "number" }, + "output": { "type": "number" } + }, + "required": ["context", "output"] + }, + "status": { "type": "string", "enum": ["alpha", "beta", "deprecated", "active"] }, + "options": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, + "headers": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "type": "string" } + }, + "release_date": { "type": "string" }, + "variants": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": {} + } + } + }, + "required": [ + "id", + "providerID", + "api", + "name", + "capabilities", + "cost", + "limit", + "status", + "options", + "headers", + "release_date" + ] + }, + "Provider": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "name": { "type": "string" }, + "source": { "type": "string", "enum": ["env", "config", "custom", "api"] }, + "env": { "type": "array", "items": { "type": "string" } }, + "key": { "type": "string" }, + "options": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, + "models": { + "type": "object", + "propertyNames": { "type": "string" }, + "additionalProperties": { "$ref": "#/components/schemas/Model" } + } + }, + "required": ["id", "name", "source", "env", "options", "models"] + }, + "ToolIDs": { "type": "array", "items": { "type": "string" } }, + "ToolListItem": { + "type": "object", + "properties": { "id": { "type": "string" }, "description": { "type": "string" }, "parameters": {} }, + "required": ["id", "description", "parameters"] + }, + "ToolList": { "type": "array", "items": { "$ref": "#/components/schemas/ToolListItem" } }, + "Worktree": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "branch": { "type": "string" }, + "directory": { "type": "string" } + }, + "required": ["name", "branch", "directory"] + }, + "WorktreeCreateInput": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "startCommand": { + "description": "Additional startup script to run after the project's start command", + "type": "string" + } + } + }, + "WorktreeRemoveInput": { + "type": "object", + "properties": { "directory": { "type": "string" } }, + "required": ["directory"] + }, + "WorktreeResetInput": { + "type": "object", + "properties": { "directory": { "type": "string" } }, + "required": ["directory"] + }, + "McpResource": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "uri": { "type": "string" }, + "description": { "type": "string" }, + "mimeType": { "type": "string" }, + "client": { "type": "string" } + }, + "required": ["name", "uri", "client"] + }, + "TextPartInput": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "type": { "type": "string", "const": "text" }, + "text": { "type": "string" }, + "synthetic": { "type": "boolean" }, + "ignored": { "type": "boolean" }, + "time": { + "type": "object", + "properties": { "start": { "type": "number" }, "end": { "type": "number" } }, + "required": ["start"] + }, + "metadata": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} } + }, + "required": ["type", "text"] + }, + "FilePartInput": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "type": { "type": "string", "const": "file" }, + "mime": { "type": "string" }, + "filename": { "type": "string" }, + "url": { "type": "string" }, + "source": { "$ref": "#/components/schemas/FilePartSource" } + }, + "required": ["type", "mime", "url"] + }, + "AgentPartInput": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "type": { "type": "string", "const": "agent" }, + "name": { "type": "string" }, + "source": { + "type": "object", + "properties": { + "value": { "type": "string" }, + "start": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "end": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 } + }, + "required": ["value", "start", "end"] + } + }, + "required": ["type", "name"] + }, + "SubtaskPartInput": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "type": { "type": "string", "const": "subtask" }, + "prompt": { "type": "string" }, + "description": { "type": "string" }, + "agent": { "type": "string" }, + "model": { + "type": "object", + "properties": { "providerID": { "type": "string" }, "modelID": { "type": "string" } }, + "required": ["providerID", "modelID"] + }, + "command": { "type": "string" } + }, + "required": ["type", "prompt", "description", "agent"] + }, + "ProviderAuthMethod": { + "type": "object", + "properties": { + "type": { + "anyOf": [ + { "type": "string", "const": "oauth" }, + { "type": "string", "const": "api" } + ] + }, + "label": { "type": "string" } + }, + "required": ["type", "label"] + }, + "ProviderAuthAuthorization": { + "type": "object", + "properties": { + "url": { "type": "string" }, + "method": { + "anyOf": [ + { "type": "string", "const": "auto" }, + { "type": "string", "const": "code" } + ] + }, + "instructions": { "type": "string" } + }, + "required": ["url", "method", "instructions"] + }, + "Symbol": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "kind": { "type": "number" }, + "location": { + "type": "object", + "properties": { "uri": { "type": "string" }, "range": { "$ref": "#/components/schemas/Range" } }, + "required": ["uri", "range"] + } + }, + "required": ["name", "kind", "location"] + }, + "FileNode": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "path": { "type": "string" }, + "absolute": { "type": "string" }, + "type": { "type": "string", "enum": ["file", "directory"] }, + "ignored": { "type": "boolean" } + }, + "required": ["name", "path", "absolute", "type", "ignored"] + }, + "FileContent": { + "type": "object", + "properties": { + "type": { "type": "string", "const": "text" }, + "content": { "type": "string" }, + "diff": { "type": "string" }, + "patch": { + "type": "object", + "properties": { + "oldFileName": { "type": "string" }, + "newFileName": { "type": "string" }, + "oldHeader": { "type": "string" }, + "newHeader": { "type": "string" }, + "hunks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "oldStart": { "type": "number" }, + "oldLines": { "type": "number" }, + "newStart": { "type": "number" }, + "newLines": { "type": "number" }, + "lines": { "type": "array", "items": { "type": "string" } } + }, + "required": ["oldStart", "oldLines", "newStart", "newLines", "lines"] + } + }, + "index": { "type": "string" } + }, + "required": ["oldFileName", "newFileName", "hunks"] + }, + "encoding": { "type": "string", "const": "base64" }, + "mimeType": { "type": "string" } + }, + "required": ["type", "content"] + }, + "File": { + "type": "object", + "properties": { + "path": { "type": "string" }, + "added": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "removed": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, + "status": { "type": "string", "enum": ["added", "deleted", "modified"] } + }, + "required": ["path", "added", "removed", "status"] + }, + "MCPStatusConnected": { + "type": "object", + "properties": { "status": { "type": "string", "const": "connected" } }, + "required": ["status"] + }, + "MCPStatusDisabled": { + "type": "object", + "properties": { "status": { "type": "string", "const": "disabled" } }, + "required": ["status"] + }, + "MCPStatusFailed": { + "type": "object", + "properties": { "status": { "type": "string", "const": "failed" }, "error": { "type": "string" } }, + "required": ["status", "error"] + }, + "MCPStatusNeedsAuth": { + "type": "object", + "properties": { "status": { "type": "string", "const": "needs_auth" } }, + "required": ["status"] + }, + "MCPStatusNeedsClientRegistration": { + "type": "object", + "properties": { + "status": { "type": "string", "const": "needs_client_registration" }, + "error": { "type": "string" } + }, + "required": ["status", "error"] + }, + "MCPStatus": { + "anyOf": [ + { "$ref": "#/components/schemas/MCPStatusConnected" }, + { "$ref": "#/components/schemas/MCPStatusDisabled" }, + { "$ref": "#/components/schemas/MCPStatusFailed" }, + { "$ref": "#/components/schemas/MCPStatusNeedsAuth" }, + { "$ref": "#/components/schemas/MCPStatusNeedsClientRegistration" } + ] + }, + "Path": { + "type": "object", + "properties": { + "home": { "type": "string" }, + "state": { "type": "string" }, + "config": { "type": "string" }, + "worktree": { "type": "string" }, + "directory": { "type": "string" } + }, + "required": ["home", "state", "config", "worktree", "directory"] + }, + "VcsInfo": { "type": "object", "properties": { "branch": { "type": "string" } }, "required": ["branch"] }, + "Command": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "description": { "type": "string" }, + "agent": { "type": "string" }, + "model": { "type": "string" }, + "source": { "type": "string", "enum": ["command", "mcp", "skill"] }, + "template": { "anyOf": [{ "type": "string" }, { "type": "string" }] }, + "subtask": { "type": "boolean" }, + "hints": { "type": "array", "items": { "type": "string" } } + }, + "required": ["name", "template", "hints"] + }, + "Agent": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "description": { "type": "string" }, + "mode": { "type": "string", "enum": ["subagent", "primary", "all"] }, + "native": { "type": "boolean" }, + "hidden": { "type": "boolean" }, + "topP": { "type": "number" }, + "temperature": { "type": "number" }, + "color": { "type": "string" }, + "permission": { "$ref": "#/components/schemas/PermissionRuleset" }, + "model": { + "type": "object", + "properties": { "modelID": { "type": "string" }, "providerID": { "type": "string" } }, + "required": ["modelID", "providerID"] + }, + "prompt": { "type": "string" }, + "options": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, + "steps": { "type": "integer", "exclusiveMinimum": 0, "maximum": 9007199254740991 } + }, + "required": ["name", "mode", "permission", "options"] + }, + "LSPStatus": { + "type": "object", + "properties": { + "id": { "type": "string" }, + "name": { "type": "string" }, + "root": { "type": "string" }, + "status": { + "anyOf": [ + { "type": "string", "const": "connected" }, + { "type": "string", "const": "error" } + ] + } + }, + "required": ["id", "name", "root", "status"] + }, + "FormatterStatus": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "extensions": { "type": "array", "items": { "type": "string" } }, + "enabled": { "type": "boolean" } + }, + "required": ["name", "extensions", "enabled"] + } + } + } +} diff --git a/openapi_formatted.json b/openapi_formatted.json new file mode 100644 index 0000000..80bba78 --- /dev/null +++ b/openapi_formatted.json @@ -0,0 +1,10277 @@ +{ + "openapi": "3.1.1", + "info": { + "title": "opencode", + "description": "opencode api", + "version": "0.0.3" + }, + "paths": { + "/global/health": { + "get": { + "operationId": "global.health", + "summary": "Get health", + "description": "Get health information about the OpenCode server.", + "responses": { + "200": { + "description": "Health information", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "healthy": { + "type": "boolean", + "const": true + }, + "version": { + "type": "string" + } + }, + "required": ["healthy", "version"] + } + } + } + } + } + } + }, + "/global/event": { + "get": { + "operationId": "global.event", + "summary": "Get global events", + "description": "Subscribe to global events from the OpenCode system using server-sent events.", + "responses": { + "200": { + "description": "Event stream", + "content": { + "text/event-stream": { + "schema": { + "$ref": "#/components/schemas/GlobalEvent" + } + } + } + } + } + } + }, + "/global/dispose": { + "post": { + "operationId": "global.dispose", + "summary": "Dispose instance", + "description": "Clean up and dispose all OpenCode instances, releasing all resources.", + "responses": { + "200": { + "description": "Global disposed", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, + "/project": { + "get": { + "operationId": "project.list", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "List all projects", + "description": "Get a list of projects that have been opened with OpenCode.", + "responses": { + "200": { + "description": "List of projects", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Project" + } + } + } + } + } + } + } + }, + "/project/current": { + "get": { + "operationId": "project.current", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Get current project", + "description": "Retrieve the currently active project that OpenCode is working with.", + "responses": { + "200": { + "description": "Current project information", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Project" + } + } + } + } + } + } + }, + "/project/{projectID}": { + "patch": { + "operationId": "project.update", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "projectID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "summary": "Update project", + "description": "Update project properties such as name, icon, and commands.", + "responses": { + "200": { + "description": "Updated project information", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Project" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "icon": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "override": { + "type": "string" + }, + "color": { + "type": "string" + } + } + }, + "commands": { + "type": "object", + "properties": { + "start": { + "description": "Startup script to run when creating a new workspace (worktree)", + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "/pty": { + "get": { + "operationId": "pty.list", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "List PTY sessions", + "description": "Get a list of all active pseudo-terminal (PTY) sessions managed by OpenCode.", + "responses": { + "200": { + "description": "List of sessions", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Pty" + } + } + } + } + } + } + }, + "post": { + "operationId": "pty.create", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Create PTY session", + "description": "Create a new pseudo-terminal (PTY) session for running shell commands and processes.", + "responses": { + "200": { + "description": "Created session", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Pty" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "command": { + "type": "string" + }, + "args": { + "type": "array", + "items": { + "type": "string" + } + }, + "cwd": { + "type": "string" + }, + "title": { + "type": "string" + }, + "env": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "/pty/{ptyID}": { + "get": { + "operationId": "pty.get", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "ptyID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "summary": "Get PTY session", + "description": "Retrieve detailed information about a specific pseudo-terminal (PTY) session.", + "responses": { + "200": { + "description": "Session info", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Pty" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + } + }, + "put": { + "operationId": "pty.update", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "ptyID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "summary": "Update PTY session", + "description": "Update properties of an existing pseudo-terminal (PTY) session.", + "responses": { + "200": { + "description": "Updated session", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Pty" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "size": { + "type": "object", + "properties": { + "rows": { + "type": "number" + }, + "cols": { + "type": "number" + } + }, + "required": ["rows", "cols"] + } + } + } + } + } + } + }, + "delete": { + "operationId": "pty.remove", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "ptyID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "summary": "Remove PTY session", + "description": "Remove and terminate a specific pseudo-terminal (PTY) session.", + "responses": { + "200": { + "description": "Session removed", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + } + } + }, + "/pty/{ptyID}/connect": { + "get": { + "operationId": "pty.connect", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "ptyID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "summary": "Connect to PTY session", + "description": "Establish a WebSocket connection to interact with a pseudo-terminal (PTY) session in real-time.", + "responses": { + "200": { + "description": "Connected session", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + } + } + }, + "/config": { + "get": { + "operationId": "config.get", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Get configuration", + "description": "Retrieve the current OpenCode configuration settings and preferences.", + "responses": { + "200": { + "description": "Get config info", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Config" + } + } + } + } + } + }, + "patch": { + "operationId": "config.update", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Update configuration", + "description": "Update OpenCode configuration settings and preferences.", + "responses": { + "200": { + "description": "Successfully updated config", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Config" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Config" + } + } + } + } + } + }, + "/config/providers": { + "get": { + "operationId": "config.providers", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "List config providers", + "description": "Get a list of all configured AI providers and their default models.", + "responses": { + "200": { + "description": "List of providers", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "providers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Provider" + } + }, + "default": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "string" + } + } + }, + "required": ["providers", "default"] + } + } + } + } + } + } + }, + "/experimental/tool/ids": { + "get": { + "operationId": "tool.ids", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "List tool IDs", + "description": "Get a list of all available tool IDs, including both built-in tools and dynamically registered tools.", + "responses": { + "200": { + "description": "Tool IDs", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ToolIDs" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + } + } + } + }, + "/experimental/tool": { + "get": { + "operationId": "tool.list", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "provider", + "schema": { + "type": "string" + }, + "required": true + }, + { + "in": "query", + "name": "model", + "schema": { + "type": "string" + }, + "required": true + } + ], + "summary": "List tools", + "description": "Get a list of available tools with their JSON schema parameters for a specific provider and model combination.", + "responses": { + "200": { + "description": "Tools", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ToolList" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + } + } + } + }, + "/experimental/worktree": { + "post": { + "operationId": "worktree.create", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Create worktree", + "description": "Create a new git worktree for the current project and run any configured startup scripts.", + "responses": { + "200": { + "description": "Worktree created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Worktree" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorktreeCreateInput" + } + } + } + } + }, + "get": { + "operationId": "worktree.list", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "List worktrees", + "description": "List all sandbox worktrees for the current project.", + "responses": { + "200": { + "description": "List of worktree directories", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + }, + "delete": { + "operationId": "worktree.remove", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Remove worktree", + "description": "Remove a git worktree and delete its branch.", + "responses": { + "200": { + "description": "Worktree removed", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorktreeRemoveInput" + } + } + } + } + } + }, + "/experimental/worktree/reset": { + "post": { + "operationId": "worktree.reset", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Reset worktree", + "description": "Reset a worktree branch to the primary default branch.", + "responses": { + "200": { + "description": "Worktree reset", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorktreeResetInput" + } + } + } + } + } + }, + "/experimental/resource": { + "get": { + "operationId": "experimental.resource.list", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Get MCP resources", + "description": "Get all available MCP resources from connected servers. Optionally filter by name.", + "responses": { + "200": { + "description": "MCP resources", + "content": { + "application/json": { + "schema": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "$ref": "#/components/schemas/McpResource" + } + } + } + } + } + } + } + }, + "/session": { + "get": { + "operationId": "session.list", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + }, + "description": "Filter sessions by project directory" + }, + { + "in": "query", + "name": "roots", + "schema": { + "type": "boolean" + }, + "description": "Only return root sessions (no parentID)" + }, + { + "in": "query", + "name": "start", + "schema": { + "type": "number" + }, + "description": "Filter sessions updated on or after this timestamp (milliseconds since epoch)" + }, + { + "in": "query", + "name": "search", + "schema": { + "type": "string" + }, + "description": "Filter sessions by title (case-insensitive)" + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "number" + }, + "description": "Maximum number of sessions to return" + } + ], + "summary": "List sessions", + "description": "Get a list of all OpenCode sessions, sorted by most recently updated.", + "responses": { + "200": { + "description": "List of sessions", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Session" + } + } + } + } + } + } + }, + "post": { + "operationId": "session.create", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Create session", + "description": "Create a new OpenCode session for interacting with AI assistants and managing conversations.", + "responses": { + "200": { + "description": "Successfully created session", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Session" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "parentID": { + "type": "string", + "pattern": "^ses.*" + }, + "title": { + "type": "string" + }, + "permission": { + "$ref": "#/components/schemas/PermissionRuleset" + } + } + } + } + } + } + } + }, + "/session/status": { + "get": { + "operationId": "session.status", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Get session status", + "description": "Retrieve the current status of all sessions, including active, idle, and completed states.", + "responses": { + "200": { + "description": "Get session status", + "content": { + "application/json": { + "schema": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "$ref": "#/components/schemas/SessionStatus" + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + } + } + } + }, + "/session/{sessionID}": { + "get": { + "operationId": "session.get", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string", + "pattern": "^ses.*" + }, + "required": true + } + ], + "summary": "Get session", + "description": "Retrieve detailed information about a specific OpenCode session.", + "tags": ["Session"], + "responses": { + "200": { + "description": "Get session", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Session" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + } + }, + "delete": { + "operationId": "session.delete", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string", + "pattern": "^ses.*" + }, + "required": true + } + ], + "summary": "Delete session", + "description": "Delete a session and permanently remove all associated data, including messages and history.", + "responses": { + "200": { + "description": "Successfully deleted session", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + } + }, + "patch": { + "operationId": "session.update", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "summary": "Update session", + "description": "Update properties of an existing session, such as title or other metadata.", + "responses": { + "200": { + "description": "Successfully updated session", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Session" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "time": { + "type": "object", + "properties": { + "archived": { + "type": "number" + } + } + } + } + } + } + } + } + } + }, + "/session/{sessionID}/children": { + "get": { + "operationId": "session.children", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string", + "pattern": "^ses.*" + }, + "required": true + } + ], + "summary": "Get session children", + "tags": ["Session"], + "description": "Retrieve all child sessions that were forked from the specified parent session.", + "responses": { + "200": { + "description": "List of children", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Session" + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + } + } + }, + "/session/{sessionID}/todo": { + "get": { + "operationId": "session.todo", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string" + }, + "required": true, + "description": "Session ID" + } + ], + "summary": "Get session todos", + "description": "Retrieve the todo list associated with a specific session, showing tasks and action items.", + "responses": { + "200": { + "description": "Todo list", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Todo" + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + } + } + }, + "/session/{sessionID}/init": { + "post": { + "operationId": "session.init", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string" + }, + "required": true, + "description": "Session ID" + } + ], + "summary": "Initialize session", + "description": "Analyze the current application and create an AGENTS.md file with project-specific agent configurations.", + "responses": { + "200": { + "description": "200", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "modelID": { + "type": "string" + }, + "providerID": { + "type": "string" + }, + "messageID": { + "type": "string", + "pattern": "^msg.*" + } + }, + "required": ["modelID", "providerID", "messageID"] + } + } + } + } + } + }, + "/session/{sessionID}/fork": { + "post": { + "operationId": "session.fork", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string", + "pattern": "^ses.*" + }, + "required": true + } + ], + "summary": "Fork session", + "description": "Create a new session by forking an existing session at a specific message point.", + "responses": { + "200": { + "description": "200", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Session" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "messageID": { + "type": "string", + "pattern": "^msg.*" + } + } + } + } + } + } + } + }, + "/session/{sessionID}/abort": { + "post": { + "operationId": "session.abort", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "summary": "Abort session", + "description": "Abort an active session and stop any ongoing AI processing or command execution.", + "responses": { + "200": { + "description": "Aborted session", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + } + } + }, + "/session/{sessionID}/share": { + "post": { + "operationId": "session.share", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "summary": "Share session", + "description": "Create a shareable link for a session, allowing others to view the conversation.", + "responses": { + "200": { + "description": "Successfully shared session", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Session" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + } + }, + "delete": { + "operationId": "session.unshare", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string", + "pattern": "^ses.*" + }, + "required": true + } + ], + "summary": "Unshare session", + "description": "Remove the shareable link for a session, making it private again.", + "responses": { + "200": { + "description": "Successfully unshared session", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Session" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + } + } + }, + "/session/{sessionID}/diff": { + "get": { + "operationId": "session.diff", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string", + "pattern": "^ses.*" + }, + "required": true + }, + { + "in": "query", + "name": "messageID", + "schema": { + "type": "string", + "pattern": "^msg.*" + } + } + ], + "summary": "Get message diff", + "description": "Get the file changes (diff) that resulted from a specific user message in the session.", + "responses": { + "200": { + "description": "Successfully retrieved diff", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FileDiff" + } + } + } + } + } + } + } + }, + "/session/{sessionID}/summarize": { + "post": { + "operationId": "session.summarize", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string" + }, + "required": true, + "description": "Session ID" + } + ], + "summary": "Summarize session", + "description": "Generate a concise summary of the session using AI compaction to preserve key information.", + "responses": { + "200": { + "description": "Summarized session", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "providerID": { + "type": "string" + }, + "modelID": { + "type": "string" + }, + "auto": { + "default": false, + "type": "boolean" + } + }, + "required": ["providerID", "modelID"] + } + } + } + } + } + }, + "/session/{sessionID}/message": { + "get": { + "operationId": "session.messages", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string" + }, + "required": true, + "description": "Session ID" + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "number" + } + } + ], + "summary": "Get session messages", + "description": "Retrieve all messages in a session, including user prompts and AI responses.", + "responses": { + "200": { + "description": "List of messages", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "info": { + "$ref": "#/components/schemas/Message" + }, + "parts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Part" + } + } + }, + "required": ["info", "parts"] + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + } + }, + "post": { + "operationId": "session.prompt", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string" + }, + "required": true, + "description": "Session ID" + } + ], + "summary": "Send message", + "description": "Create and send a new message to a session, streaming the AI response.", + "responses": { + "200": { + "description": "Created message", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "info": { + "$ref": "#/components/schemas/AssistantMessage" + }, + "parts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Part" + } + } + }, + "required": ["info", "parts"] + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "messageID": { + "type": "string", + "pattern": "^msg.*" + }, + "model": { + "type": "object", + "properties": { + "providerID": { + "type": "string" + }, + "modelID": { + "type": "string" + } + }, + "required": ["providerID", "modelID"] + }, + "agent": { + "type": "string" + }, + "noReply": { + "type": "boolean" + }, + "tools": { + "description": "@deprecated tools and permissions have been merged, you can set permissions on the session itself now", + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "boolean" + } + }, + "system": { + "type": "string" + }, + "variant": { + "type": "string" + }, + "parts": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/TextPartInput" + }, + { + "$ref": "#/components/schemas/FilePartInput" + }, + { + "$ref": "#/components/schemas/AgentPartInput" + }, + { + "$ref": "#/components/schemas/SubtaskPartInput" + } + ] + } + } + }, + "required": ["parts"] + } + } + } + } + } + }, + "/session/{sessionID}/message/{messageID}": { + "get": { + "operationId": "session.message", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string" + }, + "required": true, + "description": "Session ID" + }, + { + "in": "path", + "name": "messageID", + "schema": { + "type": "string" + }, + "required": true, + "description": "Message ID" + } + ], + "summary": "Get message", + "description": "Retrieve a specific message from a session by its message ID.", + "responses": { + "200": { + "description": "Message", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "info": { + "$ref": "#/components/schemas/Message" + }, + "parts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Part" + } + } + }, + "required": ["info", "parts"] + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + } + } + }, + "/session/{sessionID}/message/{messageID}/part/{partID}": { + "delete": { + "operationId": "part.delete", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string" + }, + "required": true, + "description": "Session ID" + }, + { + "in": "path", + "name": "messageID", + "schema": { + "type": "string" + }, + "required": true, + "description": "Message ID" + }, + { + "in": "path", + "name": "partID", + "schema": { + "type": "string" + }, + "required": true, + "description": "Part ID" + } + ], + "description": "Delete a part from a message", + "responses": { + "200": { + "description": "Successfully deleted part", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + } + }, + "patch": { + "operationId": "part.update", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string" + }, + "required": true, + "description": "Session ID" + }, + { + "in": "path", + "name": "messageID", + "schema": { + "type": "string" + }, + "required": true, + "description": "Message ID" + }, + { + "in": "path", + "name": "partID", + "schema": { + "type": "string" + }, + "required": true, + "description": "Part ID" + } + ], + "description": "Update a part in a message", + "responses": { + "200": { + "description": "Successfully updated part", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Part" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Part" + } + } + } + } + } + }, + "/session/{sessionID}/prompt_async": { + "post": { + "operationId": "session.prompt_async", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string" + }, + "required": true, + "description": "Session ID" + } + ], + "summary": "Send async message", + "description": "Create and send a new message to a session asynchronously, starting the session if needed and returning immediately.", + "responses": { + "204": { + "description": "Prompt accepted" + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "messageID": { + "type": "string", + "pattern": "^msg.*" + }, + "model": { + "type": "object", + "properties": { + "providerID": { + "type": "string" + }, + "modelID": { + "type": "string" + } + }, + "required": ["providerID", "modelID"] + }, + "agent": { + "type": "string" + }, + "noReply": { + "type": "boolean" + }, + "tools": { + "description": "@deprecated tools and permissions have been merged, you can set permissions on the session itself now", + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "boolean" + } + }, + "system": { + "type": "string" + }, + "variant": { + "type": "string" + }, + "parts": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/TextPartInput" + }, + { + "$ref": "#/components/schemas/FilePartInput" + }, + { + "$ref": "#/components/schemas/AgentPartInput" + }, + { + "$ref": "#/components/schemas/SubtaskPartInput" + } + ] + } + } + }, + "required": ["parts"] + } + } + } + } + } + }, + "/session/{sessionID}/command": { + "post": { + "operationId": "session.command", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string" + }, + "required": true, + "description": "Session ID" + } + ], + "summary": "Send command", + "description": "Send a new command to a session for execution by the AI assistant.", + "responses": { + "200": { + "description": "Created message", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "info": { + "$ref": "#/components/schemas/AssistantMessage" + }, + "parts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Part" + } + } + }, + "required": ["info", "parts"] + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "messageID": { + "type": "string", + "pattern": "^msg.*" + }, + "agent": { + "type": "string" + }, + "model": { + "type": "string" + }, + "arguments": { + "type": "string" + }, + "command": { + "type": "string" + }, + "variant": { + "type": "string" + }, + "parts": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "const": "file" + }, + "mime": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "url": { + "type": "string" + }, + "source": { + "$ref": "#/components/schemas/FilePartSource" + } + }, + "required": ["type", "mime", "url"] + } + ] + } + } + }, + "required": ["arguments", "command"] + } + } + } + } + } + }, + "/session/{sessionID}/shell": { + "post": { + "operationId": "session.shell", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string" + }, + "required": true, + "description": "Session ID" + } + ], + "summary": "Run shell command", + "description": "Execute a shell command within the session context and return the AI's response.", + "responses": { + "200": { + "description": "Created message", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AssistantMessage" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "agent": { + "type": "string" + }, + "model": { + "type": "object", + "properties": { + "providerID": { + "type": "string" + }, + "modelID": { + "type": "string" + } + }, + "required": ["providerID", "modelID"] + }, + "command": { + "type": "string" + } + }, + "required": ["agent", "command"] + } + } + } + } + } + }, + "/session/{sessionID}/revert": { + "post": { + "operationId": "session.revert", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "summary": "Revert message", + "description": "Revert a specific message in a session, undoing its effects and restoring the previous state.", + "responses": { + "200": { + "description": "Updated session", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Session" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "messageID": { + "type": "string", + "pattern": "^msg.*" + }, + "partID": { + "type": "string", + "pattern": "^prt.*" + } + }, + "required": ["messageID"] + } + } + } + } + } + }, + "/session/{sessionID}/unrevert": { + "post": { + "operationId": "session.unrevert", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "summary": "Restore reverted messages", + "description": "Restore all previously reverted messages in a session.", + "responses": { + "200": { + "description": "Updated session", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Session" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + } + } + }, + "/session/{sessionID}/permissions/{permissionID}": { + "post": { + "operationId": "permission.respond", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "sessionID", + "schema": { + "type": "string" + }, + "required": true + }, + { + "in": "path", + "name": "permissionID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "summary": "Respond to permission", + "deprecated": true, + "description": "Approve or deny a permission request from the AI assistant.", + "responses": { + "200": { + "description": "Permission processed successfully", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "response": { + "type": "string", + "enum": ["once", "always", "reject"] + } + }, + "required": ["response"] + } + } + } + } + } + }, + "/permission/{requestID}/reply": { + "post": { + "operationId": "permission.reply", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "requestID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "summary": "Respond to permission request", + "description": "Approve or deny a permission request from the AI assistant.", + "responses": { + "200": { + "description": "Permission processed successfully", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "reply": { + "type": "string", + "enum": ["once", "always", "reject"] + }, + "message": { + "type": "string" + } + }, + "required": ["reply"] + } + } + } + } + } + }, + "/permission": { + "get": { + "operationId": "permission.list", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "List pending permissions", + "description": "Get all pending permission requests across all sessions.", + "responses": { + "200": { + "description": "List of pending permissions", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PermissionRequest" + } + } + } + } + } + } + } + }, + "/question": { + "get": { + "operationId": "question.list", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "List pending questions", + "description": "Get all pending question requests across all sessions.", + "responses": { + "200": { + "description": "List of pending questions", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QuestionRequest" + } + } + } + } + } + } + } + }, + "/question/{requestID}/reply": { + "post": { + "operationId": "question.reply", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "requestID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "summary": "Reply to question request", + "description": "Provide answers to a question request from the AI assistant.", + "responses": { + "200": { + "description": "Question answered successfully", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "answers": { + "description": "User answers in order of questions (each answer is an array of selected labels)", + "type": "array", + "items": { + "$ref": "#/components/schemas/QuestionAnswer" + } + } + }, + "required": ["answers"] + } + } + } + } + } + }, + "/question/{requestID}/reject": { + "post": { + "operationId": "question.reject", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "requestID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "summary": "Reject question request", + "description": "Reject a question request from the AI assistant.", + "responses": { + "200": { + "description": "Question rejected successfully", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + } + } + }, + "/provider": { + "get": { + "operationId": "provider.list", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "List providers", + "description": "Get a list of all available AI providers, including both available and connected ones.", + "responses": { + "200": { + "description": "List of providers", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "all": { + "type": "array", + "items": { + "type": "object", + "properties": { + "api": { + "type": "string" + }, + "name": { + "type": "string" + }, + "env": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "string" + }, + "npm": { + "type": "string" + }, + "models": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "family": { + "type": "string" + }, + "release_date": { + "type": "string" + }, + "attachment": { + "type": "boolean" + }, + "reasoning": { + "type": "boolean" + }, + "temperature": { + "type": "boolean" + }, + "tool_call": { + "type": "boolean" + }, + "interleaved": { + "anyOf": [ + { + "type": "boolean", + "const": true + }, + { + "type": "object", + "properties": { + "field": { + "type": "string", + "enum": ["reasoning_content", "reasoning_details"] + } + }, + "required": ["field"], + "additionalProperties": false + } + ] + }, + "cost": { + "type": "object", + "properties": { + "input": { + "type": "number" + }, + "output": { + "type": "number" + }, + "cache_read": { + "type": "number" + }, + "cache_write": { + "type": "number" + }, + "context_over_200k": { + "type": "object", + "properties": { + "input": { + "type": "number" + }, + "output": { + "type": "number" + }, + "cache_read": { + "type": "number" + }, + "cache_write": { + "type": "number" + } + }, + "required": ["input", "output"] + } + }, + "required": ["input", "output"] + }, + "limit": { + "type": "object", + "properties": { + "context": { + "type": "number" + }, + "input": { + "type": "number" + }, + "output": { + "type": "number" + } + }, + "required": ["context", "output"] + }, + "modalities": { + "type": "object", + "properties": { + "input": { + "type": "array", + "items": { + "type": "string", + "enum": ["text", "audio", "image", "video", "pdf"] + } + }, + "output": { + "type": "array", + "items": { + "type": "string", + "enum": ["text", "audio", "image", "video", "pdf"] + } + } + }, + "required": ["input", "output"] + }, + "experimental": { + "type": "boolean" + }, + "status": { + "type": "string", + "enum": ["alpha", "beta", "deprecated"] + }, + "options": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "headers": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "string" + } + }, + "provider": { + "type": "object", + "properties": { + "npm": { + "type": "string" + } + }, + "required": ["npm"] + }, + "variants": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + } + }, + "required": [ + "id", + "name", + "release_date", + "attachment", + "reasoning", + "temperature", + "tool_call", + "limit", + "options" + ] + } + } + }, + "required": ["name", "env", "id", "models"] + } + }, + "default": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "string" + } + }, + "connected": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": ["all", "default", "connected"] + } + } + } + } + } + } + }, + "/provider/auth": { + "get": { + "operationId": "provider.auth", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Get provider auth methods", + "description": "Retrieve available authentication methods for all AI providers.", + "responses": { + "200": { + "description": "Provider auth methods", + "content": { + "application/json": { + "schema": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProviderAuthMethod" + } + } + } + } + } + } + } + } + }, + "/provider/{providerID}/oauth/authorize": { + "post": { + "operationId": "provider.oauth.authorize", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "providerID", + "schema": { + "type": "string" + }, + "required": true, + "description": "Provider ID" + } + ], + "summary": "OAuth authorize", + "description": "Initiate OAuth authorization for a specific AI provider to get an authorization URL.", + "responses": { + "200": { + "description": "Authorization URL and method", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProviderAuthAuthorization" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "method": { + "description": "Auth method index", + "type": "number" + } + }, + "required": ["method"] + } + } + } + } + } + }, + "/provider/{providerID}/oauth/callback": { + "post": { + "operationId": "provider.oauth.callback", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "providerID", + "schema": { + "type": "string" + }, + "required": true, + "description": "Provider ID" + } + ], + "summary": "OAuth callback", + "description": "Handle the OAuth callback from a provider after user authorization.", + "responses": { + "200": { + "description": "OAuth callback processed successfully", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "method": { + "description": "Auth method index", + "type": "number" + }, + "code": { + "description": "OAuth authorization code", + "type": "string" + } + }, + "required": ["method"] + } + } + } + } + } + }, + "/find": { + "get": { + "operationId": "find.text", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "pattern", + "schema": { + "type": "string" + }, + "required": true + } + ], + "summary": "Find text", + "description": "Search for text patterns across files in the project using ripgrep.", + "responses": { + "200": { + "description": "Matches", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "path": { + "type": "object", + "properties": { + "text": { + "type": "string" + } + }, + "required": ["text"] + }, + "lines": { + "type": "object", + "properties": { + "text": { + "type": "string" + } + }, + "required": ["text"] + }, + "line_number": { + "type": "number" + }, + "absolute_offset": { + "type": "number" + }, + "submatches": { + "type": "array", + "items": { + "type": "object", + "properties": { + "match": { + "type": "object", + "properties": { + "text": { + "type": "string" + } + }, + "required": ["text"] + }, + "start": { + "type": "number" + }, + "end": { + "type": "number" + } + }, + "required": ["match", "start", "end"] + } + } + }, + "required": ["path", "lines", "line_number", "absolute_offset", "submatches"] + } + } + } + } + } + } + } + }, + "/find/file": { + "get": { + "operationId": "find.files", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "query", + "schema": { + "type": "string" + }, + "required": true + }, + { + "in": "query", + "name": "dirs", + "schema": { + "type": "string", + "enum": ["true", "false"] + } + }, + { + "in": "query", + "name": "type", + "schema": { + "type": "string", + "enum": ["file", "directory"] + } + }, + { + "in": "query", + "name": "limit", + "schema": { + "type": "integer", + "minimum": 1, + "maximum": 200 + } + } + ], + "summary": "Find files", + "description": "Search for files or directories by name or pattern in the project directory.", + "responses": { + "200": { + "description": "File paths", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + }, + "/find/symbol": { + "get": { + "operationId": "find.symbols", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "query", + "schema": { + "type": "string" + }, + "required": true + } + ], + "summary": "Find symbols", + "description": "Search for workspace symbols like functions, classes, and variables using LSP.", + "responses": { + "200": { + "description": "Symbols", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Symbol" + } + } + } + } + } + } + } + }, + "/file": { + "get": { + "operationId": "file.list", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "path", + "schema": { + "type": "string" + }, + "required": true + } + ], + "summary": "List files", + "description": "List files and directories in a specified path.", + "responses": { + "200": { + "description": "Files and directories", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FileNode" + } + } + } + } + } + } + } + }, + "/file/content": { + "get": { + "operationId": "file.read", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "path", + "schema": { + "type": "string" + }, + "required": true + } + ], + "summary": "Read file", + "description": "Read the content of a specified file.", + "responses": { + "200": { + "description": "File content", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FileContent" + } + } + } + } + } + } + }, + "/file/status": { + "get": { + "operationId": "file.status", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Get file status", + "description": "Get the git status of all files in the project.", + "responses": { + "200": { + "description": "File status", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/File" + } + } + } + } + } + } + } + }, + "/mcp": { + "get": { + "operationId": "mcp.status", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Get MCP status", + "description": "Get the status of all Model Context Protocol (MCP) servers.", + "responses": { + "200": { + "description": "MCP server status", + "content": { + "application/json": { + "schema": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "$ref": "#/components/schemas/MCPStatus" + } + } + } + } + } + } + }, + "post": { + "operationId": "mcp.add", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Add MCP server", + "description": "Dynamically add a new Model Context Protocol (MCP) server to the system.", + "responses": { + "200": { + "description": "MCP server added successfully", + "content": { + "application/json": { + "schema": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "$ref": "#/components/schemas/MCPStatus" + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "config": { + "anyOf": [ + { + "$ref": "#/components/schemas/McpLocalConfig" + }, + { + "$ref": "#/components/schemas/McpRemoteConfig" + } + ] + } + }, + "required": ["name", "config"] + } + } + } + } + } + }, + "/mcp/{name}/auth": { + "post": { + "operationId": "mcp.auth.start", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "schema": { + "type": "string" + }, + "in": "path", + "name": "name", + "required": true + } + ], + "summary": "Start MCP OAuth", + "description": "Start OAuth authentication flow for a Model Context Protocol (MCP) server.", + "responses": { + "200": { + "description": "OAuth flow started", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "authorizationUrl": { + "description": "URL to open in browser for authorization", + "type": "string" + } + }, + "required": ["authorizationUrl"] + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + } + }, + "delete": { + "operationId": "mcp.auth.remove", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "schema": { + "type": "string" + }, + "in": "path", + "name": "name", + "required": true + } + ], + "summary": "Remove MCP OAuth", + "description": "Remove OAuth credentials for an MCP server", + "responses": { + "200": { + "description": "OAuth credentials removed", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "const": true + } + }, + "required": ["success"] + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + } + } + }, + "/mcp/{name}/auth/callback": { + "post": { + "operationId": "mcp.auth.callback", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "schema": { + "type": "string" + }, + "in": "path", + "name": "name", + "required": true + } + ], + "summary": "Complete MCP OAuth", + "description": "Complete OAuth authentication for a Model Context Protocol (MCP) server using the authorization code.", + "responses": { + "200": { + "description": "OAuth authentication completed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MCPStatus" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "code": { + "description": "Authorization code from OAuth callback", + "type": "string" + } + }, + "required": ["code"] + } + } + } + } + } + }, + "/mcp/{name}/auth/authenticate": { + "post": { + "operationId": "mcp.auth.authenticate", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "schema": { + "type": "string" + }, + "in": "path", + "name": "name", + "required": true + } + ], + "summary": "Authenticate MCP OAuth", + "description": "Start OAuth flow and wait for callback (opens browser)", + "responses": { + "200": { + "description": "OAuth authentication completed", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MCPStatus" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + } + } + }, + "/mcp/{name}/connect": { + "post": { + "operationId": "mcp.connect", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "name", + "schema": { + "type": "string" + }, + "required": true + } + ], + "description": "Connect an MCP server", + "responses": { + "200": { + "description": "MCP server connected successfully", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, + "/mcp/{name}/disconnect": { + "post": { + "operationId": "mcp.disconnect", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "name", + "schema": { + "type": "string" + }, + "required": true + } + ], + "description": "Disconnect an MCP server", + "responses": { + "200": { + "description": "MCP server disconnected successfully", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, + "/tui/append-prompt": { + "post": { + "operationId": "tui.appendPrompt", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Append TUI prompt", + "description": "Append prompt to the TUI", + "responses": { + "200": { + "description": "Prompt processed successfully", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "text": { + "type": "string" + } + }, + "required": ["text"] + } + } + } + } + } + }, + "/tui/open-help": { + "post": { + "operationId": "tui.openHelp", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Open help dialog", + "description": "Open the help dialog in the TUI to display user assistance information.", + "responses": { + "200": { + "description": "Help dialog opened successfully", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, + "/tui/open-sessions": { + "post": { + "operationId": "tui.openSessions", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Open sessions dialog", + "description": "Open the session dialog", + "responses": { + "200": { + "description": "Session dialog opened successfully", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, + "/tui/open-themes": { + "post": { + "operationId": "tui.openThemes", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Open themes dialog", + "description": "Open the theme dialog", + "responses": { + "200": { + "description": "Theme dialog opened successfully", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, + "/tui/open-models": { + "post": { + "operationId": "tui.openModels", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Open models dialog", + "description": "Open the model dialog", + "responses": { + "200": { + "description": "Model dialog opened successfully", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, + "/tui/submit-prompt": { + "post": { + "operationId": "tui.submitPrompt", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Submit TUI prompt", + "description": "Submit the prompt", + "responses": { + "200": { + "description": "Prompt submitted successfully", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, + "/tui/clear-prompt": { + "post": { + "operationId": "tui.clearPrompt", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Clear TUI prompt", + "description": "Clear the prompt", + "responses": { + "200": { + "description": "Prompt cleared successfully", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, + "/tui/execute-command": { + "post": { + "operationId": "tui.executeCommand", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Execute TUI command", + "description": "Execute a TUI command (e.g. agent_cycle)", + "responses": { + "200": { + "description": "Command executed successfully", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "command": { + "type": "string" + } + }, + "required": ["command"] + } + } + } + } + } + }, + "/tui/show-toast": { + "post": { + "operationId": "tui.showToast", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Show TUI toast", + "description": "Show a toast notification in the TUI", + "responses": { + "200": { + "description": "Toast notification shown successfully", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "message": { + "type": "string" + }, + "variant": { + "type": "string", + "enum": ["info", "success", "warning", "error"] + }, + "duration": { + "description": "Duration in milliseconds", + "default": 5000, + "type": "number" + } + }, + "required": ["message", "variant"] + } + } + } + } + } + }, + "/tui/publish": { + "post": { + "operationId": "tui.publish", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Publish TUI event", + "description": "Publish a TUI event", + "responses": { + "200": { + "description": "Event published successfully", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/Event.tui.prompt.append" + }, + { + "$ref": "#/components/schemas/Event.tui.command.execute" + }, + { + "$ref": "#/components/schemas/Event.tui.toast.show" + }, + { + "$ref": "#/components/schemas/Event.tui.session.select" + } + ] + } + } + } + } + } + }, + "/tui/select-session": { + "post": { + "operationId": "tui.selectSession", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Select session", + "description": "Navigate the TUI to display the specified session.", + "responses": { + "200": { + "description": "Session selected successfully", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + }, + "404": { + "description": "Not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotFoundError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "sessionID": { + "description": "Session ID to navigate to", + "type": "string", + "pattern": "^ses" + } + }, + "required": ["sessionID"] + } + } + } + } + } + }, + "/tui/control/next": { + "get": { + "operationId": "tui.control.next", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Get next TUI request", + "description": "Retrieve the next TUI (Terminal User Interface) request from the queue for processing.", + "responses": { + "200": { + "description": "Next TUI request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "path": { + "type": "string" + }, + "body": {} + }, + "required": ["path", "body"] + } + } + } + } + } + } + }, + "/tui/control/response": { + "post": { + "operationId": "tui.control.response", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Submit TUI response", + "description": "Submit a response to the TUI request queue to complete a pending request.", + "responses": { + "200": { + "description": "Response submitted successfully", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": {} + } + } + } + } + }, + "/instance/dispose": { + "post": { + "operationId": "instance.dispose", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Dispose instance", + "description": "Clean up and dispose the current OpenCode instance, releasing all resources.", + "responses": { + "200": { + "description": "Instance disposed", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + } + } + } + }, + "/path": { + "get": { + "operationId": "path.get", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Get paths", + "description": "Retrieve the current working directory and related path information for the OpenCode instance.", + "responses": { + "200": { + "description": "Path", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Path" + } + } + } + } + } + } + }, + "/vcs": { + "get": { + "operationId": "vcs.get", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Get VCS info", + "description": "Retrieve version control system (VCS) information for the current project, such as git branch.", + "responses": { + "200": { + "description": "VCS info", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VcsInfo" + } + } + } + } + } + } + }, + "/command": { + "get": { + "operationId": "command.list", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "List commands", + "description": "Get a list of all available commands in the OpenCode system.", + "responses": { + "200": { + "description": "List of commands", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Command" + } + } + } + } + } + } + } + }, + "/log": { + "post": { + "operationId": "app.log", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Write log", + "description": "Write a log entry to the server logs with specified level and metadata.", + "responses": { + "200": { + "description": "Log entry written successfully", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "service": { + "description": "Service name for the log entry", + "type": "string" + }, + "level": { + "description": "Log level", + "type": "string", + "enum": ["debug", "info", "error", "warn"] + }, + "message": { + "description": "Log message", + "type": "string" + }, + "extra": { + "description": "Additional metadata for the log entry", + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + }, + "required": ["service", "level", "message"] + } + } + } + } + } + }, + "/agent": { + "get": { + "operationId": "app.agents", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "List agents", + "description": "Get a list of all available AI agents in the OpenCode system.", + "responses": { + "200": { + "description": "List of agents", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Agent" + } + } + } + } + } + } + } + }, + "/skill": { + "get": { + "operationId": "app.skills", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "List skills", + "description": "Get a list of all available skills in the OpenCode system.", + "responses": { + "200": { + "description": "List of skills", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "location": { + "type": "string" + } + }, + "required": ["name", "description", "location"] + } + } + } + } + } + } + } + }, + "/lsp": { + "get": { + "operationId": "lsp.status", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Get LSP status", + "description": "Get LSP server status", + "responses": { + "200": { + "description": "LSP server status", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LSPStatus" + } + } + } + } + } + } + } + }, + "/formatter": { + "get": { + "operationId": "formatter.status", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Get formatter status", + "description": "Get formatter status", + "responses": { + "200": { + "description": "Formatter status", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FormatterStatus" + } + } + } + } + } + } + } + }, + "/auth/{providerID}": { + "put": { + "operationId": "auth.set", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + }, + { + "in": "path", + "name": "providerID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "summary": "Set auth credentials", + "description": "Set authentication credentials", + "responses": { + "200": { + "description": "Successfully set authentication credentials", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BadRequestError" + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Auth" + } + } + } + } + } + }, + "/event": { + "get": { + "operationId": "event.subscribe", + "parameters": [ + { + "in": "query", + "name": "directory", + "schema": { + "type": "string" + } + } + ], + "summary": "Subscribe to events", + "description": "Get events", + "responses": { + "200": { + "description": "Event stream", + "content": { + "text/event-stream": { + "schema": { + "$ref": "#/components/schemas/Event" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "Event.server.connected": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "server.connected" + }, + "properties": { + "type": "object", + "properties": {} + } + }, + "required": ["type", "properties"] + }, + "Event.global.disposed": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "global.disposed" + }, + "properties": { + "type": "object", + "properties": {} + } + }, + "required": ["type", "properties"] + }, + "Event.tui.prompt.append": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "tui.prompt.append" + }, + "properties": { + "type": "object", + "properties": { + "text": { + "type": "string" + } + }, + "required": ["text"] + } + }, + "required": ["type", "properties"] + }, + "Event.tui.command.execute": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "tui.command.execute" + }, + "properties": { + "type": "object", + "properties": { + "command": { + "anyOf": [ + { + "type": "string", + "enum": [ + "session.list", + "session.new", + "session.share", + "session.interrupt", + "session.compact", + "session.page.up", + "session.page.down", + "session.line.up", + "session.line.down", + "session.half.page.up", + "session.half.page.down", + "session.first", + "session.last", + "prompt.clear", + "prompt.submit", + "agent.cycle" + ] + }, + { + "type": "string" + } + ] + } + }, + "required": ["command"] + } + }, + "required": ["type", "properties"] + }, + "Event.tui.toast.show": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "tui.toast.show" + }, + "properties": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "message": { + "type": "string" + }, + "variant": { + "type": "string", + "enum": ["info", "success", "warning", "error"] + }, + "duration": { + "description": "Duration in milliseconds", + "default": 5000, + "type": "number" + } + }, + "required": ["message", "variant"] + } + }, + "required": ["type", "properties"] + }, + "Event.tui.session.select": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "tui.session.select" + }, + "properties": { + "type": "object", + "properties": { + "sessionID": { + "description": "Session ID to navigate to", + "type": "string", + "pattern": "^ses" + } + }, + "required": ["sessionID"] + } + }, + "required": ["type", "properties"] + }, + "Event.installation.updated": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "installation.updated" + }, + "properties": { + "type": "object", + "properties": { + "version": { + "type": "string" + } + }, + "required": ["version"] + } + }, + "required": ["type", "properties"] + }, + "Event.installation.update-available": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "installation.update-available" + }, + "properties": { + "type": "object", + "properties": { + "version": { + "type": "string" + } + }, + "required": ["version"] + } + }, + "required": ["type", "properties"] + }, + "Project": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "worktree": { + "type": "string" + }, + "vcs": { + "type": "string", + "const": "git" + }, + "name": { + "type": "string" + }, + "icon": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "override": { + "type": "string" + }, + "color": { + "type": "string" + } + } + }, + "commands": { + "type": "object", + "properties": { + "start": { + "description": "Startup script to run when creating a new workspace (worktree)", + "type": "string" + } + } + }, + "time": { + "type": "object", + "properties": { + "created": { + "type": "number" + }, + "updated": { + "type": "number" + }, + "initialized": { + "type": "number" + } + }, + "required": ["created", "updated"] + }, + "sandboxes": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": ["id", "worktree", "time", "sandboxes"] + }, + "Event.project.updated": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "project.updated" + }, + "properties": { + "$ref": "#/components/schemas/Project" + } + }, + "required": ["type", "properties"] + }, + "Event.server.instance.disposed": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "server.instance.disposed" + }, + "properties": { + "type": "object", + "properties": { + "directory": { + "type": "string" + } + }, + "required": ["directory"] + } + }, + "required": ["type", "properties"] + }, + "Event.file.edited": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "file.edited" + }, + "properties": { + "type": "object", + "properties": { + "file": { + "type": "string" + } + }, + "required": ["file"] + } + }, + "required": ["type", "properties"] + }, + "Event.worktree.ready": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "worktree.ready" + }, + "properties": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "branch": { + "type": "string" + } + }, + "required": ["name", "branch"] + } + }, + "required": ["type", "properties"] + }, + "Event.worktree.failed": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "worktree.failed" + }, + "properties": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + }, + "required": ["message"] + } + }, + "required": ["type", "properties"] + }, + "Event.lsp.client.diagnostics": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "lsp.client.diagnostics" + }, + "properties": { + "type": "object", + "properties": { + "serverID": { + "type": "string" + }, + "path": { + "type": "string" + } + }, + "required": ["serverID", "path"] + } + }, + "required": ["type", "properties"] + }, + "PermissionRequest": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^per.*" + }, + "sessionID": { + "type": "string", + "pattern": "^ses.*" + }, + "permission": { + "type": "string" + }, + "patterns": { + "type": "array", + "items": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "always": { + "type": "array", + "items": { + "type": "string" + } + }, + "tool": { + "type": "object", + "properties": { + "messageID": { + "type": "string" + }, + "callID": { + "type": "string" + } + }, + "required": ["messageID", "callID"] + } + }, + "required": ["id", "sessionID", "permission", "patterns", "metadata", "always"] + }, + "Event.permission.asked": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "permission.asked" + }, + "properties": { + "$ref": "#/components/schemas/PermissionRequest" + } + }, + "required": ["type", "properties"] + }, + "Event.permission.replied": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "permission.replied" + }, + "properties": { + "type": "object", + "properties": { + "sessionID": { + "type": "string" + }, + "requestID": { + "type": "string" + }, + "reply": { + "type": "string", + "enum": ["once", "always", "reject"] + } + }, + "required": ["sessionID", "requestID", "reply"] + } + }, + "required": ["type", "properties"] + }, + "SessionStatus": { + "anyOf": [ + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "idle" + } + }, + "required": ["type"] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "retry" + }, + "attempt": { + "type": "number" + }, + "message": { + "type": "string" + }, + "next": { + "type": "number" + } + }, + "required": ["type", "attempt", "message", "next"] + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "busy" + } + }, + "required": ["type"] + } + ] + }, + "Event.session.status": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "session.status" + }, + "properties": { + "type": "object", + "properties": { + "sessionID": { + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/SessionStatus" + } + }, + "required": ["sessionID", "status"] + } + }, + "required": ["type", "properties"] + }, + "Event.session.idle": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "session.idle" + }, + "properties": { + "type": "object", + "properties": { + "sessionID": { + "type": "string" + } + }, + "required": ["sessionID"] + } + }, + "required": ["type", "properties"] + }, + "QuestionOption": { + "type": "object", + "properties": { + "label": { + "description": "Display text (1-5 words, concise)", + "type": "string" + }, + "description": { + "description": "Explanation of choice", + "type": "string" + } + }, + "required": ["label", "description"] + }, + "QuestionInfo": { + "type": "object", + "properties": { + "question": { + "description": "Complete question", + "type": "string" + }, + "header": { + "description": "Very short label (max 30 chars)", + "type": "string" + }, + "options": { + "description": "Available choices", + "type": "array", + "items": { + "$ref": "#/components/schemas/QuestionOption" + } + }, + "multiple": { + "description": "Allow selecting multiple choices", + "type": "boolean" + }, + "custom": { + "description": "Allow typing a custom answer (default: true)", + "type": "boolean" + } + }, + "required": ["question", "header", "options"] + }, + "QuestionRequest": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^que.*" + }, + "sessionID": { + "type": "string", + "pattern": "^ses.*" + }, + "questions": { + "description": "Questions to ask", + "type": "array", + "items": { + "$ref": "#/components/schemas/QuestionInfo" + } + }, + "tool": { + "type": "object", + "properties": { + "messageID": { + "type": "string" + }, + "callID": { + "type": "string" + } + }, + "required": ["messageID", "callID"] + } + }, + "required": ["id", "sessionID", "questions"] + }, + "Event.question.asked": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "question.asked" + }, + "properties": { + "$ref": "#/components/schemas/QuestionRequest" + } + }, + "required": ["type", "properties"] + }, + "QuestionAnswer": { + "type": "array", + "items": { + "type": "string" + } + }, + "Event.question.replied": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "question.replied" + }, + "properties": { + "type": "object", + "properties": { + "sessionID": { + "type": "string" + }, + "requestID": { + "type": "string" + }, + "answers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QuestionAnswer" + } + } + }, + "required": ["sessionID", "requestID", "answers"] + } + }, + "required": ["type", "properties"] + }, + "Event.question.rejected": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "question.rejected" + }, + "properties": { + "type": "object", + "properties": { + "sessionID": { + "type": "string" + }, + "requestID": { + "type": "string" + } + }, + "required": ["sessionID", "requestID"] + } + }, + "required": ["type", "properties"] + }, + "Todo": { + "type": "object", + "properties": { + "content": { + "description": "Brief description of the task", + "type": "string" + }, + "status": { + "description": "Current status of the task: pending, in_progress, completed, cancelled", + "type": "string" + }, + "priority": { + "description": "Priority level of the task: high, medium, low", + "type": "string" + }, + "id": { + "description": "Unique identifier for the todo item", + "type": "string" + } + }, + "required": ["content", "status", "priority", "id"] + }, + "Event.todo.updated": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "todo.updated" + }, + "properties": { + "type": "object", + "properties": { + "sessionID": { + "type": "string" + }, + "todos": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Todo" + } + } + }, + "required": ["sessionID", "todos"] + } + }, + "required": ["type", "properties"] + }, + "Pty": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^pty.*" + }, + "title": { + "type": "string" + }, + "command": { + "type": "string" + }, + "args": { + "type": "array", + "items": { + "type": "string" + } + }, + "cwd": { + "type": "string" + }, + "status": { + "type": "string", + "enum": ["running", "exited"] + }, + "pid": { + "type": "number" + } + }, + "required": ["id", "title", "command", "args", "cwd", "status", "pid"] + }, + "Event.pty.created": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "pty.created" + }, + "properties": { + "type": "object", + "properties": { + "info": { + "$ref": "#/components/schemas/Pty" + } + }, + "required": ["info"] + } + }, + "required": ["type", "properties"] + }, + "Event.pty.updated": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "pty.updated" + }, + "properties": { + "type": "object", + "properties": { + "info": { + "$ref": "#/components/schemas/Pty" + } + }, + "required": ["info"] + } + }, + "required": ["type", "properties"] + }, + "Event.pty.exited": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "pty.exited" + }, + "properties": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^pty.*" + }, + "exitCode": { + "type": "number" + } + }, + "required": ["id", "exitCode"] + } + }, + "required": ["type", "properties"] + }, + "Event.pty.deleted": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "pty.deleted" + }, + "properties": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^pty.*" + } + }, + "required": ["id"] + } + }, + "required": ["type", "properties"] + }, + "Event.file.watcher.updated": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "file.watcher.updated" + }, + "properties": { + "type": "object", + "properties": { + "file": { + "type": "string" + }, + "event": { + "anyOf": [ + { + "type": "string", + "const": "add" + }, + { + "type": "string", + "const": "change" + }, + { + "type": "string", + "const": "unlink" + } + ] + } + }, + "required": ["file", "event"] + } + }, + "required": ["type", "properties"] + }, + "Event.mcp.tools.changed": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "mcp.tools.changed" + }, + "properties": { + "type": "object", + "properties": { + "server": { + "type": "string" + } + }, + "required": ["server"] + } + }, + "required": ["type", "properties"] + }, + "Event.mcp.browser.open.failed": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "mcp.browser.open.failed" + }, + "properties": { + "type": "object", + "properties": { + "mcpName": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": ["mcpName", "url"] + } + }, + "required": ["type", "properties"] + }, + "Event.lsp.updated": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "lsp.updated" + }, + "properties": { + "type": "object", + "properties": {} + } + }, + "required": ["type", "properties"] + }, + "Event.vcs.branch.updated": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "vcs.branch.updated" + }, + "properties": { + "type": "object", + "properties": { + "branch": { + "type": "string" + } + } + } + }, + "required": ["type", "properties"] + }, + "Event.command.executed": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "command.executed" + }, + "properties": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "sessionID": { + "type": "string", + "pattern": "^ses.*" + }, + "arguments": { + "type": "string" + }, + "messageID": { + "type": "string", + "pattern": "^msg.*" + } + }, + "required": ["name", "sessionID", "arguments", "messageID"] + } + }, + "required": ["type", "properties"] + }, + "FileDiff": { + "type": "object", + "properties": { + "file": { + "type": "string" + }, + "before": { + "type": "string" + }, + "after": { + "type": "string" + }, + "additions": { + "type": "number" + }, + "deletions": { + "type": "number" + } + }, + "required": ["file", "before", "after", "additions", "deletions"] + }, + "UserMessage": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "sessionID": { + "type": "string" + }, + "role": { + "type": "string", + "const": "user" + }, + "time": { + "type": "object", + "properties": { + "created": { + "type": "number" + } + }, + "required": ["created"] + }, + "summary": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "body": { + "type": "string" + }, + "diffs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FileDiff" + } + } + }, + "required": ["diffs"] + }, + "agent": { + "type": "string" + }, + "model": { + "type": "object", + "properties": { + "providerID": { + "type": "string" + }, + "modelID": { + "type": "string" + } + }, + "required": ["providerID", "modelID"] + }, + "system": { + "type": "string" + }, + "tools": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "boolean" + } + }, + "variant": { + "type": "string" + } + }, + "required": ["id", "sessionID", "role", "time", "agent", "model"] + }, + "ProviderAuthError": { + "type": "object", + "properties": { + "name": { + "type": "string", + "const": "ProviderAuthError" + }, + "data": { + "type": "object", + "properties": { + "providerID": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["providerID", "message"] + } + }, + "required": ["name", "data"] + }, + "UnknownError": { + "type": "object", + "properties": { + "name": { + "type": "string", + "const": "UnknownError" + }, + "data": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + }, + "required": ["message"] + } + }, + "required": ["name", "data"] + }, + "MessageOutputLengthError": { + "type": "object", + "properties": { + "name": { + "type": "string", + "const": "MessageOutputLengthError" + }, + "data": { + "type": "object", + "properties": {} + } + }, + "required": ["name", "data"] + }, + "MessageAbortedError": { + "type": "object", + "properties": { + "name": { + "type": "string", + "const": "MessageAbortedError" + }, + "data": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + }, + "required": ["message"] + } + }, + "required": ["name", "data"] + }, + "APIError": { + "type": "object", + "properties": { + "name": { + "type": "string", + "const": "APIError" + }, + "data": { + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "statusCode": { + "type": "number" + }, + "isRetryable": { + "type": "boolean" + }, + "responseHeaders": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "string" + } + }, + "responseBody": { + "type": "string" + }, + "metadata": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "string" + } + } + }, + "required": ["message", "isRetryable"] + } + }, + "required": ["name", "data"] + }, + "AssistantMessage": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "sessionID": { + "type": "string" + }, + "role": { + "type": "string", + "const": "assistant" + }, + "time": { + "type": "object", + "properties": { + "created": { + "type": "number" + }, + "completed": { + "type": "number" + } + }, + "required": ["created"] + }, + "error": { + "anyOf": [ + { + "$ref": "#/components/schemas/ProviderAuthError" + }, + { + "$ref": "#/components/schemas/UnknownError" + }, + { + "$ref": "#/components/schemas/MessageOutputLengthError" + }, + { + "$ref": "#/components/schemas/MessageAbortedError" + }, + { + "$ref": "#/components/schemas/APIError" + } + ] + }, + "parentID": { + "type": "string" + }, + "modelID": { + "type": "string" + }, + "providerID": { + "type": "string" + }, + "mode": { + "type": "string" + }, + "agent": { + "type": "string" + }, + "path": { + "type": "object", + "properties": { + "cwd": { + "type": "string" + }, + "root": { + "type": "string" + } + }, + "required": ["cwd", "root"] + }, + "summary": { + "type": "boolean" + }, + "cost": { + "type": "number" + }, + "tokens": { + "type": "object", + "properties": { + "input": { + "type": "number" + }, + "output": { + "type": "number" + }, + "reasoning": { + "type": "number" + }, + "cache": { + "type": "object", + "properties": { + "read": { + "type": "number" + }, + "write": { + "type": "number" + } + }, + "required": ["read", "write"] + } + }, + "required": ["input", "output", "reasoning", "cache"] + }, + "finish": { + "type": "string" + } + }, + "required": [ + "id", + "sessionID", + "role", + "time", + "parentID", + "modelID", + "providerID", + "mode", + "agent", + "path", + "cost", + "tokens" + ] + }, + "Message": { + "anyOf": [ + { + "$ref": "#/components/schemas/UserMessage" + }, + { + "$ref": "#/components/schemas/AssistantMessage" + } + ] + }, + "Event.message.updated": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "message.updated" + }, + "properties": { + "type": "object", + "properties": { + "info": { + "$ref": "#/components/schemas/Message" + } + }, + "required": ["info"] + } + }, + "required": ["type", "properties"] + }, + "Event.message.removed": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "message.removed" + }, + "properties": { + "type": "object", + "properties": { + "sessionID": { + "type": "string" + }, + "messageID": { + "type": "string" + } + }, + "required": ["sessionID", "messageID"] + } + }, + "required": ["type", "properties"] + }, + "TextPart": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "sessionID": { + "type": "string" + }, + "messageID": { + "type": "string" + }, + "type": { + "type": "string", + "const": "text" + }, + "text": { + "type": "string" + }, + "synthetic": { + "type": "boolean" + }, + "ignored": { + "type": "boolean" + }, + "time": { + "type": "object", + "properties": { + "start": { + "type": "number" + }, + "end": { + "type": "number" + } + }, + "required": ["start"] + }, + "metadata": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + }, + "required": ["id", "sessionID", "messageID", "type", "text"] + }, + "ReasoningPart": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "sessionID": { + "type": "string" + }, + "messageID": { + "type": "string" + }, + "type": { + "type": "string", + "const": "reasoning" + }, + "text": { + "type": "string" + }, + "metadata": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "time": { + "type": "object", + "properties": { + "start": { + "type": "number" + }, + "end": { + "type": "number" + } + }, + "required": ["start"] + } + }, + "required": ["id", "sessionID", "messageID", "type", "text", "time"] + }, + "FilePartSourceText": { + "type": "object", + "properties": { + "value": { + "type": "string" + }, + "start": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "end": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } + }, + "required": ["value", "start", "end"] + }, + "FileSource": { + "type": "object", + "properties": { + "text": { + "$ref": "#/components/schemas/FilePartSourceText" + }, + "type": { + "type": "string", + "const": "file" + }, + "path": { + "type": "string" + } + }, + "required": ["text", "type", "path"] + }, + "Range": { + "type": "object", + "properties": { + "start": { + "type": "object", + "properties": { + "line": { + "type": "number" + }, + "character": { + "type": "number" + } + }, + "required": ["line", "character"] + }, + "end": { + "type": "object", + "properties": { + "line": { + "type": "number" + }, + "character": { + "type": "number" + } + }, + "required": ["line", "character"] + } + }, + "required": ["start", "end"] + }, + "SymbolSource": { + "type": "object", + "properties": { + "text": { + "$ref": "#/components/schemas/FilePartSourceText" + }, + "type": { + "type": "string", + "const": "symbol" + }, + "path": { + "type": "string" + }, + "range": { + "$ref": "#/components/schemas/Range" + }, + "name": { + "type": "string" + }, + "kind": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } + }, + "required": ["text", "type", "path", "range", "name", "kind"] + }, + "ResourceSource": { + "type": "object", + "properties": { + "text": { + "$ref": "#/components/schemas/FilePartSourceText" + }, + "type": { + "type": "string", + "const": "resource" + }, + "clientName": { + "type": "string" + }, + "uri": { + "type": "string" + } + }, + "required": ["text", "type", "clientName", "uri"] + }, + "FilePartSource": { + "anyOf": [ + { + "$ref": "#/components/schemas/FileSource" + }, + { + "$ref": "#/components/schemas/SymbolSource" + }, + { + "$ref": "#/components/schemas/ResourceSource" + } + ] + }, + "FilePart": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "sessionID": { + "type": "string" + }, + "messageID": { + "type": "string" + }, + "type": { + "type": "string", + "const": "file" + }, + "mime": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "url": { + "type": "string" + }, + "source": { + "$ref": "#/components/schemas/FilePartSource" + } + }, + "required": ["id", "sessionID", "messageID", "type", "mime", "url"] + }, + "ToolStatePending": { + "type": "object", + "properties": { + "status": { + "type": "string", + "const": "pending" + }, + "input": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "raw": { + "type": "string" + } + }, + "required": ["status", "input", "raw"] + }, + "ToolStateRunning": { + "type": "object", + "properties": { + "status": { + "type": "string", + "const": "running" + }, + "input": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "title": { + "type": "string" + }, + "metadata": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "time": { + "type": "object", + "properties": { + "start": { + "type": "number" + } + }, + "required": ["start"] + } + }, + "required": ["status", "input", "time"] + }, + "ToolStateCompleted": { + "type": "object", + "properties": { + "status": { + "type": "string", + "const": "completed" + }, + "input": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "output": { + "type": "string" + }, + "title": { + "type": "string" + }, + "metadata": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "time": { + "type": "object", + "properties": { + "start": { + "type": "number" + }, + "end": { + "type": "number" + }, + "compacted": { + "type": "number" + } + }, + "required": ["start", "end"] + }, + "attachments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FilePart" + } + } + }, + "required": ["status", "input", "output", "title", "metadata", "time"] + }, + "ToolStateError": { + "type": "object", + "properties": { + "status": { + "type": "string", + "const": "error" + }, + "input": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "error": { + "type": "string" + }, + "metadata": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "time": { + "type": "object", + "properties": { + "start": { + "type": "number" + }, + "end": { + "type": "number" + } + }, + "required": ["start", "end"] + } + }, + "required": ["status", "input", "error", "time"] + }, + "ToolState": { + "anyOf": [ + { + "$ref": "#/components/schemas/ToolStatePending" + }, + { + "$ref": "#/components/schemas/ToolStateRunning" + }, + { + "$ref": "#/components/schemas/ToolStateCompleted" + }, + { + "$ref": "#/components/schemas/ToolStateError" + } + ] + }, + "ToolPart": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "sessionID": { + "type": "string" + }, + "messageID": { + "type": "string" + }, + "type": { + "type": "string", + "const": "tool" + }, + "callID": { + "type": "string" + }, + "tool": { + "type": "string" + }, + "state": { + "$ref": "#/components/schemas/ToolState" + }, + "metadata": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + }, + "required": ["id", "sessionID", "messageID", "type", "callID", "tool", "state"] + }, + "StepStartPart": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "sessionID": { + "type": "string" + }, + "messageID": { + "type": "string" + }, + "type": { + "type": "string", + "const": "step-start" + }, + "snapshot": { + "type": "string" + } + }, + "required": ["id", "sessionID", "messageID", "type"] + }, + "StepFinishPart": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "sessionID": { + "type": "string" + }, + "messageID": { + "type": "string" + }, + "type": { + "type": "string", + "const": "step-finish" + }, + "reason": { + "type": "string" + }, + "snapshot": { + "type": "string" + }, + "cost": { + "type": "number" + }, + "tokens": { + "type": "object", + "properties": { + "input": { + "type": "number" + }, + "output": { + "type": "number" + }, + "reasoning": { + "type": "number" + }, + "cache": { + "type": "object", + "properties": { + "read": { + "type": "number" + }, + "write": { + "type": "number" + } + }, + "required": ["read", "write"] + } + }, + "required": ["input", "output", "reasoning", "cache"] + } + }, + "required": ["id", "sessionID", "messageID", "type", "reason", "cost", "tokens"] + }, + "SnapshotPart": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "sessionID": { + "type": "string" + }, + "messageID": { + "type": "string" + }, + "type": { + "type": "string", + "const": "snapshot" + }, + "snapshot": { + "type": "string" + } + }, + "required": ["id", "sessionID", "messageID", "type", "snapshot"] + }, + "PatchPart": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "sessionID": { + "type": "string" + }, + "messageID": { + "type": "string" + }, + "type": { + "type": "string", + "const": "patch" + }, + "hash": { + "type": "string" + }, + "files": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": ["id", "sessionID", "messageID", "type", "hash", "files"] + }, + "AgentPart": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "sessionID": { + "type": "string" + }, + "messageID": { + "type": "string" + }, + "type": { + "type": "string", + "const": "agent" + }, + "name": { + "type": "string" + }, + "source": { + "type": "object", + "properties": { + "value": { + "type": "string" + }, + "start": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "end": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } + }, + "required": ["value", "start", "end"] + } + }, + "required": ["id", "sessionID", "messageID", "type", "name"] + }, + "RetryPart": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "sessionID": { + "type": "string" + }, + "messageID": { + "type": "string" + }, + "type": { + "type": "string", + "const": "retry" + }, + "attempt": { + "type": "number" + }, + "error": { + "$ref": "#/components/schemas/APIError" + }, + "time": { + "type": "object", + "properties": { + "created": { + "type": "number" + } + }, + "required": ["created"] + } + }, + "required": ["id", "sessionID", "messageID", "type", "attempt", "error", "time"] + }, + "CompactionPart": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "sessionID": { + "type": "string" + }, + "messageID": { + "type": "string" + }, + "type": { + "type": "string", + "const": "compaction" + }, + "auto": { + "type": "boolean" + } + }, + "required": ["id", "sessionID", "messageID", "type", "auto"] + }, + "Part": { + "anyOf": [ + { + "$ref": "#/components/schemas/TextPart" + }, + { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "sessionID": { + "type": "string" + }, + "messageID": { + "type": "string" + }, + "type": { + "type": "string", + "const": "subtask" + }, + "prompt": { + "type": "string" + }, + "description": { + "type": "string" + }, + "agent": { + "type": "string" + }, + "model": { + "type": "object", + "properties": { + "providerID": { + "type": "string" + }, + "modelID": { + "type": "string" + } + }, + "required": ["providerID", "modelID"] + }, + "command": { + "type": "string" + } + }, + "required": ["id", "sessionID", "messageID", "type", "prompt", "description", "agent"] + }, + { + "$ref": "#/components/schemas/ReasoningPart" + }, + { + "$ref": "#/components/schemas/FilePart" + }, + { + "$ref": "#/components/schemas/ToolPart" + }, + { + "$ref": "#/components/schemas/StepStartPart" + }, + { + "$ref": "#/components/schemas/StepFinishPart" + }, + { + "$ref": "#/components/schemas/SnapshotPart" + }, + { + "$ref": "#/components/schemas/PatchPart" + }, + { + "$ref": "#/components/schemas/AgentPart" + }, + { + "$ref": "#/components/schemas/RetryPart" + }, + { + "$ref": "#/components/schemas/CompactionPart" + } + ] + }, + "Event.message.part.updated": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "message.part.updated" + }, + "properties": { + "type": "object", + "properties": { + "part": { + "$ref": "#/components/schemas/Part" + }, + "delta": { + "type": "string" + } + }, + "required": ["part"] + } + }, + "required": ["type", "properties"] + }, + "Event.message.part.removed": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "message.part.removed" + }, + "properties": { + "type": "object", + "properties": { + "sessionID": { + "type": "string" + }, + "messageID": { + "type": "string" + }, + "partID": { + "type": "string" + } + }, + "required": ["sessionID", "messageID", "partID"] + } + }, + "required": ["type", "properties"] + }, + "Event.session.compacted": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "session.compacted" + }, + "properties": { + "type": "object", + "properties": { + "sessionID": { + "type": "string" + } + }, + "required": ["sessionID"] + } + }, + "required": ["type", "properties"] + }, + "PermissionAction": { + "type": "string", + "enum": ["allow", "deny", "ask"] + }, + "PermissionRule": { + "type": "object", + "properties": { + "permission": { + "type": "string" + }, + "pattern": { + "type": "string" + }, + "action": { + "$ref": "#/components/schemas/PermissionAction" + } + }, + "required": ["permission", "pattern", "action"] + }, + "PermissionRuleset": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PermissionRule" + } + }, + "Session": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^ses.*" + }, + "slug": { + "type": "string" + }, + "projectID": { + "type": "string" + }, + "directory": { + "type": "string" + }, + "parentID": { + "type": "string", + "pattern": "^ses.*" + }, + "summary": { + "type": "object", + "properties": { + "additions": { + "type": "number" + }, + "deletions": { + "type": "number" + }, + "files": { + "type": "number" + }, + "diffs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FileDiff" + } + } + }, + "required": ["additions", "deletions", "files"] + }, + "share": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + }, + "required": ["url"] + }, + "title": { + "type": "string" + }, + "version": { + "type": "string" + }, + "time": { + "type": "object", + "properties": { + "created": { + "type": "number" + }, + "updated": { + "type": "number" + }, + "compacting": { + "type": "number" + }, + "archived": { + "type": "number" + } + }, + "required": ["created", "updated"] + }, + "permission": { + "$ref": "#/components/schemas/PermissionRuleset" + }, + "revert": { + "type": "object", + "properties": { + "messageID": { + "type": "string" + }, + "partID": { + "type": "string" + }, + "snapshot": { + "type": "string" + }, + "diff": { + "type": "string" + } + }, + "required": ["messageID"] + } + }, + "required": ["id", "slug", "projectID", "directory", "title", "version", "time"] + }, + "Event.session.created": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "session.created" + }, + "properties": { + "type": "object", + "properties": { + "info": { + "$ref": "#/components/schemas/Session" + } + }, + "required": ["info"] + } + }, + "required": ["type", "properties"] + }, + "Event.session.updated": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "session.updated" + }, + "properties": { + "type": "object", + "properties": { + "info": { + "$ref": "#/components/schemas/Session" + } + }, + "required": ["info"] + } + }, + "required": ["type", "properties"] + }, + "Event.session.deleted": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "session.deleted" + }, + "properties": { + "type": "object", + "properties": { + "info": { + "$ref": "#/components/schemas/Session" + } + }, + "required": ["info"] + } + }, + "required": ["type", "properties"] + }, + "Event.session.diff": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "session.diff" + }, + "properties": { + "type": "object", + "properties": { + "sessionID": { + "type": "string" + }, + "diff": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FileDiff" + } + } + }, + "required": ["sessionID", "diff"] + } + }, + "required": ["type", "properties"] + }, + "Event.session.error": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "session.error" + }, + "properties": { + "type": "object", + "properties": { + "sessionID": { + "type": "string" + }, + "error": { + "anyOf": [ + { + "$ref": "#/components/schemas/ProviderAuthError" + }, + { + "$ref": "#/components/schemas/UnknownError" + }, + { + "$ref": "#/components/schemas/MessageOutputLengthError" + }, + { + "$ref": "#/components/schemas/MessageAbortedError" + }, + { + "$ref": "#/components/schemas/APIError" + } + ] + } + } + } + }, + "required": ["type", "properties"] + }, + "Event": { + "anyOf": [ + { + "$ref": "#/components/schemas/Event.server.connected" + }, + { + "$ref": "#/components/schemas/Event.global.disposed" + }, + { + "$ref": "#/components/schemas/Event.tui.prompt.append" + }, + { + "$ref": "#/components/schemas/Event.tui.command.execute" + }, + { + "$ref": "#/components/schemas/Event.tui.toast.show" + }, + { + "$ref": "#/components/schemas/Event.tui.session.select" + }, + { + "$ref": "#/components/schemas/Event.installation.updated" + }, + { + "$ref": "#/components/schemas/Event.installation.update-available" + }, + { + "$ref": "#/components/schemas/Event.project.updated" + }, + { + "$ref": "#/components/schemas/Event.server.instance.disposed" + }, + { + "$ref": "#/components/schemas/Event.file.edited" + }, + { + "$ref": "#/components/schemas/Event.worktree.ready" + }, + { + "$ref": "#/components/schemas/Event.worktree.failed" + }, + { + "$ref": "#/components/schemas/Event.lsp.client.diagnostics" + }, + { + "$ref": "#/components/schemas/Event.permission.asked" + }, + { + "$ref": "#/components/schemas/Event.permission.replied" + }, + { + "$ref": "#/components/schemas/Event.session.status" + }, + { + "$ref": "#/components/schemas/Event.session.idle" + }, + { + "$ref": "#/components/schemas/Event.question.asked" + }, + { + "$ref": "#/components/schemas/Event.question.replied" + }, + { + "$ref": "#/components/schemas/Event.question.rejected" + }, + { + "$ref": "#/components/schemas/Event.todo.updated" + }, + { + "$ref": "#/components/schemas/Event.pty.created" + }, + { + "$ref": "#/components/schemas/Event.pty.updated" + }, + { + "$ref": "#/components/schemas/Event.pty.exited" + }, + { + "$ref": "#/components/schemas/Event.pty.deleted" + }, + { + "$ref": "#/components/schemas/Event.file.watcher.updated" + }, + { + "$ref": "#/components/schemas/Event.mcp.tools.changed" + }, + { + "$ref": "#/components/schemas/Event.mcp.browser.open.failed" + }, + { + "$ref": "#/components/schemas/Event.lsp.updated" + }, + { + "$ref": "#/components/schemas/Event.vcs.branch.updated" + }, + { + "$ref": "#/components/schemas/Event.command.executed" + }, + { + "$ref": "#/components/schemas/Event.message.updated" + }, + { + "$ref": "#/components/schemas/Event.message.removed" + }, + { + "$ref": "#/components/schemas/Event.message.part.updated" + }, + { + "$ref": "#/components/schemas/Event.message.part.removed" + }, + { + "$ref": "#/components/schemas/Event.session.compacted" + }, + { + "$ref": "#/components/schemas/Event.session.created" + }, + { + "$ref": "#/components/schemas/Event.session.updated" + }, + { + "$ref": "#/components/schemas/Event.session.deleted" + }, + { + "$ref": "#/components/schemas/Event.session.diff" + }, + { + "$ref": "#/components/schemas/Event.session.error" + } + ] + }, + "GlobalEvent": { + "type": "object", + "properties": { + "directory": { + "type": "string" + }, + "payload": { + "$ref": "#/components/schemas/Event" + } + }, + "required": ["directory", "payload"] + }, + "BadRequestError": { + "type": "object", + "properties": { + "data": {}, + "errors": { + "type": "array", + "items": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + }, + "success": { + "type": "boolean", + "const": false + } + }, + "required": ["data", "errors", "success"] + }, + "NotFoundError": { + "type": "object", + "properties": { + "name": { + "type": "string", + "const": "NotFoundError" + }, + "data": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + }, + "required": ["message"] + } + }, + "required": ["name", "data"] + }, + "KeybindsConfig": { + "description": "Custom keybind configurations", + "type": "object", + "properties": { + "leader": { + "description": "Leader key for keybind combinations", + "default": "ctrl+x", + "type": "string" + }, + "app_exit": { + "description": "Exit the application", + "default": "ctrl+c,ctrl+d,q", + "type": "string" + }, + "editor_open": { + "description": "Open external editor", + "default": "e", + "type": "string" + }, + "theme_list": { + "description": "List available themes", + "default": "t", + "type": "string" + }, + "sidebar_toggle": { + "description": "Toggle sidebar", + "default": "b", + "type": "string" + }, + "scrollbar_toggle": { + "description": "Toggle session scrollbar", + "default": "none", + "type": "string" + }, + "username_toggle": { + "description": "Toggle username visibility", + "default": "none", + "type": "string" + }, + "status_view": { + "description": "View status", + "default": "s", + "type": "string" + }, + "session_export": { + "description": "Export session to editor", + "default": "x", + "type": "string" + }, + "session_new": { + "description": "Create a new session", + "default": "n", + "type": "string" + }, + "session_list": { + "description": "List all sessions", + "default": "l", + "type": "string" + }, + "session_timeline": { + "description": "Show session timeline", + "default": "g", + "type": "string" + }, + "session_fork": { + "description": "Fork session from message", + "default": "none", + "type": "string" + }, + "session_rename": { + "description": "Rename session", + "default": "ctrl+r", + "type": "string" + }, + "session_delete": { + "description": "Delete session", + "default": "ctrl+d", + "type": "string" + }, + "stash_delete": { + "description": "Delete stash entry", + "default": "ctrl+d", + "type": "string" + }, + "model_provider_list": { + "description": "Open provider list from model dialog", + "default": "ctrl+a", + "type": "string" + }, + "model_favorite_toggle": { + "description": "Toggle model favorite status", + "default": "ctrl+f", + "type": "string" + }, + "session_share": { + "description": "Share current session", + "default": "none", + "type": "string" + }, + "session_unshare": { + "description": "Unshare current session", + "default": "none", + "type": "string" + }, + "session_interrupt": { + "description": "Interrupt current session", + "default": "escape", + "type": "string" + }, + "session_compact": { + "description": "Compact the session", + "default": "c", + "type": "string" + }, + "messages_page_up": { + "description": "Scroll messages up by one page", + "default": "pageup,ctrl+alt+b", + "type": "string" + }, + "messages_page_down": { + "description": "Scroll messages down by one page", + "default": "pagedown,ctrl+alt+f", + "type": "string" + }, + "messages_line_up": { + "description": "Scroll messages up by one line", + "default": "ctrl+alt+y", + "type": "string" + }, + "messages_line_down": { + "description": "Scroll messages down by one line", + "default": "ctrl+alt+e", + "type": "string" + }, + "messages_half_page_up": { + "description": "Scroll messages up by half page", + "default": "ctrl+alt+u", + "type": "string" + }, + "messages_half_page_down": { + "description": "Scroll messages down by half page", + "default": "ctrl+alt+d", + "type": "string" + }, + "messages_first": { + "description": "Navigate to first message", + "default": "ctrl+g,home", + "type": "string" + }, + "messages_last": { + "description": "Navigate to last message", + "default": "ctrl+alt+g,end", + "type": "string" + }, + "messages_next": { + "description": "Navigate to next message", + "default": "none", + "type": "string" + }, + "messages_previous": { + "description": "Navigate to previous message", + "default": "none", + "type": "string" + }, + "messages_last_user": { + "description": "Navigate to last user message", + "default": "none", + "type": "string" + }, + "messages_copy": { + "description": "Copy message", + "default": "y", + "type": "string" + }, + "messages_undo": { + "description": "Undo message", + "default": "u", + "type": "string" + }, + "messages_redo": { + "description": "Redo message", + "default": "r", + "type": "string" + }, + "messages_toggle_conceal": { + "description": "Toggle code block concealment in messages", + "default": "h", + "type": "string" + }, + "tool_details": { + "description": "Toggle tool details visibility", + "default": "none", + "type": "string" + }, + "model_list": { + "description": "List available models", + "default": "m", + "type": "string" + }, + "model_cycle_recent": { + "description": "Next recently used model", + "default": "f2", + "type": "string" + }, + "model_cycle_recent_reverse": { + "description": "Previous recently used model", + "default": "shift+f2", + "type": "string" + }, + "model_cycle_favorite": { + "description": "Next favorite model", + "default": "none", + "type": "string" + }, + "model_cycle_favorite_reverse": { + "description": "Previous favorite model", + "default": "none", + "type": "string" + }, + "command_list": { + "description": "List available commands", + "default": "ctrl+p", + "type": "string" + }, + "agent_list": { + "description": "List agents", + "default": "a", + "type": "string" + }, + "agent_cycle": { + "description": "Next agent", + "default": "tab", + "type": "string" + }, + "agent_cycle_reverse": { + "description": "Previous agent", + "default": "shift+tab", + "type": "string" + }, + "variant_cycle": { + "description": "Cycle model variants", + "default": "ctrl+t", + "type": "string" + }, + "input_clear": { + "description": "Clear input field", + "default": "ctrl+c", + "type": "string" + }, + "input_paste": { + "description": "Paste from clipboard", + "default": "ctrl+v", + "type": "string" + }, + "input_submit": { + "description": "Submit input", + "default": "return", + "type": "string" + }, + "input_newline": { + "description": "Insert newline in input", + "default": "shift+return,ctrl+return,alt+return,ctrl+j", + "type": "string" + }, + "input_move_left": { + "description": "Move cursor left in input", + "default": "left,ctrl+b", + "type": "string" + }, + "input_move_right": { + "description": "Move cursor right in input", + "default": "right,ctrl+f", + "type": "string" + }, + "input_move_up": { + "description": "Move cursor up in input", + "default": "up", + "type": "string" + }, + "input_move_down": { + "description": "Move cursor down in input", + "default": "down", + "type": "string" + }, + "input_select_left": { + "description": "Select left in input", + "default": "shift+left", + "type": "string" + }, + "input_select_right": { + "description": "Select right in input", + "default": "shift+right", + "type": "string" + }, + "input_select_up": { + "description": "Select up in input", + "default": "shift+up", + "type": "string" + }, + "input_select_down": { + "description": "Select down in input", + "default": "shift+down", + "type": "string" + }, + "input_line_home": { + "description": "Move to start of line in input", + "default": "ctrl+a", + "type": "string" + }, + "input_line_end": { + "description": "Move to end of line in input", + "default": "ctrl+e", + "type": "string" + }, + "input_select_line_home": { + "description": "Select to start of line in input", + "default": "ctrl+shift+a", + "type": "string" + }, + "input_select_line_end": { + "description": "Select to end of line in input", + "default": "ctrl+shift+e", + "type": "string" + }, + "input_visual_line_home": { + "description": "Move to start of visual line in input", + "default": "alt+a", + "type": "string" + }, + "input_visual_line_end": { + "description": "Move to end of visual line in input", + "default": "alt+e", + "type": "string" + }, + "input_select_visual_line_home": { + "description": "Select to start of visual line in input", + "default": "alt+shift+a", + "type": "string" + }, + "input_select_visual_line_end": { + "description": "Select to end of visual line in input", + "default": "alt+shift+e", + "type": "string" + }, + "input_buffer_home": { + "description": "Move to start of buffer in input", + "default": "home", + "type": "string" + }, + "input_buffer_end": { + "description": "Move to end of buffer in input", + "default": "end", + "type": "string" + }, + "input_select_buffer_home": { + "description": "Select to start of buffer in input", + "default": "shift+home", + "type": "string" + }, + "input_select_buffer_end": { + "description": "Select to end of buffer in input", + "default": "shift+end", + "type": "string" + }, + "input_delete_line": { + "description": "Delete line in input", + "default": "ctrl+shift+d", + "type": "string" + }, + "input_delete_to_line_end": { + "description": "Delete to end of line in input", + "default": "ctrl+k", + "type": "string" + }, + "input_delete_to_line_start": { + "description": "Delete to start of line in input", + "default": "ctrl+u", + "type": "string" + }, + "input_backspace": { + "description": "Backspace in input", + "default": "backspace,shift+backspace", + "type": "string" + }, + "input_delete": { + "description": "Delete character in input", + "default": "ctrl+d,delete,shift+delete", + "type": "string" + }, + "input_undo": { + "description": "Undo in input", + "default": "ctrl+-,super+z", + "type": "string" + }, + "input_redo": { + "description": "Redo in input", + "default": "ctrl+.,super+shift+z", + "type": "string" + }, + "input_word_forward": { + "description": "Move word forward in input", + "default": "alt+f,alt+right,ctrl+right", + "type": "string" + }, + "input_word_backward": { + "description": "Move word backward in input", + "default": "alt+b,alt+left,ctrl+left", + "type": "string" + }, + "input_select_word_forward": { + "description": "Select word forward in input", + "default": "alt+shift+f,alt+shift+right", + "type": "string" + }, + "input_select_word_backward": { + "description": "Select word backward in input", + "default": "alt+shift+b,alt+shift+left", + "type": "string" + }, + "input_delete_word_forward": { + "description": "Delete word forward in input", + "default": "alt+d,alt+delete,ctrl+delete", + "type": "string" + }, + "input_delete_word_backward": { + "description": "Delete word backward in input", + "default": "ctrl+w,ctrl+backspace,alt+backspace", + "type": "string" + }, + "history_previous": { + "description": "Previous history item", + "default": "up", + "type": "string" + }, + "history_next": { + "description": "Next history item", + "default": "down", + "type": "string" + }, + "session_child_cycle": { + "description": "Next child session", + "default": "right", + "type": "string" + }, + "session_child_cycle_reverse": { + "description": "Previous child session", + "default": "left", + "type": "string" + }, + "session_parent": { + "description": "Go to parent session", + "default": "up", + "type": "string" + }, + "terminal_suspend": { + "description": "Suspend terminal", + "default": "ctrl+z", + "type": "string" + }, + "terminal_title_toggle": { + "description": "Toggle terminal title", + "default": "none", + "type": "string" + }, + "tips_toggle": { + "description": "Toggle tips on home screen", + "default": "h", + "type": "string" + } + }, + "additionalProperties": false + }, + "LogLevel": { + "description": "Log level", + "type": "string", + "enum": ["DEBUG", "INFO", "WARN", "ERROR"] + }, + "ServerConfig": { + "description": "Server configuration for opencode serve and web commands", + "type": "object", + "properties": { + "port": { + "description": "Port to listen on", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "hostname": { + "description": "Hostname to listen on", + "type": "string" + }, + "mdns": { + "description": "Enable mDNS service discovery", + "type": "boolean" + }, + "cors": { + "description": "Additional domains to allow for CORS", + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "PermissionActionConfig": { + "type": "string", + "enum": ["ask", "allow", "deny"] + }, + "PermissionObjectConfig": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "$ref": "#/components/schemas/PermissionActionConfig" + } + }, + "PermissionRuleConfig": { + "anyOf": [ + { + "$ref": "#/components/schemas/PermissionActionConfig" + }, + { + "$ref": "#/components/schemas/PermissionObjectConfig" + } + ] + }, + "PermissionConfig": { + "anyOf": [ + { + "type": "object", + "properties": { + "__originalKeys": { + "type": "array", + "items": { + "type": "string" + } + }, + "read": { + "$ref": "#/components/schemas/PermissionRuleConfig" + }, + "edit": { + "$ref": "#/components/schemas/PermissionRuleConfig" + }, + "glob": { + "$ref": "#/components/schemas/PermissionRuleConfig" + }, + "grep": { + "$ref": "#/components/schemas/PermissionRuleConfig" + }, + "list": { + "$ref": "#/components/schemas/PermissionRuleConfig" + }, + "bash": { + "$ref": "#/components/schemas/PermissionRuleConfig" + }, + "task": { + "$ref": "#/components/schemas/PermissionRuleConfig" + }, + "external_directory": { + "$ref": "#/components/schemas/PermissionRuleConfig" + }, + "todowrite": { + "$ref": "#/components/schemas/PermissionActionConfig" + }, + "todoread": { + "$ref": "#/components/schemas/PermissionActionConfig" + }, + "question": { + "$ref": "#/components/schemas/PermissionActionConfig" + }, + "webfetch": { + "$ref": "#/components/schemas/PermissionActionConfig" + }, + "websearch": { + "$ref": "#/components/schemas/PermissionActionConfig" + }, + "codesearch": { + "$ref": "#/components/schemas/PermissionActionConfig" + }, + "lsp": { + "$ref": "#/components/schemas/PermissionRuleConfig" + }, + "doom_loop": { + "$ref": "#/components/schemas/PermissionActionConfig" + } + }, + "additionalProperties": { + "$ref": "#/components/schemas/PermissionRuleConfig" + } + }, + { + "$ref": "#/components/schemas/PermissionActionConfig" + } + ] + }, + "AgentConfig": { + "type": "object", + "properties": { + "model": { + "type": "string" + }, + "temperature": { + "type": "number" + }, + "top_p": { + "type": "number" + }, + "prompt": { + "type": "string" + }, + "tools": { + "description": "@deprecated Use 'permission' field instead", + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "boolean" + } + }, + "disable": { + "type": "boolean" + }, + "description": { + "description": "Description of when to use the agent", + "type": "string" + }, + "mode": { + "type": "string", + "enum": ["subagent", "primary", "all"] + }, + "hidden": { + "description": "Hide this subagent from the @ autocomplete menu (default: false, only applies to mode: subagent)", + "type": "boolean" + }, + "options": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "color": { + "description": "Hex color code for the agent (e.g., #FF5733)", + "type": "string", + "pattern": "^#[0-9a-fA-F]{6}$" + }, + "steps": { + "description": "Maximum number of agentic iterations before forcing text-only response", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "maxSteps": { + "description": "@deprecated Use 'steps' field instead.", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + "permission": { + "$ref": "#/components/schemas/PermissionConfig" + } + }, + "additionalProperties": {} + }, + "ProviderConfig": { + "type": "object", + "properties": { + "api": { + "type": "string" + }, + "name": { + "type": "string" + }, + "env": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "string" + }, + "npm": { + "type": "string" + }, + "models": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "family": { + "type": "string" + }, + "release_date": { + "type": "string" + }, + "attachment": { + "type": "boolean" + }, + "reasoning": { + "type": "boolean" + }, + "temperature": { + "type": "boolean" + }, + "tool_call": { + "type": "boolean" + }, + "interleaved": { + "anyOf": [ + { + "type": "boolean", + "const": true + }, + { + "type": "object", + "properties": { + "field": { + "type": "string", + "enum": ["reasoning_content", "reasoning_details"] + } + }, + "required": ["field"], + "additionalProperties": false + } + ] + }, + "cost": { + "type": "object", + "properties": { + "input": { + "type": "number" + }, + "output": { + "type": "number" + }, + "cache_read": { + "type": "number" + }, + "cache_write": { + "type": "number" + }, + "context_over_200k": { + "type": "object", + "properties": { + "input": { + "type": "number" + }, + "output": { + "type": "number" + }, + "cache_read": { + "type": "number" + }, + "cache_write": { + "type": "number" + } + }, + "required": ["input", "output"] + } + }, + "required": ["input", "output"] + }, + "limit": { + "type": "object", + "properties": { + "context": { + "type": "number" + }, + "input": { + "type": "number" + }, + "output": { + "type": "number" + } + }, + "required": ["context", "output"] + }, + "modalities": { + "type": "object", + "properties": { + "input": { + "type": "array", + "items": { + "type": "string", + "enum": ["text", "audio", "image", "video", "pdf"] + } + }, + "output": { + "type": "array", + "items": { + "type": "string", + "enum": ["text", "audio", "image", "video", "pdf"] + } + } + }, + "required": ["input", "output"] + }, + "experimental": { + "type": "boolean" + }, + "status": { + "type": "string", + "enum": ["alpha", "beta", "deprecated"] + }, + "options": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "headers": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "string" + } + }, + "provider": { + "type": "object", + "properties": { + "npm": { + "type": "string" + } + }, + "required": ["npm"] + }, + "variants": { + "description": "Variant-specific configuration", + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "object", + "properties": { + "disabled": { + "description": "Disable this variant for the model", + "type": "boolean" + } + }, + "additionalProperties": {} + } + } + } + } + }, + "whitelist": { + "type": "array", + "items": { + "type": "string" + } + }, + "blacklist": { + "type": "array", + "items": { + "type": "string" + } + }, + "options": { + "type": "object", + "properties": { + "apiKey": { + "type": "string" + }, + "baseURL": { + "type": "string" + }, + "enterpriseUrl": { + "description": "GitHub Enterprise URL for copilot authentication", + "type": "string" + }, + "setCacheKey": { + "description": "Enable promptCacheKey for this provider (default false)", + "type": "boolean" + }, + "timeout": { + "description": "Timeout in milliseconds for requests to this provider. Default is 300000 (5 minutes). Set to false to disable timeout.", + "anyOf": [ + { + "description": "Timeout in milliseconds for requests to this provider. Default is 300000 (5 minutes). Set to false to disable timeout.", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + }, + { + "description": "Disable timeout for this provider entirely.", + "type": "boolean", + "const": false + } + ] + } + }, + "additionalProperties": {} + } + }, + "additionalProperties": false + }, + "McpLocalConfig": { + "type": "object", + "properties": { + "type": { + "description": "Type of MCP server connection", + "type": "string", + "const": "local" + }, + "command": { + "description": "Command and arguments to run the MCP server", + "type": "array", + "items": { + "type": "string" + } + }, + "environment": { + "description": "Environment variables to set when running the MCP server", + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "string" + } + }, + "enabled": { + "description": "Enable or disable the MCP server on startup", + "type": "boolean" + }, + "timeout": { + "description": "Timeout in ms for MCP server requests. Defaults to 5000 (5 seconds) if not specified.", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": ["type", "command"], + "additionalProperties": false + }, + "McpOAuthConfig": { + "type": "object", + "properties": { + "clientId": { + "description": "OAuth client ID. If not provided, dynamic client registration (RFC 7591) will be attempted.", + "type": "string" + }, + "clientSecret": { + "description": "OAuth client secret (if required by the authorization server)", + "type": "string" + }, + "scope": { + "description": "OAuth scopes to request during authorization", + "type": "string" + } + }, + "additionalProperties": false + }, + "McpRemoteConfig": { + "type": "object", + "properties": { + "type": { + "description": "Type of MCP server connection", + "type": "string", + "const": "remote" + }, + "url": { + "description": "URL of the remote MCP server", + "type": "string" + }, + "enabled": { + "description": "Enable or disable the MCP server on startup", + "type": "boolean" + }, + "headers": { + "description": "Headers to send with the request", + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "string" + } + }, + "oauth": { + "description": "OAuth authentication configuration for the MCP server. Set to false to disable OAuth auto-detection.", + "anyOf": [ + { + "$ref": "#/components/schemas/McpOAuthConfig" + }, + { + "type": "boolean", + "const": false + } + ] + }, + "timeout": { + "description": "Timeout in ms for MCP server requests. Defaults to 5000 (5 seconds) if not specified.", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": ["type", "url"], + "additionalProperties": false + }, + "LayoutConfig": { + "description": "@deprecated Always uses stretch layout.", + "type": "string", + "enum": ["auto", "stretch"] + }, + "Config": { + "type": "object", + "properties": { + "$schema": { + "description": "JSON schema reference for configuration validation", + "type": "string" + }, + "theme": { + "description": "Theme name to use for the interface", + "type": "string" + }, + "keybinds": { + "$ref": "#/components/schemas/KeybindsConfig" + }, + "logLevel": { + "$ref": "#/components/schemas/LogLevel" + }, + "tui": { + "description": "TUI specific settings", + "type": "object", + "properties": { + "scroll_speed": { + "description": "TUI scroll speed", + "type": "number", + "minimum": 0.001 + }, + "scroll_acceleration": { + "description": "Scroll acceleration settings", + "type": "object", + "properties": { + "enabled": { + "description": "Enable scroll acceleration", + "type": "boolean" + } + }, + "required": ["enabled"] + }, + "diff_style": { + "description": "Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column", + "type": "string", + "enum": ["auto", "stacked"] + } + } + }, + "server": { + "$ref": "#/components/schemas/ServerConfig" + }, + "command": { + "description": "Command configuration, see https://opencode.ai/docs/commands", + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "object", + "properties": { + "template": { + "type": "string" + }, + "description": { + "type": "string" + }, + "agent": { + "type": "string" + }, + "model": { + "type": "string" + }, + "subtask": { + "type": "boolean" + } + }, + "required": ["template"] + } + }, + "watcher": { + "type": "object", + "properties": { + "ignore": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "plugin": { + "type": "array", + "items": { + "type": "string" + } + }, + "snapshot": { + "type": "boolean" + }, + "share": { + "description": "Control sharing behavior:'manual' allows manual sharing via commands, 'auto' enables automatic sharing, 'disabled' disables all sharing", + "type": "string", + "enum": ["manual", "auto", "disabled"] + }, + "autoshare": { + "description": "@deprecated Use 'share' field instead. Share newly created sessions automatically", + "type": "boolean" + }, + "autoupdate": { + "description": "Automatically update to the latest version. Set to true to auto-update, false to disable, or 'notify' to show update notifications", + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "string", + "const": "notify" + } + ] + }, + "disabled_providers": { + "description": "Disable providers that are loaded automatically", + "type": "array", + "items": { + "type": "string" + } + }, + "enabled_providers": { + "description": "When set, ONLY these providers will be enabled. All other providers will be ignored", + "type": "array", + "items": { + "type": "string" + } + }, + "model": { + "description": "Model to use in the format of provider/model, eg anthropic/claude-2", + "type": "string" + }, + "small_model": { + "description": "Small model to use for tasks like title generation in the format of provider/model", + "type": "string" + }, + "default_agent": { + "description": "Default agent to use when none is specified. Must be a primary agent. Falls back to 'build' if not set or if the specified agent is invalid.", + "type": "string" + }, + "username": { + "description": "Custom username to display in conversations instead of system username", + "type": "string" + }, + "mode": { + "description": "@deprecated Use `agent` field instead.", + "type": "object", + "properties": { + "build": { + "$ref": "#/components/schemas/AgentConfig" + }, + "plan": { + "$ref": "#/components/schemas/AgentConfig" + } + }, + "additionalProperties": { + "$ref": "#/components/schemas/AgentConfig" + } + }, + "agent": { + "description": "Agent configuration, see https://opencode.ai/docs/agents", + "type": "object", + "properties": { + "plan": { + "$ref": "#/components/schemas/AgentConfig" + }, + "build": { + "$ref": "#/components/schemas/AgentConfig" + }, + "general": { + "$ref": "#/components/schemas/AgentConfig" + }, + "explore": { + "$ref": "#/components/schemas/AgentConfig" + }, + "title": { + "$ref": "#/components/schemas/AgentConfig" + }, + "summary": { + "$ref": "#/components/schemas/AgentConfig" + }, + "compaction": { + "$ref": "#/components/schemas/AgentConfig" + } + }, + "additionalProperties": { + "$ref": "#/components/schemas/AgentConfig" + } + }, + "provider": { + "description": "Custom provider configurations and model overrides", + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "$ref": "#/components/schemas/ProviderConfig" + } + }, + "mcp": { + "description": "MCP (Model Context Protocol) server configurations", + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "anyOf": [ + { + "anyOf": [ + { + "$ref": "#/components/schemas/McpLocalConfig" + }, + { + "$ref": "#/components/schemas/McpRemoteConfig" + } + ] + }, + { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + } + }, + "required": ["enabled"], + "additionalProperties": false + } + ] + } + }, + "formatter": { + "anyOf": [ + { + "type": "boolean", + "const": false + }, + { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "object", + "properties": { + "disabled": { + "type": "boolean" + }, + "command": { + "type": "array", + "items": { + "type": "string" + } + }, + "environment": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "string" + } + }, + "extensions": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + ] + }, + "lsp": { + "anyOf": [ + { + "type": "boolean", + "const": false + }, + { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "anyOf": [ + { + "type": "object", + "properties": { + "disabled": { + "type": "boolean", + "const": true + } + }, + "required": ["disabled"] + }, + { + "type": "object", + "properties": { + "command": { + "type": "array", + "items": { + "type": "string" + } + }, + "extensions": { + "type": "array", + "items": { + "type": "string" + } + }, + "disabled": { + "type": "boolean" + }, + "env": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "string" + } + }, + "initialization": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + }, + "required": ["command"] + } + ] + } + } + ] + }, + "instructions": { + "description": "Additional instruction files or patterns to include", + "type": "array", + "items": { + "type": "string" + } + }, + "layout": { + "$ref": "#/components/schemas/LayoutConfig" + }, + "permission": { + "$ref": "#/components/schemas/PermissionConfig" + }, + "tools": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "boolean" + } + }, + "enterprise": { + "type": "object", + "properties": { + "url": { + "description": "Enterprise URL", + "type": "string" + } + } + }, + "compaction": { + "type": "object", + "properties": { + "auto": { + "description": "Enable automatic compaction when context is full (default: true)", + "type": "boolean" + }, + "prune": { + "description": "Enable pruning of old tool outputs (default: true)", + "type": "boolean" + } + } + }, + "experimental": { + "type": "object", + "properties": { + "hook": { + "type": "object", + "properties": { + "file_edited": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "array", + "items": { + "type": "object", + "properties": { + "command": { + "type": "array", + "items": { + "type": "string" + } + }, + "environment": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "string" + } + } + }, + "required": ["command"] + } + } + }, + "session_completed": { + "type": "array", + "items": { + "type": "object", + "properties": { + "command": { + "type": "array", + "items": { + "type": "string" + } + }, + "environment": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "string" + } + } + }, + "required": ["command"] + } + } + } + }, + "chatMaxRetries": { + "description": "Number of retries for chat completions on failure", + "type": "number" + }, + "disable_paste_summary": { + "type": "boolean" + }, + "batch_tool": { + "description": "Enable the batch tool", + "type": "boolean" + }, + "openTelemetry": { + "description": "Enable OpenTelemetry spans for AI SDK calls (using the 'experimental_telemetry' flag)", + "type": "boolean" + }, + "primary_tools": { + "description": "Tools that should only be available to primary agents.", + "type": "array", + "items": { + "type": "string" + } + }, + "continue_loop_on_deny": { + "description": "Continue the agent loop when a tool call is denied", + "type": "boolean" + }, + "mcp_timeout": { + "description": "Timeout in milliseconds for model context protocol (MCP) requests", + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + } + } + }, + "additionalProperties": false + }, + "Model": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "providerID": { + "type": "string" + }, + "api": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "npm": { + "type": "string" + } + }, + "required": ["id", "url", "npm"] + }, + "name": { + "type": "string" + }, + "family": { + "type": "string" + }, + "capabilities": { + "type": "object", + "properties": { + "temperature": { + "type": "boolean" + }, + "reasoning": { + "type": "boolean" + }, + "attachment": { + "type": "boolean" + }, + "toolcall": { + "type": "boolean" + }, + "input": { + "type": "object", + "properties": { + "text": { + "type": "boolean" + }, + "audio": { + "type": "boolean" + }, + "image": { + "type": "boolean" + }, + "video": { + "type": "boolean" + }, + "pdf": { + "type": "boolean" + } + }, + "required": ["text", "audio", "image", "video", "pdf"] + }, + "output": { + "type": "object", + "properties": { + "text": { + "type": "boolean" + }, + "audio": { + "type": "boolean" + }, + "image": { + "type": "boolean" + }, + "video": { + "type": "boolean" + }, + "pdf": { + "type": "boolean" + } + }, + "required": ["text", "audio", "image", "video", "pdf"] + }, + "interleaved": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "object", + "properties": { + "field": { + "type": "string", + "enum": ["reasoning_content", "reasoning_details"] + } + }, + "required": ["field"] + } + ] + } + }, + "required": ["temperature", "reasoning", "attachment", "toolcall", "input", "output", "interleaved"] + }, + "cost": { + "type": "object", + "properties": { + "input": { + "type": "number" + }, + "output": { + "type": "number" + }, + "cache": { + "type": "object", + "properties": { + "read": { + "type": "number" + }, + "write": { + "type": "number" + } + }, + "required": ["read", "write"] + }, + "experimentalOver200K": { + "type": "object", + "properties": { + "input": { + "type": "number" + }, + "output": { + "type": "number" + }, + "cache": { + "type": "object", + "properties": { + "read": { + "type": "number" + }, + "write": { + "type": "number" + } + }, + "required": ["read", "write"] + } + }, + "required": ["input", "output", "cache"] + } + }, + "required": ["input", "output", "cache"] + }, + "limit": { + "type": "object", + "properties": { + "context": { + "type": "number" + }, + "input": { + "type": "number" + }, + "output": { + "type": "number" + } + }, + "required": ["context", "output"] + }, + "status": { + "type": "string", + "enum": ["alpha", "beta", "deprecated", "active"] + }, + "options": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "headers": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "string" + } + }, + "release_date": { + "type": "string" + }, + "variants": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + } + }, + "required": [ + "id", + "providerID", + "api", + "name", + "capabilities", + "cost", + "limit", + "status", + "options", + "headers", + "release_date" + ] + }, + "Provider": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "source": { + "type": "string", + "enum": ["env", "config", "custom", "api"] + }, + "env": { + "type": "array", + "items": { + "type": "string" + } + }, + "key": { + "type": "string" + }, + "options": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "models": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": { + "$ref": "#/components/schemas/Model" + } + } + }, + "required": ["id", "name", "source", "env", "options", "models"] + }, + "ToolIDs": { + "type": "array", + "items": { + "type": "string" + } + }, + "ToolListItem": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "description": { + "type": "string" + }, + "parameters": {} + }, + "required": ["id", "description", "parameters"] + }, + "ToolList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ToolListItem" + } + }, + "Worktree": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "branch": { + "type": "string" + }, + "directory": { + "type": "string" + } + }, + "required": ["name", "branch", "directory"] + }, + "WorktreeCreateInput": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "startCommand": { + "description": "Additional startup script to run after the project's start command", + "type": "string" + } + } + }, + "WorktreeRemoveInput": { + "type": "object", + "properties": { + "directory": { + "type": "string" + } + }, + "required": ["directory"] + }, + "WorktreeResetInput": { + "type": "object", + "properties": { + "directory": { + "type": "string" + } + }, + "required": ["directory"] + }, + "McpResource": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "uri": { + "type": "string" + }, + "description": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "client": { + "type": "string" + } + }, + "required": ["name", "uri", "client"] + }, + "TextPartInput": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "const": "text" + }, + "text": { + "type": "string" + }, + "synthetic": { + "type": "boolean" + }, + "ignored": { + "type": "boolean" + }, + "time": { + "type": "object", + "properties": { + "start": { + "type": "number" + }, + "end": { + "type": "number" + } + }, + "required": ["start"] + }, + "metadata": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + } + }, + "required": ["type", "text"] + }, + "FilePartInput": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "const": "file" + }, + "mime": { + "type": "string" + }, + "filename": { + "type": "string" + }, + "url": { + "type": "string" + }, + "source": { + "$ref": "#/components/schemas/FilePartSource" + } + }, + "required": ["type", "mime", "url"] + }, + "AgentPartInput": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "const": "agent" + }, + "name": { + "type": "string" + }, + "source": { + "type": "object", + "properties": { + "value": { + "type": "string" + }, + "start": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "end": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + } + }, + "required": ["value", "start", "end"] + } + }, + "required": ["type", "name"] + }, + "SubtaskPartInput": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "type": "string", + "const": "subtask" + }, + "prompt": { + "type": "string" + }, + "description": { + "type": "string" + }, + "agent": { + "type": "string" + }, + "model": { + "type": "object", + "properties": { + "providerID": { + "type": "string" + }, + "modelID": { + "type": "string" + } + }, + "required": ["providerID", "modelID"] + }, + "command": { + "type": "string" + } + }, + "required": ["type", "prompt", "description", "agent"] + }, + "ProviderAuthMethod": { + "type": "object", + "properties": { + "type": { + "anyOf": [ + { + "type": "string", + "const": "oauth" + }, + { + "type": "string", + "const": "api" + } + ] + }, + "label": { + "type": "string" + } + }, + "required": ["type", "label"] + }, + "ProviderAuthAuthorization": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "method": { + "anyOf": [ + { + "type": "string", + "const": "auto" + }, + { + "type": "string", + "const": "code" + } + ] + }, + "instructions": { + "type": "string" + } + }, + "required": ["url", "method", "instructions"] + }, + "Symbol": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "kind": { + "type": "number" + }, + "location": { + "type": "object", + "properties": { + "uri": { + "type": "string" + }, + "range": { + "$ref": "#/components/schemas/Range" + } + }, + "required": ["uri", "range"] + } + }, + "required": ["name", "kind", "location"] + }, + "FileNode": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "path": { + "type": "string" + }, + "absolute": { + "type": "string" + }, + "type": { + "type": "string", + "enum": ["file", "directory"] + }, + "ignored": { + "type": "boolean" + } + }, + "required": ["name", "path", "absolute", "type", "ignored"] + }, + "FileContent": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "text" + }, + "content": { + "type": "string" + }, + "diff": { + "type": "string" + }, + "patch": { + "type": "object", + "properties": { + "oldFileName": { + "type": "string" + }, + "newFileName": { + "type": "string" + }, + "oldHeader": { + "type": "string" + }, + "newHeader": { + "type": "string" + }, + "hunks": { + "type": "array", + "items": { + "type": "object", + "properties": { + "oldStart": { + "type": "number" + }, + "oldLines": { + "type": "number" + }, + "newStart": { + "type": "number" + }, + "newLines": { + "type": "number" + }, + "lines": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": ["oldStart", "oldLines", "newStart", "newLines", "lines"] + } + }, + "index": { + "type": "string" + } + }, + "required": ["oldFileName", "newFileName", "hunks"] + }, + "encoding": { + "type": "string", + "const": "base64" + }, + "mimeType": { + "type": "string" + } + }, + "required": ["type", "content"] + }, + "File": { + "type": "object", + "properties": { + "path": { + "type": "string" + }, + "added": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "removed": { + "type": "integer", + "minimum": -9007199254740991, + "maximum": 9007199254740991 + }, + "status": { + "type": "string", + "enum": ["added", "deleted", "modified"] + } + }, + "required": ["path", "added", "removed", "status"] + }, + "MCPStatusConnected": { + "type": "object", + "properties": { + "status": { + "type": "string", + "const": "connected" + } + }, + "required": ["status"] + }, + "MCPStatusDisabled": { + "type": "object", + "properties": { + "status": { + "type": "string", + "const": "disabled" + } + }, + "required": ["status"] + }, + "MCPStatusFailed": { + "type": "object", + "properties": { + "status": { + "type": "string", + "const": "failed" + }, + "error": { + "type": "string" + } + }, + "required": ["status", "error"] + }, + "MCPStatusNeedsAuth": { + "type": "object", + "properties": { + "status": { + "type": "string", + "const": "needs_auth" + } + }, + "required": ["status"] + }, + "MCPStatusNeedsClientRegistration": { + "type": "object", + "properties": { + "status": { + "type": "string", + "const": "needs_client_registration" + }, + "error": { + "type": "string" + } + }, + "required": ["status", "error"] + }, + "MCPStatus": { + "anyOf": [ + { + "$ref": "#/components/schemas/MCPStatusConnected" + }, + { + "$ref": "#/components/schemas/MCPStatusDisabled" + }, + { + "$ref": "#/components/schemas/MCPStatusFailed" + }, + { + "$ref": "#/components/schemas/MCPStatusNeedsAuth" + }, + { + "$ref": "#/components/schemas/MCPStatusNeedsClientRegistration" + } + ] + }, + "Path": { + "type": "object", + "properties": { + "home": { + "type": "string" + }, + "state": { + "type": "string" + }, + "config": { + "type": "string" + }, + "worktree": { + "type": "string" + }, + "directory": { + "type": "string" + } + }, + "required": ["home", "state", "config", "worktree", "directory"] + }, + "VcsInfo": { + "type": "object", + "properties": { + "branch": { + "type": "string" + } + }, + "required": ["branch"] + }, + "Command": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "agent": { + "type": "string" + }, + "model": { + "type": "string" + }, + "mcp": { + "type": "boolean" + }, + "template": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string" + } + ] + }, + "subtask": { + "type": "boolean" + }, + "hints": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": ["name", "template", "hints"] + }, + "Agent": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "mode": { + "type": "string", + "enum": ["subagent", "primary", "all"] + }, + "native": { + "type": "boolean" + }, + "hidden": { + "type": "boolean" + }, + "topP": { + "type": "number" + }, + "temperature": { + "type": "number" + }, + "color": { + "type": "string" + }, + "permission": { + "$ref": "#/components/schemas/PermissionRuleset" + }, + "model": { + "type": "object", + "properties": { + "modelID": { + "type": "string" + }, + "providerID": { + "type": "string" + } + }, + "required": ["modelID", "providerID"] + }, + "prompt": { + "type": "string" + }, + "options": { + "type": "object", + "propertyNames": { + "type": "string" + }, + "additionalProperties": {} + }, + "steps": { + "type": "integer", + "exclusiveMinimum": 0, + "maximum": 9007199254740991 + } + }, + "required": ["name", "mode", "permission", "options"] + }, + "LSPStatus": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "root": { + "type": "string" + }, + "status": { + "anyOf": [ + { + "type": "string", + "const": "connected" + }, + { + "type": "string", + "const": "error" + } + ] + } + }, + "required": ["id", "name", "root", "status"] + }, + "FormatterStatus": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "extensions": { + "type": "array", + "items": { + "type": "string" + } + }, + "enabled": { + "type": "boolean" + } + }, + "required": ["name", "extensions", "enabled"] + }, + "OAuth": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "oauth" + }, + "refresh": { + "type": "string" + }, + "access": { + "type": "string" + }, + "expires": { + "type": "number" + }, + "accountId": { + "type": "string" + }, + "enterpriseUrl": { + "type": "string" + } + }, + "required": ["type", "refresh", "access", "expires"] + }, + "ApiAuth": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "api" + }, + "key": { + "type": "string" + } + }, + "required": ["type", "key"] + }, + "WellKnownAuth": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "wellknown" + }, + "key": { + "type": "string" + }, + "token": { + "type": "string" + } + }, + "required": ["type", "key", "token"] + }, + "Auth": { + "anyOf": [ + { + "$ref": "#/components/schemas/OAuth" + }, + { + "$ref": "#/components/schemas/ApiAuth" + }, + { + "$ref": "#/components/schemas/WellKnownAuth" + } + ] + } + } + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..98175dc --- /dev/null +++ b/package-lock.json @@ -0,0 +1,8808 @@ +{ + "name": "piagentui", + "version": "0.6.10", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "piagentui", + "version": "0.6.10", + "hasInstallScript": true, + "license": "GPL-3.0-only", + "dependencies": { + "@codemirror/commands": "^6.10.3", + "@codemirror/search": "^6.7.0", + "@codemirror/state": "^6.6.0", + "@codemirror/view": "^6.41.1", + "@primer/octicons-react": "^19.28.0", + "@streamdown/math": "^1.0.2", + "@tauri-apps/api": "^2.10.1", + "@tauri-apps/plugin-dialog": "^2.6.0", + "@tauri-apps/plugin-fs": "^2.4.5", + "@tauri-apps/plugin-http": "^2.5.7", + "@tauri-apps/plugin-notification": "^2.3.3", + "@tauri-apps/plugin-opener": "^2.5.3", + "@xterm/addon-fit": "^0.11.0", + "@xterm/addon-serialize": "^0.14.0", + "@xterm/addon-web-links": "^0.12.0", + "@xterm/xterm": "^6.0.0", + "clsx": "^2.1.1", + "diff": "^8.0.4", + "i18next": "^26.0.1", + "i18next-browser-languagedetector": "^8.2.1", + "lucide-react": "^1.7.0", + "motion": "^12.38.0", + "qrcode": "^1.5.4", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "react-i18next": "^17.0.1", + "shiki": "^4.0.2", + "streamdown": "^2.5.0", + "ws": "^8.21.0" + }, + "devDependencies": { + "@eslint/js": "^9.39.4", + "@tailwindcss/vite": "^4.2.2", + "@tauri-apps/cli": "^2.10.0", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/react": "^16.3.0", + "@types/diff": "^7.0.2", + "@types/node": "^25.5.0", + "@types/qrcode": "^1.5.6", + "@types/react": "^19.2.5", + "@types/react-dom": "^19.2.3", + "@types/ws": "^8.18.1", + "@vitejs/plugin-react": "^6.0.1", + "eslint": "^9.39.4", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.5.2", + "globals": "^17.4.0", + "jsdom": "^29.0.1", + "material-icon-theme": "^5.32.0", + "prettier": "^3.6.2", + "tailwindcss": "^4.2.2", + "typescript": "~5.9.3", + "typescript-eslint": "^8.57.2", + "vite": "^8.0.3", + "vitest": "^4.1.2" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", + "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@antfu/install-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", + "license": "MIT", + "dependencies": { + "package-manager-detector": "^1.3.0", + "tinyexec": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@asamuzakjp/css-color": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-5.0.1.tgz", + "integrity": "sha512-2SZFvqMyvboVV1d15lMf7XiI3m7SDqXUuKaTymJYLN6dSGadqp+fVojqJlVoMlbZnlTmu3S0TLwLTJpvBMO1Aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^3.1.1", + "@csstools/css-color-parser": "^4.0.2", + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0", + "lru-cache": "^11.2.6" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@asamuzakjp/dom-selector": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-7.0.4.tgz", + "integrity": "sha512-jXR6x4AcT3eIrS2fSNAwJpwirOkGcd+E7F7CP3zjdTqz9B/2huHOL8YJZBgekKwLML+u7qB/6P1LXQuMScsx0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/nwsapi": "^2.3.9", + "bidi-js": "^1.0.3", + "css-tree": "^3.2.1", + "is-potential-custom-element-name": "^1.0.1", + "lru-cache": "^11.2.7" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/@asamuzakjp/dom-selector/node_modules/lru-cache": { + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@asamuzakjp/nwsapi": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz", + "integrity": "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@braintree/sanitize-url": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.2.tgz", + "integrity": "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==", + "license": "MIT" + }, + "node_modules/@bramus/specificity": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@bramus/specificity/-/specificity-2.4.2.tgz", + "integrity": "sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "^3.0.0" + }, + "bin": { + "specificity": "bin/cli.js" + } + }, + "node_modules/@chevrotain/cst-dts-gen": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.1.2.tgz", + "integrity": "sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/gast": "11.1.2", + "@chevrotain/types": "11.1.2", + "lodash-es": "4.17.23" + } + }, + "node_modules/@chevrotain/gast": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.1.2.tgz", + "integrity": "sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/types": "11.1.2", + "lodash-es": "4.17.23" + } + }, + "node_modules/@chevrotain/regexp-to-ast": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.1.2.tgz", + "integrity": "sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/types": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.1.2.tgz", + "integrity": "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==", + "license": "Apache-2.0" + }, + "node_modules/@chevrotain/utils": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.1.2.tgz", + "integrity": "sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA==", + "license": "Apache-2.0" + }, + "node_modules/@codemirror/commands": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.10.3.tgz", + "integrity": "sha512-JFRiqhKu+bvSkDLI+rUhJwSxQxYb759W5GBezE8Uc8mHLqC9aV/9aTC7yJSqCtB3F00pylrLCwnyS91Ap5ej4Q==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.6.0", + "@codemirror/view": "^6.27.0", + "@lezer/common": "^1.1.0" + } + }, + "node_modules/@codemirror/language": { + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.12.3.tgz", + "integrity": "sha512-QwCZW6Tt1siP37Jet9Tb02Zs81TQt6qQrZR2H+eGMcFsL1zMrk2/b9CLC7/9ieP1fjIUMgviLWMmgiHoJrj+ZA==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.5.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/search": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.7.0.tgz", + "integrity": "sha512-ZvGm99wc/s2cITtMT15LFdn8aH/aS+V+DqyGq/N5ZlV5vWtH+nILvC2nw0zX7ByNoHHDZ2IxxdW38O0tc5nVHg==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.37.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/state": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.6.0.tgz", + "integrity": "sha512-4nbvra5R5EtiCzr9BTHiTLc+MLXK2QGiAVYMyi8PkQd3SR+6ixar/Q/01Fa21TBIDOZXgeWV4WppsQolSreAPQ==", + "license": "MIT", + "dependencies": { + "@marijn/find-cluster-break": "^1.0.0" + } + }, + "node_modules/@codemirror/view": { + "version": "6.41.1", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.41.1.tgz", + "integrity": "sha512-ToDnWKbBnke+ZLrP6vgTTDScGi5H37YYuZGniQaBzxMVdtCxMrslsmtnOvbPZk4RX9bvkQqnWR/WS/35tJA0qg==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.6.0", + "crelt": "^1.0.6", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.0.2.tgz", + "integrity": "sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/@csstools/css-calc": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.1.1.tgz", + "integrity": "sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.0.2.tgz", + "integrity": "sha512-0GEfbBLmTFf0dJlpsNU7zwxRIH0/BGEMuXLTCvFYxuL1tNhqzTbtnFICyJLTNK4a+RechKP75e7w42ClXSnJQw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^6.0.2", + "@csstools/css-calc": "^3.1.1" + }, + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.0.tgz", + "integrity": "sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/css-syntax-patches-for-csstree": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.2.tgz", + "integrity": "sha512-5GkLzz4prTIpoyeUiIu3iV6CSG3Plo7xRVOFPKI7FVEJ3mZ0A8SwK0XU3Gl7xAkiQ+mDyam+NNp875/C5y+jSA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "peerDependencies": { + "css-tree": "^3.2.1" + }, + "peerDependenciesMeta": { + "css-tree": { + "optional": true + } + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-4.0.0.tgz", + "integrity": "sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.1.tgz", + "integrity": "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.1.tgz", + "integrity": "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz", + "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.14.0", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.5", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@exodus/bytes": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.15.0.tgz", + "integrity": "sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@noble/hashes": "^1.8.0 || ^2.0.0" + }, + "peerDependenciesMeta": { + "@noble/hashes": { + "optional": true + } + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.0.tgz", + "integrity": "sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==", + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^1.1.0", + "@iconify/types": "^2.0.0", + "mlly": "^1.8.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@lezer/common": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.5.2.tgz", + "integrity": "sha512-sxQE460fPZyU3sdc8lafxiPwJHBzZRy/udNFynGQky1SePYBdhkBl1kOagA9uT3pxR8K09bOrmTUqA9wb/PjSQ==", + "license": "MIT" + }, + "node_modules/@lezer/highlight": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.3.tgz", + "integrity": "sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.3.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.10.tgz", + "integrity": "sha512-rnCpTIBafOx4mRp43xOxDJbFipJm/c0cia/V5TiGlhmMa+wsSdoGmUN3w5Bqrks/09Q/D4tNAmWaT8p6NRi77A==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@marijn/find-cluster-break": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz", + "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==", + "license": "MIT" + }, + "node_modules/@mermaid-js/parser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.0.1.tgz", + "integrity": "sha512-opmV19kN1JsK0T6HhhokHpcVkqKpF+x2pPDKKM2ThHtZAB5F4PROopk0amuVYK5qMrIA4erzpNm8gmPNJgMDxQ==", + "license": "MIT", + "dependencies": { + "langium": "^4.0.0" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.2.tgz", + "integrity": "sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.122.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.122.0.tgz", + "integrity": "sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@primer/octicons-react": { + "version": "19.28.0", + "resolved": "https://registry.npmjs.org/@primer/octicons-react/-/octicons-react-19.28.0.tgz", + "integrity": "sha512-Xe3ZS/NtxRK/QXMlqh6Xn49nM4153VXgPQcwyIx6r2McZKkrAhP7xPe7yLhfx3X34rnxj6yimCnX7kswV30Vqw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": ">=16.3" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.12.tgz", + "integrity": "sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.12.tgz", + "integrity": "sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.12.tgz", + "integrity": "sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.12.tgz", + "integrity": "sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.12.tgz", + "integrity": "sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.12.tgz", + "integrity": "sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.12.tgz", + "integrity": "sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.12.tgz", + "integrity": "sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.12.tgz", + "integrity": "sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.12.tgz", + "integrity": "sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.12.tgz", + "integrity": "sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.12.tgz", + "integrity": "sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.12.tgz", + "integrity": "sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.1.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.12.tgz", + "integrity": "sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.12.tgz", + "integrity": "sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.7", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.7.tgz", + "integrity": "sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@shikijs/core": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.0.2.tgz", + "integrity": "sha512-hxT0YF4ExEqB8G/qFdtJvpmHXBYJ2lWW7qTHDarVkIudPFE6iCIrqdgWxGn5s+ppkGXI0aEGlibI0PAyzP3zlw==", + "license": "MIT", + "dependencies": { + "@shikijs/primitive": "4.0.2", + "@shikijs/types": "4.0.2", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.5" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.0.2.tgz", + "integrity": "sha512-7PW0Nm49DcoUIQEXlJhNNBHyoGMjalRETTCcjMqEaMoJRLljy1Bi/EGV3/qLBgLKQejdspiiYuHGQW6dX94Nag==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.0.2", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.4" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.0.2.tgz", + "integrity": "sha512-UpCB9Y2sUKlS9z8juFSKz7ZtysmeXCgnRF0dlhXBkmQnek7lAToPte8DkxmEYGNTMii72zU/lyXiCB6StuZeJg==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.0.2", + "@shikijs/vscode-textmate": "^10.0.2" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/langs": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.0.2.tgz", + "integrity": "sha512-KaXby5dvoeuZzN0rYQiPMjFoUrz4hgwIE+D6Du9owcHcl6/g16/yT5BQxSW5cGt2MZBz6Hl0YuRqf12omRfUUg==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.0.2" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/primitive": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.0.2.tgz", + "integrity": "sha512-M6UMPrSa3fN5ayeJwFVl9qWofl273wtK1VG8ySDZ1mQBfhCpdd8nEx7nPZ/tk7k+TYcpqBZzj/AnwxT9lO+HJw==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.0.2", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/themes": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.0.2.tgz", + "integrity": "sha512-mjCafwt8lJJaVSsQvNVrJumbnnj1RI8jbUKrPKgE6E3OvQKxnuRoBaYC51H4IGHePsGN/QtALglWBU7DoKDFnA==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.0.2" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/types": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.0.2.tgz", + "integrity": "sha512-qzbeRooUTPnLE+sHD/Z8DStmaDgnbbc/pMrU203950aRqjX/6AFHeDYT+j00y2lPdz0ywJKx7o/7qnqTivtlXg==", + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "license": "MIT" + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@streamdown/math": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@streamdown/math/-/math-1.0.2.tgz", + "integrity": "sha512-r8Ur9/lBuFnzZAFdEWrLUF2s/gRwRRRwruqltdZibyjbCBnuW7SJbFm26nXqvpJPW/gzpBUMrBVBzd88z05D5g==", + "license": "Apache-2.0", + "dependencies": { + "katex": "^0.16.27", + "rehype-katex": "^7.0.1", + "remark-math": "^6.0.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.2.tgz", + "integrity": "sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.19.0", + "jiti": "^2.6.1", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.2.2" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.2.2.tgz", + "integrity": "sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.2.2", + "@tailwindcss/oxide-darwin-arm64": "4.2.2", + "@tailwindcss/oxide-darwin-x64": "4.2.2", + "@tailwindcss/oxide-freebsd-x64": "4.2.2", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.2", + "@tailwindcss/oxide-linux-arm64-gnu": "4.2.2", + "@tailwindcss/oxide-linux-arm64-musl": "4.2.2", + "@tailwindcss/oxide-linux-x64-gnu": "4.2.2", + "@tailwindcss/oxide-linux-x64-musl": "4.2.2", + "@tailwindcss/oxide-wasm32-wasi": "4.2.2", + "@tailwindcss/oxide-win32-arm64-msvc": "4.2.2", + "@tailwindcss/oxide-win32-x64-msvc": "4.2.2" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.2.tgz", + "integrity": "sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.2.tgz", + "integrity": "sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.2.tgz", + "integrity": "sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.2.tgz", + "integrity": "sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.2.tgz", + "integrity": "sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.2.tgz", + "integrity": "sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.2.tgz", + "integrity": "sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.2.tgz", + "integrity": "sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.2.tgz", + "integrity": "sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.2.tgz", + "integrity": "sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.8.1", + "@emnapi/runtime": "^1.8.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.1", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.2.tgz", + "integrity": "sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.2.tgz", + "integrity": "sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.2.2.tgz", + "integrity": "sha512-mEiF5HO1QqCLXoNEfXVA1Tzo+cYsrqV7w9Juj2wdUFyW07JRenqMG225MvPwr3ZD9N1bFQj46X7r33iHxLUW0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.2.2", + "@tailwindcss/oxide": "4.2.2", + "tailwindcss": "4.2.2" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7 || ^8" + } + }, + "node_modules/@tauri-apps/api": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.10.1.tgz", + "integrity": "sha512-hKL/jWf293UDSUN09rR69hrToyIXBb8CjGaWC7gfinvnQrBVvnLr08FeFi38gxtugAVyVcTa5/FD/Xnkb1siBw==", + "license": "Apache-2.0 OR MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + } + }, + "node_modules/@tauri-apps/cli": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-2.10.1.tgz", + "integrity": "sha512-jQNGF/5quwORdZSSLtTluyKQ+o6SMa/AUICfhf4egCGFdMHqWssApVgYSbg+jmrZoc8e1DscNvjTnXtlHLS11g==", + "dev": true, + "license": "Apache-2.0 OR MIT", + "bin": { + "tauri": "tauri.js" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + }, + "optionalDependencies": { + "@tauri-apps/cli-darwin-arm64": "2.10.1", + "@tauri-apps/cli-darwin-x64": "2.10.1", + "@tauri-apps/cli-linux-arm-gnueabihf": "2.10.1", + "@tauri-apps/cli-linux-arm64-gnu": "2.10.1", + "@tauri-apps/cli-linux-arm64-musl": "2.10.1", + "@tauri-apps/cli-linux-riscv64-gnu": "2.10.1", + "@tauri-apps/cli-linux-x64-gnu": "2.10.1", + "@tauri-apps/cli-linux-x64-musl": "2.10.1", + "@tauri-apps/cli-win32-arm64-msvc": "2.10.1", + "@tauri-apps/cli-win32-ia32-msvc": "2.10.1", + "@tauri-apps/cli-win32-x64-msvc": "2.10.1" + } + }, + "node_modules/@tauri-apps/cli-darwin-arm64": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-2.10.1.tgz", + "integrity": "sha512-Z2OjCXiZ+fbYZy7PmP3WRnOpM9+Fy+oonKDEmUE6MwN4IGaYqgceTjwHucc/kEEYZos5GICve35f7ZiizgqEnQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-darwin-x64": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-2.10.1.tgz", + "integrity": "sha512-V/irQVvjPMGOTQqNj55PnQPVuH4VJP8vZCN7ajnj+ZS8Kom1tEM2hR3qbbIRoS3dBKs5mbG8yg1WC+97dq17Pw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm-gnueabihf": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-2.10.1.tgz", + "integrity": "sha512-Hyzwsb4VnCWKGfTw+wSt15Z2pLw2f0JdFBfq2vHBOBhvg7oi6uhKiF87hmbXOBXUZaGkyRDkCHsdzJcIfoJC2w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm64-gnu": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-2.10.1.tgz", + "integrity": "sha512-OyOYs2t5GkBIvyWjA1+h4CZxTcdz1OZPCWAPz5DYEfB0cnWHERTnQ/SLayQzncrT0kwRoSfSz9KxenkyJoTelA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm64-musl": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.10.1.tgz", + "integrity": "sha512-MIj78PDDGjkg3NqGptDOGgfXks7SYJwhiMh8SBoZS+vfdz7yP5jN18bNaLnDhsVIPARcAhE1TlsZe/8Yxo2zqg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-riscv64-gnu": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-riscv64-gnu/-/cli-linux-riscv64-gnu-2.10.1.tgz", + "integrity": "sha512-X0lvOVUg8PCVaoEtEAnpxmnkwlE1gcMDTqfhbefICKDnOTJ5Est3qL0SrWxizDackIOKBcvtpejrSiVpuJI1kw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-x64-gnu": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-2.10.1.tgz", + "integrity": "sha512-2/12bEzsJS9fAKybxgicCDFxYD1WEI9kO+tlDwX5znWG2GwMBaiWcmhGlZ8fi+DMe9CXlcVarMTYc0L3REIRxw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-x64-musl": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-2.10.1.tgz", + "integrity": "sha512-Y8J0ZzswPz50UcGOFuXGEMrxbjwKSPgXftx5qnkuMs2rmwQB5ssvLb6tn54wDSYxe7S6vlLob9vt0VKuNOaCIQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-arm64-msvc": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-2.10.1.tgz", + "integrity": "sha512-iSt5B86jHYAPJa/IlYw++SXtFPGnWtFJriHn7X0NFBVunF6zu9+/zOn8OgqIWSl8RgzhLGXQEEtGBdR4wzpVgg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-ia32-msvc": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-2.10.1.tgz", + "integrity": "sha512-gXyxgEzsFegmnWywYU5pEBURkcFN/Oo45EAwvZrHMh+zUSEAvO5E8TXsgPADYm31d1u7OQU3O3HsYfVBf2moHw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-x64-msvc": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-2.10.1.tgz", + "integrity": "sha512-6Cn7YpPFwzChy0ERz6djKEmUehWrYlM+xTaNzGPgZocw3BD7OfwfWHKVWxXzdjEW2KfKkHddfdxK1XXTYqBRLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/plugin-dialog": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-dialog/-/plugin-dialog-2.6.0.tgz", + "integrity": "sha512-q4Uq3eY87TdcYzXACiYSPhmpBA76shgmQswGkSVio4C82Sz2W4iehe9TnKYwbq7weHiL88Yw19XZm7v28+Micg==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@tauri-apps/api": "^2.8.0" + } + }, + "node_modules/@tauri-apps/plugin-fs": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-fs/-/plugin-fs-2.4.5.tgz", + "integrity": "sha512-dVxWWGE6VrOxC7/jlhyE+ON/Cc2REJlM35R3PJX3UvFw2XwYhLGQVAIyrehenDdKjotipjYEVc4YjOl3qq90fA==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@tauri-apps/api": "^2.8.0" + } + }, + "node_modules/@tauri-apps/plugin-http": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-http/-/plugin-http-2.5.7.tgz", + "integrity": "sha512-+F2lEH/c9b0zSsOXKq+5hZNcd9F4IIKCK1T17RqMwpCmVnx2aoqY8yIBccCd25HTYUb3j6NPVbRax/m00hKG8A==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@tauri-apps/api": "^2.10.1" + } + }, + "node_modules/@tauri-apps/plugin-notification": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-notification/-/plugin-notification-2.3.3.tgz", + "integrity": "sha512-Zw+ZH18RJb41G4NrfHgIuofJiymusqN+q8fGUIIV7vyCH+5sSn5coqRv/MWB9qETsUs97vmU045q7OyseCV3Qg==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@tauri-apps/api": "^2.8.0" + } + }, + "node_modules/@tauri-apps/plugin-opener": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/@tauri-apps/plugin-opener/-/plugin-opener-2.5.3.tgz", + "integrity": "sha512-CCcUltXMOfUEArbf3db3kCE7Ggy1ExBEBl51Ko2ODJ6GDYHRp1nSNlQm5uNCFY5k7/ufaK5Ib3Du/Zir19IYQQ==", + "license": "MIT OR Apache-2.0", + "dependencies": { + "@tauri-apps/api": "^2.8.0" + } + }, + "node_modules/@testing-library/dom": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "picocolors": "1.1.1", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz", + "integrity": "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "picocolors": "^1.1.1", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@testing-library/react": { + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.2.tgz", + "integrity": "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0 || ^19.0.0", + "@types/react-dom": "^18.0.0 || ^19.0.0", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "license": "MIT" + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz", + "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==", + "license": "MIT" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "license": "MIT", + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "license": "MIT" + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "license": "MIT" + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "license": "MIT" + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "license": "MIT" + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", + "license": "MIT" + }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", + "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "license": "MIT", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/diff": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/diff/-/diff-7.0.2.tgz", + "integrity": "sha512-JSWRMozjFKsGlEjiiKajUjIJVKuKdE3oVy2DNtK+fUo8q82nhFZ2CPQwicAIkXrofahDXrWJ7mjelvZphMS98Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/katex": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.8.tgz", + "integrity": "sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==", + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/@types/qrcode": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.6.tgz", + "integrity": "sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/react": { + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.57.2.tgz", + "integrity": "sha512-NZZgp0Fm2IkD+La5PR81sd+g+8oS6JwJje+aRWsDocxHkjyRw0J5L5ZTlN3LI1LlOcGL7ph3eaIUmTXMIjLk0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.57.2", + "@typescript-eslint/type-utils": "8.57.2", + "@typescript-eslint/utils": "8.57.2", + "@typescript-eslint/visitor-keys": "8.57.2", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.57.2", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.57.2.tgz", + "integrity": "sha512-30ScMRHIAD33JJQkgfGW1t8CURZtjc2JpTrq5n2HFhOefbAhb7ucc7xJwdWcrEtqUIYJ73Nybpsggii6GtAHjA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.57.2", + "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/typescript-estree": "8.57.2", + "@typescript-eslint/visitor-keys": "8.57.2", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.57.2.tgz", + "integrity": "sha512-FuH0wipFywXRTHf+bTTjNyuNQQsQC3qh/dYzaM4I4W0jrCqjCVuUh99+xd9KamUfmCGPvbO8NDngo/vsnNVqgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.57.2", + "@typescript-eslint/types": "^8.57.2", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.57.2.tgz", + "integrity": "sha512-snZKH+W4WbWkrBqj4gUNRIGb/jipDW3qMqVJ4C9rzdFc+wLwruxk+2a5D+uoFcKPAqyqEnSb4l2ULuZf95eSkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/visitor-keys": "8.57.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.57.2.tgz", + "integrity": "sha512-3Lm5DSM+DCowsUOJC+YqHHnKEfFh5CoGkj5Z31NQSNF4l5wdOwqGn99wmwN/LImhfY3KJnmordBq/4+VDe2eKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.57.2.tgz", + "integrity": "sha512-Co6ZCShm6kIbAM/s+oYVpKFfW7LBc6FXoPXjTRQ449PPNBY8U0KZXuevz5IFuuUj2H9ss40atTaf9dlGLzbWZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/typescript-estree": "8.57.2", + "@typescript-eslint/utils": "8.57.2", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.2.tgz", + "integrity": "sha512-/iZM6FnM4tnx9csuTxspMW4BOSegshwX5oBDznJ7S4WggL7Vczz5d2W11ecc4vRrQMQHXRSxzrCsyG5EsPPTbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.2.tgz", + "integrity": "sha512-2MKM+I6g8tJxfSmFKOnHv2t8Sk3T6rF20A1Puk0svLK+uVapDZB/4pfAeB7nE83uAZrU6OxW+HmOd5wHVdXwXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.57.2", + "@typescript-eslint/tsconfig-utils": "8.57.2", + "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/visitor-keys": "8.57.2", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.57.2.tgz", + "integrity": "sha512-krRIbvPK1ju1WBKIefiX+bngPs+odIQUtR7kymzPfo1POVw3jlF+nLkmexdSSd4UCbDcQn+wMBATOOmpBbqgKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.57.2", + "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/typescript-estree": "8.57.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.2.tgz", + "integrity": "sha512-zhahknjobV2FiD6Ee9iLbS7OV9zi10rG26odsQdfBO/hjSzUQbkIYgda+iNKK1zNiW2ey+Lf8MU5btN17V3dUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.57.2", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@upsetjs/venn.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@upsetjs/venn.js/-/venn.js-2.0.0.tgz", + "integrity": "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==", + "license": "MIT", + "optionalDependencies": { + "d3-selection": "^3.0.0", + "d3-transition": "^3.0.1" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.0.1.tgz", + "integrity": "sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "1.0.0-rc.7" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", + "babel-plugin-react-compiler": "^1.0.0", + "vite": "^8.0.0" + }, + "peerDependenciesMeta": { + "@rolldown/plugin-babel": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + } + } + }, + "node_modules/@vitest/expect": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.2.tgz", + "integrity": "sha512-gbu+7B0YgUJ2nkdsRJrFFW6X7NTP44WlhiclHniUhxADQJH5Szt9mZ9hWnJPJ8YwOK5zUOSSlSvyzRf0u1DSBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.1.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.1.2", + "@vitest/utils": "4.1.2", + "chai": "^6.2.2", + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.2.tgz", + "integrity": "sha512-Ize4iQtEALHDttPRCmN+FKqOl2vxTiNUhzobQFFt/BM1lRUTG7zRCLOykG/6Vo4E4hnUdfVLo5/eqKPukcWW7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "4.1.2", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.2.tgz", + "integrity": "sha512-dwQga8aejqeuB+TvXCMzSQemvV9hNEtDDpgUKDzOmNQayl2OG241PSWeJwKRH3CiC+sESrmoFd49rfnq7T4RnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.2.tgz", + "integrity": "sha512-Gr+FQan34CdiYAwpGJmQG8PgkyFVmARK8/xSijia3eTFgVfpcpztWLuP6FttGNfPLJhaZVP/euvujeNYar36OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "4.1.2", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.2.tgz", + "integrity": "sha512-g7yfUmxYS4mNxk31qbOYsSt2F4m1E02LFqO53Xpzg3zKMhLAPZAjjfyl9e6z7HrW6LvUdTwAQR3HHfLjpko16A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.1.2", + "@vitest/utils": "4.1.2", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.2.tgz", + "integrity": "sha512-DU4fBnbVCJGNBwVA6xSToNXrkZNSiw59H8tcuUspVMsBDBST4nfvsPsEHDHGtWRRnqBERBQu7TrTKskmjqTXKA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.2.tgz", + "integrity": "sha512-xw2/TiX82lQHA06cgbqRKFb5lCAy3axQ4H4SoUFhUsg+wztiet+co86IAMDtF6Vm1hc7J6j09oh/rgDn+JdKIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.1.2", + "convert-source-map": "^2.0.0", + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@xterm/addon-fit": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@xterm/addon-fit/-/addon-fit-0.11.0.tgz", + "integrity": "sha512-jYcgT6xtVYhnhgxh3QgYDnnNMYTcf8ElbxxFzX0IZo+vabQqSPAjC3c1wJrKB5E19VwQei89QCiZZP86DCPF7g==", + "license": "MIT" + }, + "node_modules/@xterm/addon-serialize": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@xterm/addon-serialize/-/addon-serialize-0.14.0.tgz", + "integrity": "sha512-uteyTU1EkrQa2Ux6P/uFl2fzmXI46jy5uoQMKEOM0fKTyiW7cSn0WrFenHm5vO5uEXX/GpwW/FgILvv3r0WbkA==", + "license": "MIT" + }, + "node_modules/@xterm/addon-web-links": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@xterm/addon-web-links/-/addon-web-links-0.12.0.tgz", + "integrity": "sha512-4Smom3RPyVp7ZMYOYDoC/9eGJJJqYhnPLGGqJ6wOBfB8VxPViJNSKdgRYb8NpaM6YSelEKbA2SStD7lGyqaobw==", + "license": "MIT" + }, + "node_modules/@xterm/xterm": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-6.0.0.tgz", + "integrity": "sha512-TQwDdQGtwwDt+2cgKDLn0IRaSxYu1tSUjgKarSDkUM0ZNiSRXFpjxEsvc/Zgc5kq5omJ+V0a8/kIM2WD3sMOYg==", + "license": "MIT", + "workspaces": [ + "addons/*" + ] + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.7", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.7.tgz", + "integrity": "sha512-1ghYO3HnxGec0TCGBXiDLVns4eCSx4zJpxnHrlqFQajmhfKMQBzUGDdkMK7fUW7PTHTeLf+j87aTuKuuwWzMGw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "require-from-string": "^2.0.2" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001778", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001778.tgz", + "integrity": "sha512-PN7uxFL+ExFJO61aVmP1aIEG4i9whQd4eoSCebav62UwDyp5OHh06zN4jqKSMePVgxHifCw1QJxdRkA1Pisekg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chai": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chevrotain": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.1.2.tgz", + "integrity": "sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/cst-dts-gen": "11.1.2", + "@chevrotain/gast": "11.1.2", + "@chevrotain/regexp-to-ast": "11.1.2", + "@chevrotain/types": "11.1.2", + "@chevrotain/utils": "11.1.2", + "lodash-es": "4.17.23" + } + }, + "node_modules/chevrotain-allstar": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", + "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", + "license": "MIT", + "dependencies": { + "lodash-es": "^4.17.21" + }, + "peerDependencies": { + "chevrotain": "^11.0.0" + } + }, + "node_modules/chroma-js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-3.2.0.tgz", + "integrity": "sha512-os/OippSlX1RlWWr+QDPcGUZs0uoqr32urfxESG9U93lhUfbnlyckte84Q8P1UQY/qth983AS1JONKmLS4T0nw==", + "dev": true, + "license": "(BSD-3-Clause AND Apache-2.0)" + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "license": "MIT", + "dependencies": { + "layout-base": "^1.0.0" + } + }, + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-tree": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true, + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cytoscape": { + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz", + "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "license": "MIT", + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", + "license": "MIT" + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", + "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "license": "BSD-3-Clause" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC" + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dagre-d3-es": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.14.tgz", + "integrity": "sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==", + "license": "MIT", + "dependencies": { + "d3": "^7.9.0", + "lodash-es": "^4.17.21" + } + }, + "node_modules/data-urls": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-7.0.0.tgz", + "integrity": "sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^16.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/dayjs": { + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", + "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "dev": true, + "license": "MIT" + }, + "node_modules/decode-named-character-reference": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deep-rename-keys": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/deep-rename-keys/-/deep-rename-keys-0.2.1.tgz", + "integrity": "sha512-RHd9ABw4Fvk+gYDWqwOftG849x0bYOySl/RgX0tLI9i27ZIeSO91mLZJEp7oPHOMFqHvpgu21YptmDt0FYD/0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2", + "rename-keys": "^1.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delaunator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.1.0.tgz", + "integrity": "sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==", + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/diff": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", + "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==", + "license": "MIT" + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/dompurify": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.3.tgz", + "integrity": "sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.313", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.313.tgz", + "integrity": "sha512-QBMrTWEf00GXZmJyx2lbYD45jpI3TUFnNIzJ5BBc8piGUDwMPa1GV6HJWTZVvY/eiN3fSopl7NRbgGp9sZ9LTA==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/enhanced-resolve": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.2", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.5.2.tgz", + "integrity": "sha512-hmgTH57GfzoTFjVN0yBwTggnsVUF2tcqi7RJZHqi9lIezSs4eFyAMktA68YD4r5kNw1mxyY4dmkyoFDb3FIqrA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": "^9 || ^10" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", + "integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==", + "dev": true, + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/expect-type": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz", + "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/framer-motion": { + "version": "12.38.0", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.38.0.tgz", + "integrity": "sha512-rFYkY/pigbcswl1XQSb7q424kSTQ8q6eAC+YUsSKooHQYuLdzdHjrt6uxUC+PRAO++q5IS7+TamgIw1AphxR+g==", + "license": "MIT", + "dependencies": { + "motion-dom": "^12.38.0", + "motion-utils": "^12.36.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz", + "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/hachure-fill": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", + "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hast-util-from-dom": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.1.tgz", + "integrity": "sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==", + "license": "ISC", + "dependencies": { + "@types/hast": "^3.0.0", + "hastscript": "^9.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html-isomorphic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-2.0.0.tgz", + "integrity": "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-dom": "^5.0.0", + "hast-util-from-html": "^2.0.0", + "unist-util-remove-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html/node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", + "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw/node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/hast-util-sanitize": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-5.0.2.tgz", + "integrity": "sha512-3yTWghByc50aGS7JlGhk61SPenfE/p1oaFeNwkOOyrscaOkMGrcW9+Cy/QAIOBpZxP1yqDIzFMR0+Np0i0+usg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "unist-util-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz", + "integrity": "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", + "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-6.0.0.tgz", + "integrity": "sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@exodus/bytes": "^1.6.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "license": "MIT", + "dependencies": { + "void-elements": "3.1.0" + } + }, + "node_modules/html-url-attributes": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz", + "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/i18next": { + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-26.0.1.tgz", + "integrity": "sha512-vtz5sXU4+nkCm8yEU+JJ6yYIx0mkg9e68W0G0PXpnOsmzLajNsW5o28DJMqbajxfsfq0gV3XdrBudsDQnwxfsQ==", + "funding": [ + { + "type": "individual", + "url": "https://www.locize.com/i18next" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + }, + { + "type": "individual", + "url": "https://www.locize.com" + } + ], + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.29.2" + }, + "peerDependencies": { + "typescript": "^5 || ^6" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/i18next-browser-languagedetector": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.2.1.tgz", + "integrity": "sha512-bZg8+4bdmaOiApD7N7BPT9W8MLZG+nPTOFlLiJiT8uzKXFjhxw4v2ierCXOwB5sFDMtuA5G4kgYZ0AznZxQ/cw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.2" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", + "license": "MIT" + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "29.0.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-29.0.1.tgz", + "integrity": "sha512-z6JOK5gRO7aMybVq/y/MlIpKh8JIi68FBKMUtKkK2KH/wMSRlCxQ682d08LB9fYXplyY/UXG8P4XXTScmdjApg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/css-color": "^5.0.1", + "@asamuzakjp/dom-selector": "^7.0.3", + "@bramus/specificity": "^2.4.2", + "@csstools/css-syntax-patches-for-csstree": "^1.1.1", + "@exodus/bytes": "^1.15.0", + "css-tree": "^3.2.1", + "data-urls": "^7.0.0", + "decimal.js": "^10.6.0", + "html-encoding-sniffer": "^6.0.0", + "is-potential-custom-element-name": "^1.0.1", + "lru-cache": "^11.2.7", + "parse5": "^8.0.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^6.0.1", + "undici": "^7.24.5", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^8.0.1", + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^16.0.1", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24.0.0" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/lru-cache": { + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/katex": { + "version": "0.16.38", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.38.tgz", + "integrity": "sha512-cjHooZUmIAUmDsHBN+1n8LaZdpmbj03LtYeYPyuYB7OuloiaeaV6N4LcfjcnHVzGWjVQmKrxxTrpDcmSzEZQwQ==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" + }, + "node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/langium": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/langium/-/langium-4.2.1.tgz", + "integrity": "sha512-zu9QWmjpzJcomzdJQAHgDVhLGq5bLosVak1KVa40NzQHXfqr4eAHupvnPOVXEoLkg6Ocefvf/93d//SB7du4YQ==", + "license": "MIT", + "dependencies": { + "chevrotain": "~11.1.1", + "chevrotain-allstar": "~0.3.1", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.11", + "vscode-uri": "~3.1.0" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "license": "MIT" + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.7.0.tgz", + "integrity": "sha512-yI7BeItCLZJTXikmK4KNUGCKoGzSvbKlfCvw44bU4fXAL6v3gYS4uHD1jzsLkfwODYwI6Drw5Tu9Z5ulDe0TSg==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/marked": { + "version": "17.0.4", + "resolved": "https://registry.npmjs.org/marked/-/marked-17.0.4.tgz", + "integrity": "sha512-NOmVMM+KAokHMvjWmC5N/ZOvgmSWuqJB8FoYI019j4ogb/PeRMKoKIjReZ2w3376kkA8dSJIP8uD993Kxc0iRQ==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/material-icon-theme": { + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/material-icon-theme/-/material-icon-theme-5.32.0.tgz", + "integrity": "sha512-SxJxCcnk6cJIbd+AxmoeghXJ24joXGmUzjiGci16sX4mXZdXprGEzM6ZZ0VHGAofxNlMqznEbExINwFLsxf8eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chroma-js": "^3.1.2", + "events": "^3.3.0", + "fast-deep-equal": "^3.1.3", + "svgson": "^5.3.1" + }, + "engines": { + "vscode": "^1.55.0" + }, + "funding": { + "url": "https://github.com/sponsors/material-extensions" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", + "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-math": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-3.0.0.tgz", + "integrity": "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "longest-streak": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.1.0", + "unist-util-remove-position": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/mermaid": { + "version": "11.13.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.13.0.tgz", + "integrity": "sha512-fEnci+Immw6lKMFI8sqzjlATTyjLkRa6axrEgLV2yHTfv8r+h1wjFbV6xeRtd4rUV1cS4EpR9rwp3Rci7TRWDw==", + "license": "MIT", + "dependencies": { + "@braintree/sanitize-url": "^7.1.1", + "@iconify/utils": "^3.0.2", + "@mermaid-js/parser": "^1.0.1", + "@types/d3": "^7.4.3", + "@upsetjs/venn.js": "^2.0.0", + "cytoscape": "^3.33.1", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.2.0", + "d3": "^7.9.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.14", + "dayjs": "^1.11.19", + "dompurify": "^3.3.1", + "katex": "^0.16.25", + "khroma": "^2.1.0", + "lodash-es": "^4.17.23", + "marked": "^16.3.0", + "roughjs": "^4.6.6", + "stylis": "^4.3.6", + "ts-dedent": "^2.2.0", + "uuid": "^11.1.0" + } + }, + "node_modules/mermaid/node_modules/marked": { + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz", + "integrity": "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-math": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz", + "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==", + "license": "MIT", + "dependencies": { + "@types/katex": "^0.16.0", + "devlop": "^1.0.0", + "katex": "^0.16.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mlly": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.2.tgz", + "integrity": "sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==", + "license": "MIT", + "dependencies": { + "acorn": "^8.16.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.3" + } + }, + "node_modules/motion": { + "version": "12.38.0", + "resolved": "https://registry.npmjs.org/motion/-/motion-12.38.0.tgz", + "integrity": "sha512-uYfXzeHlgThchzwz5Te47dlv5JOUC7OB4rjJ/7XTUgtBZD8CchMN8qEJ4ZVsUmTyYA44zjV0fBwsiktRuFnn+w==", + "license": "MIT", + "dependencies": { + "framer-motion": "^12.38.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/motion-dom": { + "version": "12.38.0", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.38.0.tgz", + "integrity": "sha512-pdkHLD8QYRp8VfiNLb8xIBJis1byQ9gPT3Jnh2jqfFtAsWUA3dEepDlsWe/xMpO8McV+VdpKVcp+E+TGJEtOoA==", + "license": "MIT", + "dependencies": { + "motion-utils": "^12.36.0" + } + }, + "node_modules/motion-utils": { + "version": "12.36.0", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.36.0.tgz", + "integrity": "sha512-eHWisygbiwVvf6PZ1vhaHCLamvkSbPIeAYxWUuL3a2PD/TROgE7FvfHWTIH4vMl798QLfMw15nRqIaRDXTlYRg==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, + "node_modules/oniguruma-parser": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", + "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==", + "license": "MIT" + }, + "node_modules/oniguruma-to-es": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.4.tgz", + "integrity": "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==", + "license": "MIT", + "dependencies": { + "oniguruma-parser": "^0.12.1", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-manager-detector": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.6.0.tgz", + "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==", + "license": "MIT" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.0.tgz", + "integrity": "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-data-parser": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", + "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/points-on-curve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "license": "MIT" + }, + "node_modules/points-on-path": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", + "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", + "license": "MIT", + "dependencies": { + "path-data-parser": "0.1.0", + "points-on-curve": "0.2.0" + } + }, + "node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz", + "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==", + "license": "MIT", + "dependencies": { + "dijkstrajs": "^1.0.1", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/react": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.4" + } + }, + "node_modules/react-i18next": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-17.0.1.tgz", + "integrity": "sha512-iG65FGnFHcYyHNuT01ukffYWCOBFTWSdVD8EZd/dCVWgtjFPObcSsvYYNwcsokO/rDcTb5d6D8Acv8MrOdm6Hw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.29.2", + "html-parse-stringify": "^3.0.1", + "use-sync-external-store": "^1.6.0" + }, + "peerDependencies": { + "i18next": ">= 26.0.1", + "react": ">= 16.8.0", + "typescript": "^5 || ^6" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz", + "integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "license": "MIT" + }, + "node_modules/rehype-harden": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/rehype-harden/-/rehype-harden-1.1.8.tgz", + "integrity": "sha512-Qn7vR1xrf6fZCrkm9TDWi/AB4ylrHy+jqsNm1EHOAmbARYA6gsnVJBq/sdBh6kmT4NEZxH5vgIjrscefJAOXcw==", + "license": "MIT", + "dependencies": { + "unist-util-visit": "^5.0.0" + } + }, + "node_modules/rehype-katex": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/rehype-katex/-/rehype-katex-7.0.1.tgz", + "integrity": "sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/katex": "^0.16.0", + "hast-util-from-html-isomorphic": "^2.0.0", + "hast-util-to-text": "^4.0.0", + "katex": "^0.16.0", + "unist-util-visit-parents": "^6.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-sanitize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/rehype-sanitize/-/rehype-sanitize-6.0.0.tgz", + "integrity": "sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-sanitize": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-math": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-6.0.0.tgz", + "integrity": "sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-math": "^3.0.0", + "micromark-extension-math": "^3.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remend": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/remend/-/remend-1.3.0.tgz", + "integrity": "sha512-iIhggPkhW3hFImKtB10w0dz4EZbs28mV/dmbcYVonWEJ6UGHHpP+bFZnTh6GNWJONg5m+U56JrL+8IxZRdgWjw==", + "license": "Apache-2.0" + }, + "node_modules/rename-keys": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/rename-keys/-/rename-keys-1.2.0.tgz", + "integrity": "sha512-U7XpAktpbSgHTRSNRrjKSrjYkZKuhUukfoBlXWXUExCAqhzh1TU3BDRAfJmarcl5voKS+pbKU9MvyLWKZ4UEEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "license": "ISC" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", + "integrity": "sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==", + "license": "Unlicense" + }, + "node_modules/rolldown": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.12.tgz", + "integrity": "sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.122.0", + "@rolldown/pluginutils": "1.0.0-rc.12" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.0-rc.12", + "@rolldown/binding-darwin-arm64": "1.0.0-rc.12", + "@rolldown/binding-darwin-x64": "1.0.0-rc.12", + "@rolldown/binding-freebsd-x64": "1.0.0-rc.12", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.12", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.12", + "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.12", + "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.12", + "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.12", + "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.12", + "@rolldown/binding-linux-x64-musl": "1.0.0-rc.12", + "@rolldown/binding-openharmony-arm64": "1.0.0-rc.12", + "@rolldown/binding-wasm32-wasi": "1.0.0-rc.12", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.12", + "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.12" + } + }, + "node_modules/rolldown/node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.12.tgz", + "integrity": "sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/roughjs": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", + "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "license": "MIT", + "dependencies": { + "hachure-fill": "^0.5.2", + "path-data-parser": "^0.1.0", + "points-on-curve": "^0.2.0", + "points-on-path": "^0.2.1" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shiki": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.0.2.tgz", + "integrity": "sha512-eAVKTMedR5ckPo4xne/PjYQYrU3qx78gtJZ+sHlXEg5IHhhoQhMfZVzetTYuaJS0L2Ef3AcCRzCHV8T0WI6nIQ==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "4.0.2", + "@shikijs/engine-javascript": "4.0.2", + "@shikijs/engine-oniguruma": "4.0.2", + "@shikijs/langs": "4.0.2", + "@shikijs/themes": "4.0.2", + "@shikijs/types": "4.0.2", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.0.0.tgz", + "integrity": "sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/streamdown": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/streamdown/-/streamdown-2.5.0.tgz", + "integrity": "sha512-/tTnURfIOxZK/pqJAxsfCvETG/XCJHoWnk3jq9xLcuz6CSpnjjuxSRBTTL4PKGhxiZQf0lqPxGhImdpwcZ2XwA==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1", + "hast-util-to-jsx-runtime": "^2.3.6", + "html-url-attributes": "^3.0.1", + "marked": "^17.0.1", + "mermaid": "^11.12.2", + "rehype-harden": "^1.1.8", + "rehype-raw": "^7.0.0", + "rehype-sanitize": "^6.0.0", + "remark-gfm": "^4.0.1", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.2", + "remend": "1.3.0", + "tailwind-merge": "^3.4.0", + "unified": "^11.0.5", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-mod": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.3.tgz", + "integrity": "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==", + "license": "MIT" + }, + "node_modules/style-to-js": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.14" + } + }, + "node_modules/style-to-object": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.7" + } + }, + "node_modules/stylis": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", + "license": "MIT" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/svgson": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/svgson/-/svgson-5.3.1.tgz", + "integrity": "sha512-qdPgvUNWb40gWktBJnbJRelWcPzkLed/ShhnRsjbayXz8OtdPOzbil9jtiZdrYvSDumAz/VNQr6JaNfPx/gvPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-rename-keys": "^0.2.1", + "xml-reader": "2.4.3" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tailwind-merge": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.5.0.tgz", + "integrity": "sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.2.tgz", + "integrity": "sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", + "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyrainbow": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", + "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tldts": { + "version": "7.0.25", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.25.tgz", + "integrity": "sha512-keinCnPbwXEUG3ilrWQZU+CqcTTzHq9m2HhoUP2l7Xmi8l1LuijAXLpAJ5zRW+ifKTNscs4NdCkfkDCBYm352w==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^7.0.25" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "7.0.25", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.25.tgz", + "integrity": "sha512-ZjCZK0rppSBu7rjHYDYsEaMOIbbT+nWF57hKkv4IUmZWBNrBWBOjIElc0mKRgLM8bm7x/BBlof6t2gi/Oq/Asw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tough-cookie": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.1.tgz", + "integrity": "sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^7.0.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/tr46": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz", + "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "license": "MIT", + "engines": { + "node": ">=6.10" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.57.2.tgz", + "integrity": "sha512-VEPQ0iPgWO/sBaZOU1xo4nuNdODVOajPnTIbog2GKYr31nIlZ0fWPoCQgGfF3ETyBl1vn63F/p50Um9Z4J8O8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.57.2", + "@typescript-eslint/parser": "8.57.2", + "@typescript-eslint/typescript-estree": "8.57.2", + "@typescript-eslint/utils": "8.57.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/ufo": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", + "license": "MIT" + }, + "node_modules/undici": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.24.6.tgz", + "integrity": "sha512-Xi4agocCbRzt0yYMZGMA6ApD7gvtUFaxm4ZmeacWI4cZxaF6C+8I8QfofC20NAePiB/IcvZmzkJ7XPa471AEtA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-find-after": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.3.tgz", + "integrity": "sha512-B9ifbFudT1TFhfltfaIPgjo9Z3mDynBTJSUYxTjOQruf/zHH+ezCQKcoqO+h7a9Pw9Nm/OtlXAiGT1axBgwqrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.8", + "rolldown": "1.0.0-rc.12", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.1.0", + "esbuild": "^0.27.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vitest": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.2.tgz", + "integrity": "sha512-xjR1dMTVHlFLh98JE3i/f/WePqJsah4A0FK9cc8Ehp9Udk0AZk6ccpIZhh1qJ/yxVWRZ+Q54ocnD8TXmkhspGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "4.1.2", + "@vitest/mocker": "4.1.2", + "@vitest/pretty-format": "4.1.2", + "@vitest/runner": "4.1.2", + "@vitest/snapshot": "4.1.2", + "@vitest/spy": "4.1.2", + "@vitest/utils": "4.1.2", + "es-module-lexer": "^2.0.0", + "expect-type": "^1.3.0", + "magic-string": "^0.30.21", + "obug": "^2.1.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^4.0.0-rc.1", + "tinybench": "^2.9.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.1.0", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.1.2", + "@vitest/browser-preview": "4.1.2", + "@vitest/browser-webdriverio": "4.1.2", + "@vitest/ui": "4.1.2", + "happy-dom": "*", + "jsdom": "*", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + }, + "vite": { + "optional": false + } + } + }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "license": "MIT", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "license": "MIT" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "license": "MIT" + }, + "node_modules/vscode-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "license": "MIT" + }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "license": "MIT" + }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/webidl-conversions": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.1.tgz", + "integrity": "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=20" + } + }, + "node_modules/whatwg-mimetype": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz", + "integrity": "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/whatwg-url": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-16.0.1.tgz", + "integrity": "sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@exodus/bytes": "^1.11.0", + "tr46": "^6.0.0", + "webidl-conversions": "^8.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "license": "ISC" + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ws": { + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", + "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-lexer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/xml-lexer/-/xml-lexer-0.2.2.tgz", + "integrity": "sha512-G0i98epIwiUEiKmMcavmVdhtymW+pCAohMRgybyIME9ygfVu8QheIi+YoQh3ngiThsT0SQzJT4R0sKDEv8Ou0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^2.0.0" + } + }, + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/xml-reader": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/xml-reader/-/xml-reader-2.4.3.tgz", + "integrity": "sha512-xWldrIxjeAMAu6+HSf9t50ot1uL5M+BtOidRCWHXIeewvSeIpscWCsp4Zxjk8kHHhdqFBrfK8U0EJeCcnyQ/gA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^2.0.0", + "xml-lexer": "^0.2.2" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "license": "ISC" + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..f49612b --- /dev/null +++ b/package.json @@ -0,0 +1,127 @@ +{ + "name": "piagentui", + "version": "0.6.10", + "description": "Professional AI Agent Desktop & Web UI — sessions, MCP tools, skills browser, voice input, terminal, file explorer, and Tauri desktop app. Works with Pi Agent, Claude Code, Codex, OpenCode, Cursor, and any SSE-compatible agent.", + "homepage": "https://github.com/lehhair/OpenCodeUI", + "repository": { + "type": "git", + "url": "https://github.com/lehhair/OpenCodeUI.git" + }, + "license": "GPL-3.0-only", + "type": "module", + "scripts": { + "dev": "vite", + "typecheck": "tsc -b", + "typecheck:extensions": "tsc -p tsconfig.extension.json --noEmit", + "type-check": "npm run typecheck", + "build": "tsc -b && vite build", + "icons:tauri": "tauri icon src-tauri/app-icon.manifest.json -o src-tauri/icons", + "lint": "eslint .", + "format": "prettier . --write", + "format:check": "prettier . --check", + "test": "vitest", + "test:run": "vitest run", + "validate": "npm run typecheck && npm run typecheck:extensions && npm run lint && npm run test:run && npm run build", + "release:prepare": "node scripts/prepare-release.mjs", + "check": "npm run format:check && npm run lint && npm run test:run && npm run build", + "preview": "vite preview", + "tauri": "tauri", + "postinstall": "node scripts/copy-material-icons.mjs" + }, + "dependencies": { + "@codemirror/commands": "^6.10.3", + "@codemirror/search": "^6.7.0", + "@codemirror/state": "^6.6.0", + "@codemirror/view": "^6.41.1", + "@primer/octicons-react": "^19.28.0", + "@streamdown/math": "^1.0.2", + "@tauri-apps/api": "^2.10.1", + "@tauri-apps/plugin-dialog": "^2.6.0", + "@tauri-apps/plugin-fs": "^2.4.5", + "@tauri-apps/plugin-http": "^2.5.7", + "@tauri-apps/plugin-notification": "^2.3.3", + "@tauri-apps/plugin-opener": "^2.5.3", + "@xterm/addon-fit": "^0.11.0", + "@xterm/addon-serialize": "^0.14.0", + "@xterm/addon-web-links": "^0.12.0", + "@xterm/xterm": "^6.0.0", + "clsx": "^2.1.1", + "diff": "^8.0.4", + "i18next": "^26.0.1", + "i18next-browser-languagedetector": "^8.2.1", + "lucide-react": "^1.7.0", + "motion": "^12.38.0", + "qrcode": "^1.5.4", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "react-i18next": "^17.0.1", + "shiki": "^4.0.2", + "streamdown": "^2.5.0", + "ws": "^8.21.0" + }, + "devDependencies": { + "@eslint/js": "^9.39.4", + "@tailwindcss/vite": "^4.2.2", + "@tauri-apps/cli": "^2.10.0", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/react": "^16.3.0", + "@types/diff": "^7.0.2", + "@types/node": "^25.5.0", + "@types/qrcode": "^1.5.6", + "@types/react": "^19.2.5", + "@types/react-dom": "^19.2.3", + "@types/ws": "^8.18.1", + "@vitejs/plugin-react": "^6.0.1", + "eslint": "^9.39.4", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.5.2", + "globals": "^17.4.0", + "jsdom": "^29.0.1", + "material-icon-theme": "^5.32.0", + "prettier": "^3.6.2", + "tailwindcss": "^4.2.2", + "typescript": "~5.9.3", + "typescript-eslint": "^8.57.2", + "vite": "^8.0.3", + "vitest": "^4.1.2" + }, + "pi": { + "extensions": [ + "./extensions/piagentui-server.ts" + ] + }, + "keywords": [ + "pi-package", + "pi-agent", + "pi-extension", + "agent-ui", + "chat-ui", + "mcp", + "voice-input", + "ai-agent-interface", + "coding-copilot", + "desktop-agent", + "tauri-app", + "claude-code-ui", + "codex-ui", + "opencode-ui", + "cursor-ui", + "copilot-ui", + "mcp-client", + "agent-workspace", + "session-manager", + "ai-chat-desktop" + ], + "files": [ + "dist", + "extensions", + "README.md", + "README.pt-BR.md", + "README.es.md", + "README.ja.md", + "README_EN.md", + "docs/superpowers/specs", + "package.json" + ] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..3825063 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,6239 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@codemirror/commands': + specifier: ^6.10.3 + version: 6.10.3 + '@codemirror/search': + specifier: ^6.7.0 + version: 6.7.0 + '@codemirror/state': + specifier: ^6.6.0 + version: 6.6.0 + '@codemirror/view': + specifier: ^6.41.1 + version: 6.43.0 + '@streamdown/math': + specifier: ^1.0.2 + version: 1.0.2(react@19.2.6) + '@tauri-apps/api': + specifier: ^2.10.1 + version: 2.11.0 + '@tauri-apps/plugin-dialog': + specifier: ^2.6.0 + version: 2.7.1 + '@tauri-apps/plugin-fs': + specifier: ^2.4.5 + version: 2.5.1 + '@tauri-apps/plugin-http': + specifier: ^2.5.7 + version: 2.5.9 + '@tauri-apps/plugin-notification': + specifier: ^2.3.3 + version: 2.3.3 + '@tauri-apps/plugin-opener': + specifier: ^2.5.3 + version: 2.5.4 + '@xterm/addon-fit': + specifier: ^0.11.0 + version: 0.11.0 + '@xterm/addon-serialize': + specifier: ^0.14.0 + version: 0.14.0 + '@xterm/addon-web-links': + specifier: ^0.12.0 + version: 0.12.0 + '@xterm/xterm': + specifier: ^6.0.0 + version: 6.0.0 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + diff: + specifier: ^8.0.4 + version: 8.0.4 + i18next: + specifier: ^26.0.1 + version: 26.3.0(typescript@5.9.3) + i18next-browser-languagedetector: + specifier: ^8.2.1 + version: 8.2.1 + lucide-react: + specifier: ^1.7.0 + version: 1.17.0(react@19.2.6) + motion: + specifier: ^12.38.0 + version: 12.40.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + react: + specifier: ^19.2.0 + version: 19.2.6 + react-dom: + specifier: ^19.2.0 + version: 19.2.6(react@19.2.6) + react-i18next: + specifier: ^17.0.1 + version: 17.0.8(i18next@26.3.0(typescript@5.9.3))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(typescript@5.9.3) + shiki: + specifier: ^4.0.2 + version: 4.1.0 + streamdown: + specifier: ^2.5.0 + version: 2.5.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + ws: + specifier: ^8.21.0 + version: 8.21.0 + devDependencies: + '@eslint/js': + specifier: ^9.39.4 + version: 9.39.4 + '@tailwindcss/vite': + specifier: ^4.2.2 + version: 4.3.0(vite@8.0.14(@types/node@25.9.1)(jiti@2.7.0)) + '@tauri-apps/cli': + specifier: ^2.10.0 + version: 2.11.2 + '@testing-library/jest-dom': + specifier: ^6.9.1 + version: 6.9.1 + '@testing-library/react': + specifier: ^16.3.0 + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@types/diff': + specifier: ^7.0.2 + version: 7.0.2 + '@types/node': + specifier: ^25.5.0 + version: 25.9.1 + '@types/react': + specifier: ^19.2.5 + version: 19.2.15 + '@types/react-dom': + specifier: ^19.2.3 + version: 19.2.3(@types/react@19.2.15) + '@types/ws': + specifier: ^8.18.1 + version: 8.18.1 + '@vitejs/plugin-react': + specifier: ^6.0.1 + version: 6.0.2(vite@8.0.14(@types/node@25.9.1)(jiti@2.7.0)) + eslint: + specifier: ^9.39.4 + version: 9.39.4(jiti@2.7.0) + eslint-config-prettier: + specifier: ^10.1.8 + version: 10.1.8(eslint@9.39.4(jiti@2.7.0)) + eslint-plugin-react-hooks: + specifier: ^7.0.1 + version: 7.1.1(eslint@9.39.4(jiti@2.7.0)) + eslint-plugin-react-refresh: + specifier: ^0.5.2 + version: 0.5.2(eslint@9.39.4(jiti@2.7.0)) + globals: + specifier: ^17.4.0 + version: 17.6.0 + jsdom: + specifier: ^29.0.1 + version: 29.1.1 + material-icon-theme: + specifier: ^5.32.0 + version: 5.35.0 + prettier: + specifier: ^3.6.2 + version: 3.8.3 + tailwindcss: + specifier: ^4.2.2 + version: 4.3.0 + typescript: + specifier: ~5.9.3 + version: 5.9.3 + typescript-eslint: + specifier: ^8.57.2 + version: 8.60.0(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + vite: + specifier: ^8.0.3 + version: 8.0.14(@types/node@25.9.1)(jiti@2.7.0) + vitest: + specifier: ^4.1.2 + version: 4.1.7(@types/node@25.9.1)(jsdom@29.1.1)(vite@8.0.14(@types/node@25.9.1)(jiti@2.7.0)) + +packages: + + '@adobe/css-tools@4.5.0': + resolution: {integrity: sha512-6OzddxPio9UiWTCemp4N8cYLV2ZN1ncRnV1cVGtve7dhPOtRkleRyx32GQCYSwDYgaHU3USMm84tNsvKzRCa1Q==} + + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + + '@asamuzakjp/css-color@5.1.11': + resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/dom-selector@7.1.1': + resolution: {integrity: sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/generational-cache@1.0.1': + resolution: {integrity: sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/nwsapi@2.3.9': + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} + + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.7': + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.7': + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.7': + resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.29.7': + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.29.7': + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.29.7': + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.29.7': + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.29.7': + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.7': + resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.7': + resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/runtime@7.29.7': + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.29.7': + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.7': + resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.7': + resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} + engines: {node: '>=6.9.0'} + + '@braintree/sanitize-url@7.1.2': + resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} + + '@bramus/specificity@2.4.2': + resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} + hasBin: true + + '@chevrotain/types@11.1.2': + resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} + + '@codemirror/commands@6.10.3': + resolution: {integrity: sha512-JFRiqhKu+bvSkDLI+rUhJwSxQxYb759W5GBezE8Uc8mHLqC9aV/9aTC7yJSqCtB3F00pylrLCwnyS91Ap5ej4Q==} + + '@codemirror/language@6.12.3': + resolution: {integrity: sha512-QwCZW6Tt1siP37Jet9Tb02Zs81TQt6qQrZR2H+eGMcFsL1zMrk2/b9CLC7/9ieP1fjIUMgviLWMmgiHoJrj+ZA==} + + '@codemirror/search@6.7.0': + resolution: {integrity: sha512-ZvGm99wc/s2cITtMT15LFdn8aH/aS+V+DqyGq/N5ZlV5vWtH+nILvC2nw0zX7ByNoHHDZ2IxxdW38O0tc5nVHg==} + + '@codemirror/state@6.6.0': + resolution: {integrity: sha512-4nbvra5R5EtiCzr9BTHiTLc+MLXK2QGiAVYMyi8PkQd3SR+6ixar/Q/01Fa21TBIDOZXgeWV4WppsQolSreAPQ==} + + '@codemirror/view@6.43.0': + resolution: {integrity: sha512-V7ZCLQO3Jus9hzh2jVCCPW3mO4IBMr43O37PqSUYautJSnnJF41YlgLw21x0fLJTYvJ+Vkm6Gp+qKGH9pltgXA==} + + '@csstools/color-helpers@6.0.2': + resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} + engines: {node: '>=20.19.0'} + + '@csstools/css-calc@3.2.1': + resolution: {integrity: sha512-DtdHlgXh5ZkA43cwBcAm+huzgJiwx3ZTWVjBs94kwz2xKqSimDA3lBgCjphYgwgVUMWatSM0pDd8TILB1yrVVg==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-color-parser@4.1.1': + resolution: {integrity: sha512-eZ5XOtyhK+mggRafYUWzA0tvaYOFgdY8AkgQiCJF9qNAePnUo/zmsqqYubBBb3sQ8uNUaSKTY9s9klfRaAXL0g==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.4': + resolution: {integrity: sha512-wgsqt92b7C7tQhIdPNxj0n9zuUbQlvAuI1exyzeNrOKOi62SD7ren8zqszmpVREjAOqg8cD2FqYhQfAuKjk4sw==} + peerDependencies: + css-tree: ^3.2.1 + peerDependenciesMeta: + css-tree: + optional: true + + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} + + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.21.2': + resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.5': + resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.39.4': + resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@exodus/bytes@1.15.1': + resolution: {integrity: sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + '@noble/hashes': ^1.8.0 || ^2.0.0 + peerDependenciesMeta: + '@noble/hashes': + optional: true + + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} + engines: {node: '>=18.18.0'} + + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@3.1.3': + resolution: {integrity: sha512-LPKOXPn/zV+zis1oOfGWogaXVpqUybF3ZS6SCZIsz8vg0ivVp9+fVqyYB7xq0aiST/VhUQYGO1qo6uoYSiEJqw==} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@lezer/common@1.5.2': + resolution: {integrity: sha512-sxQE460fPZyU3sdc8lafxiPwJHBzZRy/udNFynGQky1SePYBdhkBl1kOagA9uT3pxR8K09bOrmTUqA9wb/PjSQ==} + + '@lezer/highlight@1.2.3': + resolution: {integrity: sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==} + + '@lezer/lr@1.4.10': + resolution: {integrity: sha512-rnCpTIBafOx4mRp43xOxDJbFipJm/c0cia/V5TiGlhmMa+wsSdoGmUN3w5Bqrks/09Q/D4tNAmWaT8p6NRi77A==} + + '@marijn/find-cluster-break@1.0.2': + resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==} + + '@mermaid-js/parser@1.1.1': + resolution: {integrity: sha512-VuHdsYMK1bT6X2JbcAaWAhugTRvRBRyuZgd+c22swUeI9g/ntaxF7CY7dYarhZovofCbUNO0G7JesfmNtjYOCw==} + + '@napi-rs/wasm-runtime@1.1.4': + resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + + '@oxc-project/types@0.132.0': + resolution: {integrity: sha512-FESMOxil5Se014ui/Eq8fT5uHJo6nIRwH0PfJrZJXs6Gek3ZVFOrpUv3YIZT20m+extU98Hg1Ym72U58rlsxUQ==} + + '@rolldown/binding-android-arm64@1.0.2': + resolution: {integrity: sha512-ZS4D1JPGn/MYQN/SYDWftIE/nVsM8j/AFOYEzAoOE2O3NktQOZru+/vYXGbR/qtdLdIfGCP0lcoJiYVzsEz+iQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.2': + resolution: {integrity: sha512-vdFA9+C/rekyGce7WqHs/xoT0ioZEWaOFyZLIV1mEeNFaFDUQrPIo8Vs2GvJ6eetb3rzDUtUBgzto3ExpXJB3w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.2': + resolution: {integrity: sha512-BewSOwTHazv77DTYiAZXSqqKZ4KP/KonFisDMVU7PImxoWfB2aepnPhd2E4SWz3zDzYgDNbs6jBmTdgNnF02GA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.2': + resolution: {integrity: sha512-m41o7M0YWtUdqk61Tb+jnKb2rN++iRdIASlExkUoKfIAH30DOHCB8fVLzSUpbWHHU8esmEioY62PxzexE8MBuA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.2': + resolution: {integrity: sha512-jcojB9H7W/jS29pMKWAK1N+fU99vXodHDTatS3b3y/XSOCiHo0kkA74pL3jJmkoQtYpOCxDvaKs1fo2Ij/1X5w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.2': + resolution: {integrity: sha512-1jn6qDU5iiOgFgygDzKUuKP0maTi0/f1+sBLgvij/76C77Nm3ts6ufz9Bjg5q5dduxiUIxtq86JIoBvo1xQ4Ig==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-arm64-musl@1.0.2': + resolution: {integrity: sha512-QVLO/czFMdoMFSqlX3bcswcJNm/23r+qoa/jgtmFc/qEp6/jXmIkDjF/XIo8dPfGaiwy1xfQn8o77L79GeXFgw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.0.2': + resolution: {integrity: sha512-hgO5Abm0w5UL6FEa2iFnZqo2KlK7TQ5QhV5x09hujBf7t5KzHQ1VmfPuTpqRy/rNlSxua3eWH374xxiVrP+lcA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.0.2': + resolution: {integrity: sha512-fy8rXxuYEu602abC8MUNaPjYLIFzReOaEIEMKMUa0rFEUxNpVXhs15KSSQ4qlqSaM7B6rcj9rDZgADh/IGDzLQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.0.2': + resolution: {integrity: sha512-0+bOkiQ779+r1WpoHOWHqncvyySci0vKph+myNDYb+im6meJAzHQXay6oEgnkHuUGouM1LKTZwqKpBow6Kj7CQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-musl@1.0.2': + resolution: {integrity: sha512-mjSkrzZK5Qsl0a9d1JgILOiuZOSDTVdKENcSXBoqbzSrspLR/4/IRVDo5wd2GgZjNss/viBFJdeq+j7qH2nypw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rolldown/binding-openharmony-arm64@1.0.2': + resolution: {integrity: sha512-1v5vHasdfQAZoEHakBV72LIFAC9JjnymsiKxp+GEr/ma3+NJCPSaYK+qavInOovJkgwFrs7GccX2d6IgDA3Z5w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.2': + resolution: {integrity: sha512-mb1VobWn6NheziTk5/WEaR6AKVbrwT5sOi6C7zk3gy/pD1qtJfU1j4PgTo2NJnOtbL9Dl3Aeei8w9jJ7qC2jZQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.2': + resolution: {integrity: sha512-SqKonF56vA/L2yHwHYcEp2P34URpOZ7d1fS635cTkpDnUtEGdUbhI6NzsPdqeSWvAAeGDrxjWjNmibDIdFf9/A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.2': + resolution: {integrity: sha512-v7qRI7gXLRINcOGXt+7YmAZ6iFuyZVMIoXAxhd8oP+DR9dLfL9GfNIx7PLMxmhZdvq8waUJBQiWN9EKNy+TRBQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + + '@shikijs/core@4.1.0': + resolution: {integrity: sha512-jLJtSJeuFffqX6/inRE1zqU5aFv2hrszvYgq3OjbAgFRZiWv7abKMDdQzYxuSDfmUPQozZvI/kuy6VMTvnvqTQ==} + engines: {node: '>=20'} + + '@shikijs/engine-javascript@4.1.0': + resolution: {integrity: sha512-YquhawCUgaBfhsS72e2Y/dI59gCBNPHu3fEO/tvLaXrTssxZrY5ddjtNLTwndrMgPo8b3IscE+xoICDzpTmlFQ==} + engines: {node: '>=20'} + + '@shikijs/engine-oniguruma@4.1.0': + resolution: {integrity: sha512-axLpjVs45YBvvINa+dJF+NPW+KtFkNXsFr4SDw2BMj9GdeMnGxVB9PQb2xXlJYovslt/nz6giedAyOANkfc7hg==} + engines: {node: '>=20'} + + '@shikijs/langs@4.1.0': + resolution: {integrity: sha512-nwOMruEkbgdZfQ/b8CgpNBVOpvG1k0N5tbmgiFeqsan401+x3ILqlzZJowSla4Agmq4hG2Uf2wh5jLTEhR8VSg==} + engines: {node: '>=20'} + + '@shikijs/primitive@4.1.0': + resolution: {integrity: sha512-zx2/2Uwj2q9X3KSyYREEhXO23xBw5WUhP4orK2lE4r+t9JGITmEe0JH+wPmJhqHpOT2bRRs6lAL945+LDvOAGw==} + engines: {node: '>=20'} + + '@shikijs/themes@4.1.0': + resolution: {integrity: sha512-emCcTnUM7yO2wltYbaxm+yLvcCI4+h8XBKc4KmJ7EZUXoSGjcCHifkI//R4OFit9ewpg7H2/9tjOuXrT2v/Knw==} + engines: {node: '>=20'} + + '@shikijs/types@4.1.0': + resolution: {integrity: sha512-3EQWX54fMpniOrDblzAhiwiJwpiTMW6+B9DWyUd9ska483tbayFYuw47UxwuPknI31bKnySfVQ/QW+jFL4rFdA==} + engines: {node: '>=20'} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@streamdown/math@1.0.2': + resolution: {integrity: sha512-r8Ur9/lBuFnzZAFdEWrLUF2s/gRwRRRwruqltdZibyjbCBnuW7SJbFm26nXqvpJPW/gzpBUMrBVBzd88z05D5g==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + + '@tailwindcss/node@4.3.0': + resolution: {integrity: sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==} + + '@tailwindcss/oxide-android-arm64@4.3.0': + resolution: {integrity: sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.3.0': + resolution: {integrity: sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.3.0': + resolution: {integrity: sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.3.0': + resolution: {integrity: sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ==} + engines: {node: '>= 20'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.0': + resolution: {integrity: sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA==} + engines: {node: '>= 20'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.3.0': + resolution: {integrity: sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-arm64-musl@4.3.0': + resolution: {integrity: sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-linux-x64-gnu@4.3.0': + resolution: {integrity: sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-x64-musl@4.3.0': + resolution: {integrity: sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-wasm32-wasi@4.3.0': + resolution: {integrity: sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.3.0': + resolution: {integrity: sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.3.0': + resolution: {integrity: sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA==} + engines: {node: '>= 20'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.3.0': + resolution: {integrity: sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg==} + engines: {node: '>= 20'} + + '@tailwindcss/vite@4.3.0': + resolution: {integrity: sha512-t6J3OrB5Fc0ExuhohouH0fWUGMYL6PTLhW+E7zIk/pdbnJARZDCwjBznFnkh5ynRnIRSI4YjtTH0t6USjJISrw==} + peerDependencies: + vite: ^5.2.0 || ^6 || ^7 || ^8 + + '@tauri-apps/api@2.11.0': + resolution: {integrity: sha512-7CinYODhky9lmO23xHnUFv0Xt43fbtWMyxZcLcRBlFkcgXKuEirBvHpmtJ89YMhyeGcq20Wuc47Fa4XjyniywA==} + + '@tauri-apps/cli-darwin-arm64@2.11.2': + resolution: {integrity: sha512-+4UZzLt+eOAEQCwgd+TqKgyUJMrvx+BgdXLLaqJYmPqzP+nE6YZr/hY6CWLYGQb8jFn99jEkmC6uA3tNvamA1w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tauri-apps/cli-darwin-x64@2.11.2': + resolution: {integrity: sha512-VjYYtZUPqDMLutSfJEyxFE3Bz+DPi7c8wC3imckgvciLDZLq4qwKJxBicg0BXGhXjJsl8vKWgWRFNMPELQ+Xyg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tauri-apps/cli-linux-arm-gnueabihf@2.11.2': + resolution: {integrity: sha512-yMemD6f4i95AQriS8EazyOFzbE34yjnP16i3IOzpHGQvBoy2DjypFMFBq0NtPuITURv/cOGguRtHR5d79/9CSA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tauri-apps/cli-linux-arm64-gnu@2.11.2': + resolution: {integrity: sha512-cgI91D2wL8GSgoWwZXDqt+DwnuZCP2/bz03QAE4TrhgAKIsrB4hX26W/H1EONPUUNkqrsgeCD0wU6pcNjV/5kw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@tauri-apps/cli-linux-arm64-musl@2.11.2': + resolution: {integrity: sha512-X1rm0BERqAAggtYTESSgXrS3sz4Sb/OiPiz54UqISlXW+GkR3vNIGnsy/lejNmoXGVqri3Q53BCfQiclOIyRPw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@tauri-apps/cli-linux-riscv64-gnu@2.11.2': + resolution: {integrity: sha512-usbMLJbT3KtkOrBMDVeGYNM35aTHXx38SJSzTMSqqjeUIOQ+iVPjb2yAGNAE+KqmBbAx4FOFIyMeKXx2M/JKGQ==} + engines: {node: '>= 10'} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@tauri-apps/cli-linux-x64-gnu@2.11.2': + resolution: {integrity: sha512-Ru4gwJKPG0ctVGchRGpRup4Y4lW2SSfFnrbQcyHhCliKy4g8Qz97TrUgCur4CbWyAgKxvGh3SjrkA0LDYzDGiw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@tauri-apps/cli-linux-x64-musl@2.11.2': + resolution: {integrity: sha512-eUm7T6clN1MMmNSRQ9gaWsQdyehQx2Gmn5hht/QUlqZQI/qcP2OJK5dnaxqwFzCr2HdsEo9ydxaqcS1oJzMvUw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@tauri-apps/cli-win32-arm64-msvc@2.11.2': + resolution: {integrity: sha512-HeeZW80jU+gVTOEX4X/hC6NVSAdDVXajwP5fxIZ/3z9WvUC7qrudX2GMTilYq6Dg0e0sk0XgsAJD1hZ5wPBXUA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tauri-apps/cli-win32-ia32-msvc@2.11.2': + resolution: {integrity: sha512-YhjQNZcXfbkCLyazSv1nPnJ9iRFE1wm6kc51FDbU10/Dk09io+6PAGMLjkxnX2GdM0qMnDmTjstY8mTDVvtKeA==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@tauri-apps/cli-win32-x64-msvc@2.11.2': + resolution: {integrity: sha512-d2JchlFIpZevZVReyqhQOekJmb1UH3rhZ5VX6sH3ty9ETE0TKQavpihvoScUXfKKpW6HZC0MrFGRU0ZtD+w3gA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tauri-apps/cli@2.11.2': + resolution: {integrity: sha512-bk3HemqvGRoy+5D/dVMUQHKMYLglD0jVnMm/0iGMH6ufZ+p8r14m6BpIixwij3PBvZdvORUp1YifTD8QxVZ1Nw==} + engines: {node: '>= 10'} + hasBin: true + + '@tauri-apps/plugin-dialog@2.7.1': + resolution: {integrity: sha512-OK1UBXYt+ojcmxMktzzuyonYIFta8CmAASpX+CA+DTGK24KlHjhYI6x2iOJ/TjZF4N7/ACK1oFmEOjIY9IhzOQ==} + + '@tauri-apps/plugin-fs@2.5.1': + resolution: {integrity: sha512-9Lz+Jopp6QyeEWhlpkMx4R/+P9HgR+AVAI4vOZhlT8Xaymtz8iVI/Ov984/XTqgJz/5gz5NretqPB/XEMS3NhQ==} + + '@tauri-apps/plugin-http@2.5.9': + resolution: {integrity: sha512-lCiY0+vs4HvIUSvZrBs8TC3TiCB0MOPRmiUjTq4prW7SlcJE2jdLeT6KBsJrT9Tlplufl7W1pY6SFAO3gCWxDA==} + + '@tauri-apps/plugin-notification@2.3.3': + resolution: {integrity: sha512-Zw+ZH18RJb41G4NrfHgIuofJiymusqN+q8fGUIIV7vyCH+5sSn5coqRv/MWB9qETsUs97vmU045q7OyseCV3Qg==} + + '@tauri-apps/plugin-opener@2.5.4': + resolution: {integrity: sha512-1HnPkb+AmgO29HBazm4uPLKB+r7zzcTBW1d0fyYp1uP+jwtpoiNDGKMMzz58SFp49nOIrxdE3aUJtT57lfO9CQ==} + + '@testing-library/dom@10.4.1': + resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} + engines: {node: '>=18'} + + '@testing-library/jest-dom@6.9.1': + resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + + '@testing-library/react@16.3.2': + resolution: {integrity: sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==} + engines: {node: '>=18'} + peerDependencies: + '@testing-library/dom': ^10.0.0 + '@types/react': ^18.0.0 || ^19.0.0 + '@types/react-dom': ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@tybys/wasm-util@0.10.2': + resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} + + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/d3-array@3.2.2': + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} + + '@types/d3-axis@3.0.6': + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} + + '@types/d3-brush@3.0.6': + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} + + '@types/d3-chord@3.0.6': + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-contour@3.0.6': + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} + + '@types/d3-delaunay@6.0.4': + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} + + '@types/d3-dispatch@3.0.7': + resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==} + + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + + '@types/d3-dsv@3.0.7': + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-fetch@3.0.7': + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} + + '@types/d3-force@3.0.10': + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} + + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + + '@types/d3-geo@3.1.0': + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-polygon@3.0.2': + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} + + '@types/d3-quadtree@3.0.6': + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} + + '@types/d3-random@3.0.3': + resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} + + '@types/d3-scale-chromatic@3.1.0': + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-selection@3.0.11': + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} + + '@types/d3-shape@3.1.8': + resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==} + + '@types/d3-time-format@4.0.3': + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + + '@types/d3-transition@3.0.9': + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} + + '@types/d3-zoom@3.0.8': + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + + '@types/d3@7.4.3': + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} + + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/diff@7.0.2': + resolution: {integrity: sha512-JSWRMozjFKsGlEjiiKajUjIJVKuKdE3oVy2DNtK+fUo8q82nhFZ2CPQwicAIkXrofahDXrWJ7mjelvZphMS98Q==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/katex@0.16.8': + resolution: {integrity: sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node@25.9.1': + resolution: {integrity: sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==} + + '@types/react-dom@19.2.3': + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} + peerDependencies: + '@types/react': ^19.2.0 + + '@types/react@19.2.15': + resolution: {integrity: sha512-eRwcGNHve+E8qtEQSSRl6urh+rFop4v8gm6O8rGv25CodbvFdLjA1vVQ1KkiFE0w0UPOnb8tDiFKL5lp0rtY5Q==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + + '@typescript-eslint/eslint-plugin@8.60.0': + resolution: {integrity: sha512-QYb/sa74/s7OKMbACMjrYnGspj9Hs5YI5aaffSL65UfeBUzVzBJfVo3oWSpbzPurvm7yaCCo2Lk7lVj610HqKw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.60.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/parser@8.60.0': + resolution: {integrity: sha512-fcqpj/MyK4sxDPcbe7STNPbpQL4RLZOPWuaTmwZYuc+hJKzRf58yRxfhqGpc6PIq9ZyfSBpfHgmUHmHs0KwHwg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/project-service@8.60.0': + resolution: {integrity: sha512-aZu74NNKJeUWqCjDddzdiKaS82dgYgV/vmf+Ui3ZdZejmgfXR/q+pRumgobnQ2cCJTgGTWp4ypiwsuofFubavg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/scope-manager@8.60.0': + resolution: {integrity: sha512-pFzqhllJMs+jghLQWzV00ds39xLzuyqPSev5pd8f4Ir0rtKR3ZLUB4/4dhjOFighWb9larvtfJvqL+4yKDI3Xw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.60.0': + resolution: {integrity: sha512-BZPR3RGYlAXnly6ymAxfkVn5rCbZzQNou0rxv3GfWZ8cTQp+hhVd73khbGLAd8k1TlAPLISH337M+tAgAnaJDQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/type-utils@8.60.0': + resolution: {integrity: sha512-SX46wEUtitCpq7AN38HkUU/+zvUpdKf7ephtWAFgckH8O7PQIyL5gvrhQgBLuEYgLfuKWOVvWVskMbuFHAz5xg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/types@8.60.0': + resolution: {integrity: sha512-AsE7x2XaAK+CVbeih0Fvbn+r1qHxtpLDJ3XUuFcIinT318T90yHMJC+Zgv+jUuDjQQd06HKwxnDu6sz1IcTilA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.60.0': + resolution: {integrity: sha512-3AcZNBGMClm6CXDyo8kYvVGT/sx29sS0oBsIb9oZI2gunA4Vm2M3YHzRLPvsUBBsl+yB5FPtltq7gGH0iTlp9g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/utils@8.60.0': + resolution: {integrity: sha512-HtXuPfrHTyBDkameWpl+vJb1Uevu2tznAyahM1Oc4AENidCLTPiZDWIo4GfcxNdC/RcfGcadzzkqbRG87dUrQA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/visitor-keys@8.60.0': + resolution: {integrity: sha512-9WI52t8ZGLVGrPMBet25yAftqY/n95+zmoUUtJBBQTKDSKUu7OsPTroT2op7U9JatkoRccL0YkWDNMFfC4Sjxg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@ungap/structured-clone@1.3.1': + resolution: {integrity: sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==} + + '@upsetjs/venn.js@2.0.0': + resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} + + '@vitejs/plugin-react@6.0.2': + resolution: {integrity: sha512-DlSMqo4WhThw4vB8Mpn0Woe9J+Jfq1geJ61AKW0QEgLzGMNwtIMdxbDUzLxcun8W7NbJO0e2Jg/Nxm3cCSVzzg==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 + babel-plugin-react-compiler: ^1.0.0 + vite: ^8.0.0 + peerDependenciesMeta: + '@rolldown/plugin-babel': + optional: true + babel-plugin-react-compiler: + optional: true + + '@vitest/expect@4.1.7': + resolution: {integrity: sha512-1R+tw0ortHEbZDGMymm+pN7/AFQ/RkFFdtd7EN+VBpynKmLbP8A3rpEXdshBJ7+8hQ9zBJh/i1s0yKNtxAnU7w==} + + '@vitest/mocker@4.1.7': + resolution: {integrity: sha512-vY7nuamKgfvpA1Koa3oYIw/k7D6kZnpGyNMZW8loow2bsBYla1TFdqTaXncWdRn4pgwNs+90RhnXhJScDwQeJA==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@4.1.7': + resolution: {integrity: sha512-umgCarTOYQWIaDMvGDRZij+6b9oVeLIyJzfN+AS88e0ZOU3QTgNNSTtjQOpcvWr3np1N0j4WgZj+sb3oYBDscw==} + + '@vitest/runner@4.1.7': + resolution: {integrity: sha512-BapjmAQ2aI78WdMEfeUWivnfVzB+VPGwWRQcJE0OUq7qEeEcBsCSf+0T5iREBNE5nBb4wA5Ya0W6IA+sghdEFw==} + + '@vitest/snapshot@4.1.7': + resolution: {integrity: sha512-ZacLzja+TmJeZ1h14xW2FB/WpeimUD3haBXQPyJqxvo8jQTmfeA8zv58mtjN2C7EHXZDYVcVYdYmAxjkWVvKCw==} + + '@vitest/spy@4.1.7': + resolution: {integrity: sha512-kbkI5LMWakyuTIvs6fUJ5qdIVb1XVKsYJAT4OJ938cHMROYMSfmoQdZy0aaAnjbbc8F61vkoTqz/Az+/HiIu5Q==} + + '@vitest/utils@4.1.7': + resolution: {integrity: sha512-T532WBu791cBxJlCl6SO+J14l81DQx6uQHm1bQbmCDY7nqlEIgkza/UFnSBNaUtSf41unldDFjdOBYEQC4b5Hw==} + + '@xterm/addon-fit@0.11.0': + resolution: {integrity: sha512-jYcgT6xtVYhnhgxh3QgYDnnNMYTcf8ElbxxFzX0IZo+vabQqSPAjC3c1wJrKB5E19VwQei89QCiZZP86DCPF7g==} + + '@xterm/addon-serialize@0.14.0': + resolution: {integrity: sha512-uteyTU1EkrQa2Ux6P/uFl2fzmXI46jy5uoQMKEOM0fKTyiW7cSn0WrFenHm5vO5uEXX/GpwW/FgILvv3r0WbkA==} + + '@xterm/addon-web-links@0.12.0': + resolution: {integrity: sha512-4Smom3RPyVp7ZMYOYDoC/9eGJJJqYhnPLGGqJ6wOBfB8VxPViJNSKdgRYb8NpaM6YSelEKbA2SStD7lGyqaobw==} + + '@xterm/xterm@6.0.0': + resolution: {integrity: sha512-TQwDdQGtwwDt+2cgKDLn0IRaSxYu1tSUjgKarSDkUM0ZNiSRXFpjxEsvc/Zgc5kq5omJ+V0a8/kIM2WD3sMOYg==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} + + ansi-escapes@1.4.0: + resolution: {integrity: sha512-wiXutNjDUlNEDWHcYH3jtZUhd3c4/VojassD8zHdHCY13xbZy2XbW+NKQwA0tWGBVzDA9qEzYwfoSsWmviidhw==} + engines: {node: '>=0.10.0'} + + ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + + assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + + aws4@1.13.2: + resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + baseline-browser-mapping@2.10.32: + resolution: {integrity: sha512-wbPvpyjJPC0zdfdKXxqEL3Ea+bOMD/87X4lftiJkkaBiuG6ALQy1SLmEd7BSmVCuwCQsBrCamgBoLyfFDD1EPg==} + engines: {node: '>=6.0.0'} + hasBin: true + + bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + + biome@0.3.3: + resolution: {integrity: sha512-4LXjrQYbn9iTXu9Y4SKT7ABzTV0WnLDHCVSd2fPUOKsy1gQ+E4xPFmlY1zcWexoi0j7fGHItlL6OWA2CZ/yYAQ==} + hasBin: true + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + brace-expansion@1.1.15: + resolution: {integrity: sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==} + + brace-expansion@5.0.6: + resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} + engines: {node: 18 || 20 || >=22} + + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001793: + resolution: {integrity: sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==} + + caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + + chalk@1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + chroma-js@3.2.0: + resolution: {integrity: sha512-os/OippSlX1RlWWr+QDPcGUZs0uoqr32urfxESG9U93lhUfbnlyckte84Q8P1UQY/qth983AS1JONKmLS4T0nw==} + + cli-cursor@1.0.2: + resolution: {integrity: sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==} + engines: {node: '>=0.10.0'} + + cli-width@1.1.1: + resolution: {integrity: sha512-eMU2akIeEIkCxGXUNmDnJq1KzOIiPnJ+rKqRe6hcxE3vIOPvpMrBYOn/Bl7zNlYJj/zQxXquAnozHUCf9Whnsg==} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + code-point-at@1.1.0: + resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} + engines: {node: '>=0.10.0'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + core-js@2.6.12: + resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + + core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + + cose-base@1.0.3: + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} + + cose-base@2.2.0: + resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} + + crelt@1.0.6: + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + cytoscape-cose-bilkent@4.1.0: + resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape-fcose@2.2.0: + resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape@3.33.4: + resolution: {integrity: sha512-HIN5Pmd9MrX9BkV7tDwnOcEJCSFvCpc8X97h3f508J6I5FsqAY65wKOCvgH2CuP42CaahWaz4tuh32SOOIH7ww==} + engines: {node: '>=0.10'} + + d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} + + d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} + + d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} + + d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} + + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + + d3-format@3.1.2: + resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==} + engines: {node: '>=12'} + + d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} + + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} + + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + + d3-sankey@0.12.3: + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} + + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + + d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} + engines: {node: '>=12'} + + dagre-d3-es@7.0.14: + resolution: {integrity: sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==} + + dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + + data-urls@7.0.0: + resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + dayjs@1.11.21: + resolution: {integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + + decode-named-character-reference@1.3.0: + resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deep-rename-keys@0.2.1: + resolution: {integrity: sha512-RHd9ABw4Fvk+gYDWqwOftG849x0bYOySl/RgX0tLI9i27ZIeSO91mLZJEp7oPHOMFqHvpgu21YptmDt0FYD/0A==} + engines: {node: '>=0.10.0'} + + delaunator@5.1.0: + resolution: {integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + diff@8.0.4: + resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} + engines: {node: '>=0.3.1'} + + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + + dompurify@3.4.7: + resolution: {integrity: sha512-2jBxDJY4RR06tQNy4w5FlFH7kfxsQZlufd0sbv+chfHCxeJwrFw2baUDsSwvBISD4K4RDbd0PTfy3uNXsR6siA==} + + earlgrey-runtime@0.1.2: + resolution: {integrity: sha512-T4qoScXi5TwALDv8nlGTvOuCT8jXcKcxtO8qVdqv46IA2GHJfQzwoBPbkOmORnyhu3A98cVVuhWLsM2CzPljJg==} + + ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + + editor@1.0.0: + resolution: {integrity: sha512-SoRmbGStwNYHgKfjOrX2L0mUvp9bUVv0uPppZSOMAntEbcFtoC3MKF5b3T6HQPXKIV+QGY3xPO3JK5it5lVkuw==} + + electron-to-chromium@1.5.364: + resolution: {integrity: sha512-G/dYE3+AYhyHwzTwg8UbnXf7zqMERYh7l2jJ3QujhFsH8agSYwtnGAR2aZ7f0AakIKJXd5En/Hre4igIUrdlYw==} + + enhanced-resolve@5.22.1: + resolution: {integrity: sha512-6QEuw3zoX1SJQc7b87aBXke/no+mG2bTBgw29gWMQonLmpEkWoCAVkl+M49e48AZlWzxiDzDZzYdp6kobcyLww==} + engines: {node: '>=10.13.0'} + + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + + entities@8.0.0: + resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} + engines: {node: '>=20.19.0'} + + es-module-lexer@2.1.0: + resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} + + es-toolkit@1.47.0: + resolution: {integrity: sha512-n1GuoD0WEQZMBk5tttoZSqwgyLx01oqa5XsBmCHwPyNe1S9jPBEmtR2pSgp2kJuWE3ciFZ6yRHmY4pM4C3OOkw==} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + eslint-config-prettier@10.1.8: + resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-plugin-react-hooks@7.1.1: + resolution: {integrity: sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==} + engines: {node: '>=18'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0 + + eslint-plugin-react-refresh@0.5.2: + resolution: {integrity: sha512-hmgTH57GfzoTFjVN0yBwTggnsVUF2tcqi7RJZHqi9lIezSs4eFyAMktA68YD4r5kNw1mxyY4dmkyoFDb3FIqrA==} + peerDependencies: + eslint: ^9 || ^10 + + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@9.39.4: + resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eventemitter3@2.0.3: + resolution: {integrity: sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + exit-hook@1.1.1: + resolution: {integrity: sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg==} + engines: {node: '>=0.10.0'} + + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + figures@1.7.0: + resolution: {integrity: sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==} + engines: {node: '>=0.10.0'} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + + forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + + form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + + framer-motion@12.40.0: + resolution: {integrity: sha512-uaBd3qC1v3KQqBEjwTUd183K6PbS+j0yR9w9VmEOLWA/tnUcSn8Xa3uck7t4dgpDoUss8xQTcj8W2L07lrnLFg==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true + + fs-extra@0.26.7: + resolution: {integrity: sha512-waKu+1KumRhYv8D8gMRCKJGAMI9pRnPuEb1mvgYD0f7wBscg+h6bW4FDTmEZhB9VKxvoTtxW+Y7bnIlB7zja6Q==} + + fs-promise@0.5.0: + resolution: {integrity: sha512-Y+4F4ujhEcayCJt6JmzcOun9MYGQwz+bVUiuBmTkJImhBHKpBvmVPZR9wtfiF7k3ffwAOAuurygQe+cPLSFQhw==} + deprecated: Use mz or fs-extra^3.0 with Promise Support + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@17.6.0: + resolution: {integrity: sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==} + engines: {node: '>=18'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + hachure-fill@0.5.2: + resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} + + har-schema@2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + + har-validator@5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + + has-ansi@2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + hast-util-from-dom@5.0.1: + resolution: {integrity: sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==} + + hast-util-from-html-isomorphic@2.0.0: + resolution: {integrity: sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==} + + hast-util-from-html@2.0.3: + resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} + + hast-util-from-parse5@8.0.3: + resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + + hast-util-raw@9.1.0: + resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} + + hast-util-sanitize@5.0.2: + resolution: {integrity: sha512-3yTWghByc50aGS7JlGhk61SPenfE/p1oaFeNwkOOyrscaOkMGrcW9+Cy/QAIOBpZxP1yqDIzFMR0+Np0i0+usg==} + + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + + hast-util-to-jsx-runtime@2.3.6: + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} + + hast-util-to-parse5@8.0.1: + resolution: {integrity: sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==} + + hast-util-to-text@4.0.2: + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hastscript@9.0.1: + resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} + + hermes-estree@0.25.1: + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} + + hermes-parser@0.25.1: + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + + html-encoding-sniffer@6.0.0: + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + html-parse-stringify@3.0.1: + resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} + + html-url-attributes@3.0.1: + resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + http-signature@1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + + i18next-browser-languagedetector@8.2.1: + resolution: {integrity: sha512-bZg8+4bdmaOiApD7N7BPT9W8MLZG+nPTOFlLiJiT8uzKXFjhxw4v2ierCXOwB5sFDMtuA5G4kgYZ0AznZxQ/cw==} + + i18next@26.3.0: + resolution: {integrity: sha512-gHSgGpUXVmuqE2El1W61DmxeyeTlFfZgdJRWMo9jScAn5pu7TuTuiccb1zh3E2J9hEBVGJ23+96x0ieBhfuIHA==} + peerDependencies: + typescript: ^5 || ^6 + peerDependenciesMeta: + typescript: + optional: true + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} + + inquirer-promise@0.0.3: + resolution: {integrity: sha512-82CQX586JAV9GAgU9yXZsMDs+NorjA0nLhkfFx9+PReyOnuoHRbHrC1Z90sS95bFJI1Tm1gzMObuE0HabzkJpg==} + + inquirer@0.11.4: + resolution: {integrity: sha512-QR+2TW90jnKk9LUUtbcA3yQXKt2rDEKMh6+BAZQIeumtzHexnwVLdPakSslGijXYLJCzFv7GMXbFCn0pA00EUw==} + + internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@1.0.0: + resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true + + jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + + jsdom@29.1.1: + resolution: {integrity: sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@2.4.0: + resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==} + + jsprim@1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + + kaiser@0.0.4: + resolution: {integrity: sha512-m8ju+rmBqvclZmyrOXgGGhOYSjKJK6RN1NhqEltemY87UqZOxEkizg9TOy1vQSyJ01Wx6SAPuuN0iO2Mgislvw==} + + katex@0.16.47: + resolution: {integrity: sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==} + hasBin: true + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + khroma@2.1.0: + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} + + kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + + klaw@1.3.1: + resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} + + layout-base@1.0.2: + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} + + layout-base@2.0.1: + resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash@3.10.1: + resolution: {integrity: sha512-9mDDwqVIma6OZX79ZlDACZl8sBm0TEnkf99zV3iMA4GzkIT/9hiqP5mY0HoT1iNLCrKc/R1HByV+yJfRWVJryQ==} + + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + lru-cache@11.5.1: + resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lucide-react@1.17.0: + resolution: {integrity: sha512-9FA9evdox/JQL5PT57fdA1x/yg8T7knJ98+zjTL3UfKza6pflQUUh3XtaQIHKvnsJw1lmsEyHVlt5jchYxOQ5w==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + marked@16.4.2: + resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==} + engines: {node: '>= 20'} + hasBin: true + + marked@17.0.6: + resolution: {integrity: sha512-gB0gkNafnonOw0obSTEGZTT86IuhILt2Wfx0mWH/1Au83kybTayroZ/V6nS25mN7u8ASy+5fMhgB3XPNrOZdmA==} + engines: {node: '>= 20'} + hasBin: true + + material-icon-theme@5.35.0: + resolution: {integrity: sha512-ptU3rjmZjPCeLRog0HcJ1HtnoVgOslc350WHk1oIvX7fVFE4NBAF7GL3QvCCEjtd1TSSDoxmS4dWsv6bTB1x9g==} + engines: {vscode: ^1.55.0} + + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + + mdast-util-from-markdown@2.0.3: + resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + + mdast-util-math@3.0.0: + resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==} + + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + + mermaid@11.15.0: + resolution: {integrity: sha512-pTMbcf3rWdtLiYGpmoTjHEpeY8seiy6sR+9nD7LOs8KfUbHE4lOUAprTRqRAcWSQ6MQpdX+YEsxShtGsINtPtw==} + + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-extension-math@3.1.0: + resolution: {integrity: sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} + + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + motion-dom@12.40.0: + resolution: {integrity: sha512-HxU3ZaBwNPVQUBQf1xxgq+7JrPNZvjLVxgbpEZL7RrWJnsxOf0/OM+yrHG9ogLQ31Do/r57Oz2gQWPK+6q62mg==} + + motion-utils@12.39.0: + resolution: {integrity: sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ==} + + motion@12.40.0: + resolution: {integrity: sha512-yjrHUrBFW6kQvjJwRsoiPSAhC5tRwRqNGJWmiJ4CrGnbKp0V88AdzkhBmDoqIsIPfarOe0Uddd37Xq43/gIocA==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mute-stream@0.0.5: + resolution: {integrity: sha512-EbrziT4s8cWPmzr47eYVW3wimS4HsvlnV5ri1xw1aR6JQo/OrJX5rkl32K/QQHdxeabJETtfeaROGhd8W7uBgg==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + node-releases@2.0.46: + resolution: {integrity: sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ==} + engines: {node: '>=18'} + + number-is-nan@1.0.1: + resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} + engines: {node: '>=0.10.0'} + + oauth-sign@0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@1.1.0: + resolution: {integrity: sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==} + engines: {node: '>=0.10.0'} + + oniguruma-parser@0.12.2: + resolution: {integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==} + + oniguruma-to-es@4.3.6: + resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + os-homedir@1.0.2: + resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} + engines: {node: '>=0.10.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + parse5@8.0.1: + resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==} + + path-data-parser@0.1.0: + resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + + points-on-curve@0.2.0: + resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} + + points-on-path@0.2.1: + resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} + + postcss@8.5.15: + resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier@3.8.3: + resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qs@6.5.5: + resolution: {integrity: sha512-mzR4sElr1bfCaPJe7m8ilJ6ZXdDaGoObcYR0ZHSsktM/Lt21MVHj5De30GQH2eiZ1qGRTO7LCAzQsUeXTNexWQ==} + engines: {node: '>=0.6'} + + react-dom@19.2.6: + resolution: {integrity: sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==} + peerDependencies: + react: ^19.2.6 + + react-i18next@17.0.8: + resolution: {integrity: sha512-0ooKbGLU8JXhe1zwpQUWIeXSgLPOfwJmgheWRIUpcoA0CpyabpGhayjdG+/eA5esC1AQ8h2jWpXjJfzQzeDOCw==} + peerDependencies: + i18next: '>= 26.2.0' + react: '>= 16.8.0' + react-dom: '*' + react-native: '*' + typescript: ^5 || ^6 + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + typescript: + optional: true + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react@19.2.6: + resolution: {integrity: sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==} + engines: {node: '>=0.10.0'} + + readline2@1.0.1: + resolution: {integrity: sha512-8/td4MmwUB6PkZUbV25uKz7dfrmjYWxsW8DVfibWdlHRk/l/DfHKn4pU+dfcoGLFgWOdyGCzINRQD7jn+Bv+/g==} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + regenerator-runtime@0.9.6: + resolution: {integrity: sha512-D0Y/JJ4VhusyMOd/o25a3jdUqN/bC85EFsaoL9Oqmy/O4efCh+xhp7yj2EEOsj974qvMkcW8AwUzJ1jB/MbxCw==} + + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} + + rehype-harden@1.1.8: + resolution: {integrity: sha512-Qn7vR1xrf6fZCrkm9TDWi/AB4ylrHy+jqsNm1EHOAmbARYA6gsnVJBq/sdBh6kmT4NEZxH5vgIjrscefJAOXcw==} + + rehype-katex@7.0.1: + resolution: {integrity: sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==} + + rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + + rehype-sanitize@6.0.0: + resolution: {integrity: sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==} + + remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} + + remark-math@6.0.0: + resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + remend@1.3.0: + resolution: {integrity: sha512-iIhggPkhW3hFImKtB10w0dz4EZbs28mV/dmbcYVonWEJ6UGHHpP+bFZnTh6GNWJONg5m+U56JrL+8IxZRdgWjw==} + + rename-keys@1.2.0: + resolution: {integrity: sha512-U7XpAktpbSgHTRSNRrjKSrjYkZKuhUukfoBlXWXUExCAqhzh1TU3BDRAfJmarcl5voKS+pbKU9MvyLWKZ4UEEg==} + engines: {node: '>= 0.8.0'} + + request-promise@3.0.0: + resolution: {integrity: sha512-wVGUX+BoKxYsavTA72i6qHcyLbjzM4LR4y/AmDCqlbuMAursZdDWO7PmgbGAUvD2SeEJ5iB99VSq/U51i/DNbw==} + engines: {node: '>=0.10.0'} + deprecated: request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142 + + request@2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + restore-cursor@1.0.1: + resolution: {integrity: sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==} + engines: {node: '>=0.10.0'} + + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + robust-predicates@3.0.3: + resolution: {integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==} + + rolldown@1.0.2: + resolution: {integrity: sha512-oZx5zVDtVB44AW3eaifgDml1gWRDZGvjcfdxonE4swNPG98PrrXjaO/KrnUjzlMnztCCRVlUueA1kCXhARGk6g==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + roughjs@4.6.6: + resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} + + run-async@0.1.0: + resolution: {integrity: sha512-qOX+w+IxFgpUpJfkv2oGN0+ExPs68F4sZHfaRRx4dDexAQkG83atugKVEylyT5ARees3HBbfmuvnjbrd8j9Wjw==} + + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + + rx-lite@3.1.2: + resolution: {integrity: sha512-1I1+G2gteLB8Tkt8YI1sJvSIfa0lWuRtC8GjvtyPBcLSF5jBCCJJqKrpER5JU5r6Bhe+i9/pK3VMuUcXu0kdwQ==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.8.1: + resolution: {integrity: sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shiki@4.1.0: + resolution: {integrity: sha512-l/ABZPUR5v70jI10EzqfMS/I96vjSGv2y0ihUV+WYFzv0EfvW4s54m0Lg8wCrrL+2IkwBzFTuxkZjPf8b2NX9Q==} + engines: {node: '>=20'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + sshpk@1.18.0: + resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@4.1.0: + resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} + + streamdown@2.5.0: + resolution: {integrity: sha512-/tTnURfIOxZK/pqJAxsfCvETG/XCJHoWnk3jq9xLcuz6CSpnjjuxSRBTTL4PKGhxiZQf0lqPxGhImdpwcZ2XwA==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + + string-width@1.0.2: + resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} + engines: {node: '>=0.10.0'} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + style-mod@4.1.3: + resolution: {integrity: sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==} + + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} + + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} + + stylis@4.4.0: + resolution: {integrity: sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA==} + + supports-color@2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + svgson@5.3.1: + resolution: {integrity: sha512-qdPgvUNWb40gWktBJnbJRelWcPzkLed/ShhnRsjbayXz8OtdPOzbil9jtiZdrYvSDumAz/VNQr6JaNfPx/gvPA==} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + tailwind-merge@3.6.0: + resolution: {integrity: sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==} + + tailwindcss@4.3.0: + resolution: {integrity: sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==} + + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@1.2.2: + resolution: {integrity: sha512-M/Q0B2cp4K7kynaT/vnED1j8TlLY+Pp7C6Wl2bl/7u/F0mUVwdyOpwomQb8JpYLitHUssAJRmLZdMCGsrx7i+g==} + engines: {node: '>=18'} + + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + engines: {node: '>=12.0.0'} + + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + engines: {node: '>=14.0.0'} + + tldts-core@7.4.1: + resolution: {integrity: sha512-sc2nGvGbixlJRHwTh/qQdPXTxJU1UDJboGPQm4d/01YUJ9r/u6aeIulQvEaxUlvKDN7hb1qCLjax+jhVAPLa/g==} + + tldts@7.4.0: + resolution: {integrity: sha512-yHBe+zVfzNZ3QfTPW/Z6KK1G2t340gFjMHqI/4KKSt/abzYydzuCnpqdaF5gCCABby+9Yfbj59oR5F2Fd5CBzg==} + hasBin: true + + tough-cookie@2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + + tough-cookie@6.0.1: + resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} + engines: {node: '>=16'} + + tr46@6.0.0: + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} + engines: {node: '>=20'} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + typescript-eslint@8.60.0: + resolution: {integrity: sha512-9f65qWLZdAW9m1JaxBDUHcqRUfL8bkxxXL7XxEfI+F09q56PkBvIfCjLF3yInsDM/BBmwkqmCQdCZe/RYlIWEw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@7.24.6: + resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} + + undici@7.26.0: + resolution: {integrity: sha512-3O9Tf67pGhgOv9jM35AbhkXAKi13f3oy3aE4CSgr+TckGeY+/iu97ZXN+J7DpHPzLbVApFd1IFhcnBjREYXYcg==} + engines: {node: '>=20.18.1'} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} + + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} + + untildify@3.0.3: + resolution: {integrity: sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==} + engines: {node: '>=4'} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + user-home@2.0.0: + resolution: {integrity: sha512-KMWqdlOcjCYdtIJpicDSFBQ8nFwS2i9sslAd6f4+CBGcU4gist2REnr2fxj2YocvJFxSF3ZOHLYLVZnUxv4BZQ==} + engines: {node: '>=0.10.0'} + + uuid@14.0.0: + resolution: {integrity: sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==} + hasBin: true + + uuid@3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). + hasBin: true + + verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + + vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} + + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vite@8.0.14: + resolution: {integrity: sha512-s4BJJ+5y1pYL6Otw51FHhVJQhPnuRinKig64g/1+EUNaJsd3gCKdD31IPFvswUgW9/60QT9oFHbZHbQK5imcxw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.18 + esbuild: ^0.27.0 || ^0.28.0 + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@4.1.7: + resolution: {integrity: sha512-flYyaFd2CgoCoU+0UKt3pxksgC+S02iTDN0n3LtqaMeXsI9SBcdNujc2k0DeFLzUn/0k538yNjOSdwgCqcrwJA==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.7 + '@vitest/browser-preview': 4.1.7 + '@vitest/browser-webdriverio': 4.1.7 + '@vitest/coverage-istanbul': 4.1.7 + '@vitest/coverage-v8': 4.1.7 + '@vitest/ui': 4.1.7 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} + + w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} + engines: {node: '>=20'} + + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} + engines: {node: '>=20'} + + whatwg-url@16.0.1: + resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@8.21.0: + resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xml-lexer@0.2.2: + resolution: {integrity: sha512-G0i98epIwiUEiKmMcavmVdhtymW+pCAohMRgybyIME9ygfVu8QheIi+YoQh3ngiThsT0SQzJT4R0sKDEv8Ou0w==} + + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + xml-reader@2.4.3: + resolution: {integrity: sha512-xWldrIxjeAMAu6+HSf9t50ot1uL5M+BtOidRCWHXIeewvSeIpscWCsp4Zxjk8kHHhdqFBrfK8U0EJeCcnyQ/gA==} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zod-validation-error@4.0.2: + resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + + zod@4.4.3: + resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@adobe/css-tools@4.5.0': {} + + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.6.0 + tinyexec: 1.2.2 + + '@asamuzakjp/css-color@5.1.11': + dependencies: + '@asamuzakjp/generational-cache': 1.0.1 + '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@asamuzakjp/dom-selector@7.1.1': + dependencies: + '@asamuzakjp/generational-cache': 1.0.1 + '@asamuzakjp/nwsapi': 2.3.9 + bidi-js: 1.0.3 + css-tree: 3.2.1 + is-potential-custom-element-name: 1.0.1 + + '@asamuzakjp/generational-cache@1.0.1': {} + + '@asamuzakjp/nwsapi@2.3.9': {} + + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.7': {} + + '@babel/core@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helpers': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.7': + dependencies: + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.29.7': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + browserslist: 4.28.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.29.7': {} + + '@babel/helper-module-imports@7.29.7': + dependencies: + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/helper-validator-option@7.29.7': {} + + '@babel/helpers@7.29.7': + dependencies: + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 + + '@babel/parser@7.29.7': + dependencies: + '@babel/types': 7.29.7 + + '@babel/runtime@7.29.7': {} + + '@babel/template@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + + '@babel/traverse@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/helper-globals': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.7': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@braintree/sanitize-url@7.1.2': {} + + '@bramus/specificity@2.4.2': + dependencies: + css-tree: 3.2.1 + + '@chevrotain/types@11.1.2': {} + + '@codemirror/commands@6.10.3': + dependencies: + '@codemirror/language': 6.12.3 + '@codemirror/state': 6.6.0 + '@codemirror/view': 6.43.0 + '@lezer/common': 1.5.2 + + '@codemirror/language@6.12.3': + dependencies: + '@codemirror/state': 6.6.0 + '@codemirror/view': 6.43.0 + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + style-mod: 4.1.3 + + '@codemirror/search@6.7.0': + dependencies: + '@codemirror/state': 6.6.0 + '@codemirror/view': 6.43.0 + crelt: 1.0.6 + + '@codemirror/state@6.6.0': + dependencies: + '@marijn/find-cluster-break': 1.0.2 + + '@codemirror/view@6.43.0': + dependencies: + '@codemirror/state': 6.6.0 + crelt: 1.0.6 + style-mod: 4.1.3 + w3c-keyname: 2.2.8 + + '@csstools/color-helpers@6.0.2': {} + + '@csstools/css-calc@3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-color-parser@4.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/color-helpers': 6.0.2 + '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.4(css-tree@3.2.1)': + optionalDependencies: + css-tree: 3.2.1 + + '@csstools/css-tokenizer@4.0.0': {} + + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.10.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4(jiti@2.7.0))': + dependencies: + eslint: 9.39.4(jiti@2.7.0) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.21.2': + dependencies: + '@eslint/object-schema': 2.1.7 + debug: 4.4.3 + minimatch: 3.1.5 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 + + '@eslint/core@0.17.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.5': + dependencies: + ajv: 6.15.0 + debug: 4.4.3 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + minimatch: 3.1.5 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.39.4': {} + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': + dependencies: + '@eslint/core': 0.17.0 + levn: 0.4.1 + + '@exodus/bytes@1.15.1': {} + + '@humanfs/core@0.19.2': + dependencies: + '@humanfs/types': 0.15.0 + + '@humanfs/node@0.16.8': + dependencies: + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.3 + + '@humanfs/types@0.15.0': {} + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@iconify/types@2.0.0': {} + + '@iconify/utils@3.1.3': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@iconify/types': 2.0.0 + import-meta-resolve: 4.2.0 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@lezer/common@1.5.2': {} + + '@lezer/highlight@1.2.3': + dependencies: + '@lezer/common': 1.5.2 + + '@lezer/lr@1.4.10': + dependencies: + '@lezer/common': 1.5.2 + + '@marijn/find-cluster-break@1.0.2': {} + + '@mermaid-js/parser@1.1.1': + dependencies: + '@chevrotain/types': 11.1.2 + + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.2 + optional: true + + '@oxc-project/types@0.132.0': {} + + '@rolldown/binding-android-arm64@1.0.2': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.2': + optional: true + + '@rolldown/binding-darwin-x64@1.0.2': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.2': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.2': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.2': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.2': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.2': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.2': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.2': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.2': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.2': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.2': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.2': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.2': + optional: true + + '@rolldown/pluginutils@1.0.1': {} + + '@shikijs/core@4.1.0': + dependencies: + '@shikijs/primitive': 4.1.0 + '@shikijs/types': 4.1.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@4.1.0': + dependencies: + '@shikijs/types': 4.1.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.6 + + '@shikijs/engine-oniguruma@4.1.0': + dependencies: + '@shikijs/types': 4.1.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@4.1.0': + dependencies: + '@shikijs/types': 4.1.0 + + '@shikijs/primitive@4.1.0': + dependencies: + '@shikijs/types': 4.1.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/themes@4.1.0': + dependencies: + '@shikijs/types': 4.1.0 + + '@shikijs/types@4.1.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + + '@standard-schema/spec@1.1.0': {} + + '@streamdown/math@1.0.2(react@19.2.6)': + dependencies: + katex: 0.16.47 + react: 19.2.6 + rehype-katex: 7.0.1 + remark-math: 6.0.0 + transitivePeerDependencies: + - supports-color + + '@tailwindcss/node@4.3.0': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.22.1 + jiti: 2.7.0 + lightningcss: 1.32.0 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.3.0 + + '@tailwindcss/oxide-android-arm64@4.3.0': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.3.0': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.3.0': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.3.0': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.0': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.3.0': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.3.0': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.3.0': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.3.0': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.3.0': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.3.0': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.3.0': + optional: true + + '@tailwindcss/oxide@4.3.0': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.3.0 + '@tailwindcss/oxide-darwin-arm64': 4.3.0 + '@tailwindcss/oxide-darwin-x64': 4.3.0 + '@tailwindcss/oxide-freebsd-x64': 4.3.0 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.3.0 + '@tailwindcss/oxide-linux-arm64-gnu': 4.3.0 + '@tailwindcss/oxide-linux-arm64-musl': 4.3.0 + '@tailwindcss/oxide-linux-x64-gnu': 4.3.0 + '@tailwindcss/oxide-linux-x64-musl': 4.3.0 + '@tailwindcss/oxide-wasm32-wasi': 4.3.0 + '@tailwindcss/oxide-win32-arm64-msvc': 4.3.0 + '@tailwindcss/oxide-win32-x64-msvc': 4.3.0 + + '@tailwindcss/vite@4.3.0(vite@8.0.14(@types/node@25.9.1)(jiti@2.7.0))': + dependencies: + '@tailwindcss/node': 4.3.0 + '@tailwindcss/oxide': 4.3.0 + tailwindcss: 4.3.0 + vite: 8.0.14(@types/node@25.9.1)(jiti@2.7.0) + + '@tauri-apps/api@2.11.0': {} + + '@tauri-apps/cli-darwin-arm64@2.11.2': + optional: true + + '@tauri-apps/cli-darwin-x64@2.11.2': + optional: true + + '@tauri-apps/cli-linux-arm-gnueabihf@2.11.2': + optional: true + + '@tauri-apps/cli-linux-arm64-gnu@2.11.2': + optional: true + + '@tauri-apps/cli-linux-arm64-musl@2.11.2': + optional: true + + '@tauri-apps/cli-linux-riscv64-gnu@2.11.2': + optional: true + + '@tauri-apps/cli-linux-x64-gnu@2.11.2': + optional: true + + '@tauri-apps/cli-linux-x64-musl@2.11.2': + optional: true + + '@tauri-apps/cli-win32-arm64-msvc@2.11.2': + optional: true + + '@tauri-apps/cli-win32-ia32-msvc@2.11.2': + optional: true + + '@tauri-apps/cli-win32-x64-msvc@2.11.2': + optional: true + + '@tauri-apps/cli@2.11.2': + optionalDependencies: + '@tauri-apps/cli-darwin-arm64': 2.11.2 + '@tauri-apps/cli-darwin-x64': 2.11.2 + '@tauri-apps/cli-linux-arm-gnueabihf': 2.11.2 + '@tauri-apps/cli-linux-arm64-gnu': 2.11.2 + '@tauri-apps/cli-linux-arm64-musl': 2.11.2 + '@tauri-apps/cli-linux-riscv64-gnu': 2.11.2 + '@tauri-apps/cli-linux-x64-gnu': 2.11.2 + '@tauri-apps/cli-linux-x64-musl': 2.11.2 + '@tauri-apps/cli-win32-arm64-msvc': 2.11.2 + '@tauri-apps/cli-win32-ia32-msvc': 2.11.2 + '@tauri-apps/cli-win32-x64-msvc': 2.11.2 + + '@tauri-apps/plugin-dialog@2.7.1': + dependencies: + '@tauri-apps/api': 2.11.0 + + '@tauri-apps/plugin-fs@2.5.1': + dependencies: + '@tauri-apps/api': 2.11.0 + + '@tauri-apps/plugin-http@2.5.9': + dependencies: + '@tauri-apps/api': 2.11.0 + + '@tauri-apps/plugin-notification@2.3.3': + dependencies: + '@tauri-apps/api': 2.11.0 + + '@tauri-apps/plugin-opener@2.5.4': + dependencies: + '@tauri-apps/api': 2.11.0 + + '@testing-library/dom@10.4.1': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/runtime': 7.29.7 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + picocolors: 1.1.1 + pretty-format: 27.5.1 + + '@testing-library/jest-dom@6.9.1': + dependencies: + '@adobe/css-tools': 4.5.0 + aria-query: 5.3.2 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + picocolors: 1.1.1 + redent: 3.0.0 + + '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + dependencies: + '@babel/runtime': 7.29.7 + '@testing-library/dom': 10.4.1 + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + optionalDependencies: + '@types/react': 19.2.15 + '@types/react-dom': 19.2.3(@types/react@19.2.15) + + '@tybys/wasm-util@0.10.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/aria-query@5.0.4': {} + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/d3-array@3.2.2': {} + + '@types/d3-axis@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-brush@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-chord@3.0.6': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-contour@3.0.6': + dependencies: + '@types/d3-array': 3.2.2 + '@types/geojson': 7946.0.16 + + '@types/d3-delaunay@6.0.4': {} + + '@types/d3-dispatch@3.0.7': {} + + '@types/d3-drag@3.0.7': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-dsv@3.0.7': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-fetch@3.0.7': + dependencies: + '@types/d3-dsv': 3.0.7 + + '@types/d3-force@3.0.10': {} + + '@types/d3-format@3.0.4': {} + + '@types/d3-geo@3.1.0': + dependencies: + '@types/geojson': 7946.0.16 + + '@types/d3-hierarchy@3.1.7': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.1': {} + + '@types/d3-polygon@3.0.2': {} + + '@types/d3-quadtree@3.0.6': {} + + '@types/d3-random@3.0.3': {} + + '@types/d3-scale-chromatic@3.1.0': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-selection@3.0.11': {} + + '@types/d3-shape@3.1.8': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time-format@4.0.3': {} + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + + '@types/d3-transition@3.0.9': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-zoom@3.0.8': + dependencies: + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.11 + + '@types/d3@7.4.3': + dependencies: + '@types/d3-array': 3.2.2 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.3 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.4 + '@types/d3-dispatch': 3.0.7 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.10 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.0 + '@types/d3-hierarchy': 3.1.7 + '@types/d3-interpolate': 3.0.4 + '@types/d3-path': 3.1.1 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.3 + '@types/d3-scale': 4.0.9 + '@types/d3-scale-chromatic': 3.1.0 + '@types/d3-selection': 3.0.11 + '@types/d3-shape': 3.1.8 + '@types/d3-time': 3.0.4 + '@types/d3-time-format': 4.0.3 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.9 + '@types/d3-zoom': 3.0.8 + + '@types/debug@4.1.13': + dependencies: + '@types/ms': 2.1.0 + + '@types/deep-eql@4.0.2': {} + + '@types/diff@7.0.2': {} + + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.9 + + '@types/estree@1.0.9': {} + + '@types/geojson@7946.0.16': {} + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/json-schema@7.0.15': {} + + '@types/katex@0.16.8': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/ms@2.1.0': {} + + '@types/node@25.9.1': + dependencies: + undici-types: 7.24.6 + + '@types/react-dom@19.2.3(@types/react@19.2.15)': + dependencies: + '@types/react': 19.2.15 + + '@types/react@19.2.15': + dependencies: + csstype: 3.2.3 + + '@types/trusted-types@2.0.7': + optional: true + + '@types/unist@2.0.11': {} + + '@types/unist@3.0.3': {} + + '@types/ws@8.18.1': + dependencies: + '@types/node': 25.9.1 + + '@typescript-eslint/eslint-plugin@8.60.0(@typescript-eslint/parser@8.60.0(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.60.0(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.60.0 + '@typescript-eslint/type-utils': 8.60.0(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/utils': 8.60.0(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.60.0 + eslint: 9.39.4(jiti@2.7.0) + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.60.0(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.60.0 + '@typescript-eslint/types': 8.60.0 + '@typescript-eslint/typescript-estree': 8.60.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.60.0 + debug: 4.4.3 + eslint: 9.39.4(jiti@2.7.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.60.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.60.0(typescript@5.9.3) + '@typescript-eslint/types': 8.60.0 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.60.0': + dependencies: + '@typescript-eslint/types': 8.60.0 + '@typescript-eslint/visitor-keys': 8.60.0 + + '@typescript-eslint/tsconfig-utils@8.60.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.60.0(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.60.0 + '@typescript-eslint/typescript-estree': 8.60.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.60.0(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.39.4(jiti@2.7.0) + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.60.0': {} + + '@typescript-eslint/typescript-estree@8.60.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.60.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.60.0(typescript@5.9.3) + '@typescript-eslint/types': 8.60.0 + '@typescript-eslint/visitor-keys': 8.60.0 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.8.1 + tinyglobby: 0.2.16 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.60.0(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.60.0 + '@typescript-eslint/types': 8.60.0 + '@typescript-eslint/typescript-estree': 8.60.0(typescript@5.9.3) + eslint: 9.39.4(jiti@2.7.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.60.0': + dependencies: + '@typescript-eslint/types': 8.60.0 + eslint-visitor-keys: 5.0.1 + + '@ungap/structured-clone@1.3.1': {} + + '@upsetjs/venn.js@2.0.0': + optionalDependencies: + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + '@vitejs/plugin-react@6.0.2(vite@8.0.14(@types/node@25.9.1)(jiti@2.7.0))': + dependencies: + '@rolldown/pluginutils': 1.0.1 + vite: 8.0.14(@types/node@25.9.1)(jiti@2.7.0) + + '@vitest/expect@4.1.7': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.7 + '@vitest/utils': 4.1.7 + chai: 6.2.2 + tinyrainbow: 3.1.0 + + '@vitest/mocker@4.1.7(vite@8.0.14(@types/node@25.9.1)(jiti@2.7.0))': + dependencies: + '@vitest/spy': 4.1.7 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 8.0.14(@types/node@25.9.1)(jiti@2.7.0) + + '@vitest/pretty-format@4.1.7': + dependencies: + tinyrainbow: 3.1.0 + + '@vitest/runner@4.1.7': + dependencies: + '@vitest/utils': 4.1.7 + pathe: 2.0.3 + + '@vitest/snapshot@4.1.7': + dependencies: + '@vitest/pretty-format': 4.1.7 + '@vitest/utils': 4.1.7 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.1.7': {} + + '@vitest/utils@4.1.7': + dependencies: + '@vitest/pretty-format': 4.1.7 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 + + '@xterm/addon-fit@0.11.0': {} + + '@xterm/addon-serialize@0.14.0': {} + + '@xterm/addon-web-links@0.12.0': {} + + '@xterm/xterm@6.0.0': {} + + acorn-jsx@5.3.2(acorn@8.16.0): + dependencies: + acorn: 8.16.0 + + acorn@8.16.0: {} + + ajv@6.15.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-escapes@1.4.0: {} + + ansi-regex@2.1.1: {} + + ansi-regex@5.0.1: {} + + ansi-styles@2.2.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + any-promise@1.3.0: {} + + argparse@2.0.1: {} + + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + + aria-query@5.3.2: {} + + asn1@0.2.6: + dependencies: + safer-buffer: 2.1.2 + + assert-plus@1.0.0: {} + + assertion-error@2.0.1: {} + + asynckit@0.4.0: {} + + aws-sign2@0.7.0: {} + + aws4@1.13.2: {} + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + balanced-match@4.0.4: {} + + baseline-browser-mapping@2.10.32: {} + + bcrypt-pbkdf@1.0.2: + dependencies: + tweetnacl: 0.14.5 + + bidi-js@1.0.3: + dependencies: + require-from-string: 2.0.2 + + biome@0.3.3: + dependencies: + bluebird: 3.7.2 + chalk: 1.1.3 + commander: 2.20.3 + editor: 1.0.0 + fs-promise: 0.5.0 + inquirer-promise: 0.0.3 + request-promise: 3.0.0 + untildify: 3.0.3 + user-home: 2.0.0 + + bluebird@3.7.2: {} + + brace-expansion@1.1.15: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@5.0.6: + dependencies: + balanced-match: 4.0.4 + + browserslist@4.28.2: + dependencies: + baseline-browser-mapping: 2.10.32 + caniuse-lite: 1.0.30001793 + electron-to-chromium: 1.5.364 + node-releases: 2.0.46 + update-browserslist-db: 1.2.3(browserslist@4.28.2) + + callsites@3.1.0: {} + + caniuse-lite@1.0.30001793: {} + + caseless@0.12.0: {} + + ccount@2.0.1: {} + + chai@6.2.2: {} + + chalk@1.1.3: + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + character-reference-invalid@2.0.1: {} + + chroma-js@3.2.0: {} + + cli-cursor@1.0.2: + dependencies: + restore-cursor: 1.0.1 + + cli-width@1.1.1: {} + + clsx@2.1.1: {} + + code-point-at@1.1.0: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + comma-separated-tokens@2.0.3: {} + + commander@2.20.3: {} + + commander@7.2.0: {} + + commander@8.3.0: {} + + concat-map@0.0.1: {} + + convert-source-map@2.0.0: {} + + core-js@2.6.12: {} + + core-util-is@1.0.2: {} + + cose-base@1.0.3: + dependencies: + layout-base: 1.0.2 + + cose-base@2.2.0: + dependencies: + layout-base: 2.0.1 + + crelt@1.0.6: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-tree@3.2.1: + dependencies: + mdn-data: 2.27.1 + source-map-js: 1.2.1 + + css.escape@1.5.1: {} + + csstype@3.2.3: {} + + cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.4): + dependencies: + cose-base: 1.0.3 + cytoscape: 3.33.4 + + cytoscape-fcose@2.2.0(cytoscape@3.33.4): + dependencies: + cose-base: 2.2.0 + cytoscape: 3.33.4 + + cytoscape@3.33.4: {} + + d3-array@2.12.1: + dependencies: + internmap: 1.0.1 + + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-axis@3.0.0: {} + + d3-brush@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3-chord@3.0.1: + dependencies: + d3-path: 3.1.0 + + d3-color@3.1.0: {} + + d3-contour@4.0.2: + dependencies: + d3-array: 3.2.4 + + d3-delaunay@6.0.4: + dependencies: + delaunator: 5.1.0 + + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-dsv@3.0.1: + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + + d3-ease@3.0.1: {} + + d3-fetch@3.0.1: + dependencies: + d3-dsv: 3.0.1 + + d3-force@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + + d3-format@3.1.2: {} + + d3-geo@3.1.1: + dependencies: + d3-array: 3.2.4 + + d3-hierarchy@3.1.2: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@1.0.9: {} + + d3-path@3.1.0: {} + + d3-polygon@3.0.1: {} + + d3-quadtree@3.0.1: {} + + d3-random@3.0.1: {} + + d3-sankey@0.12.3: + dependencies: + d3-array: 2.12.1 + d3-shape: 1.3.7 + + d3-scale-chromatic@3.1.0: + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.2 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-selection@3.0.0: {} + + d3-shape@1.3.7: + dependencies: + d3-path: 1.0.9 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3@7.9.0: + dependencies: + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.2 + d3-geo: 3.1.1 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + + dagre-d3-es@7.0.14: + dependencies: + d3: 7.9.0 + lodash-es: 4.18.1 + + dashdash@1.14.1: + dependencies: + assert-plus: 1.0.0 + + data-urls@7.0.0: + dependencies: + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1 + transitivePeerDependencies: + - '@noble/hashes' + + dayjs@1.11.21: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decimal.js@10.6.0: {} + + decode-named-character-reference@1.3.0: + dependencies: + character-entities: 2.0.2 + + deep-is@0.1.4: {} + + deep-rename-keys@0.2.1: + dependencies: + kind-of: 3.2.2 + rename-keys: 1.2.0 + + delaunator@5.1.0: + dependencies: + robust-predicates: 3.0.3 + + delayed-stream@1.0.0: {} + + dequal@2.0.3: {} + + detect-libc@2.1.2: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + diff@8.0.4: {} + + dom-accessibility-api@0.5.16: {} + + dom-accessibility-api@0.6.3: {} + + dompurify@3.4.7: + optionalDependencies: + '@types/trusted-types': 2.0.7 + + earlgrey-runtime@0.1.2: + dependencies: + core-js: 2.6.12 + kaiser: 0.0.4 + lodash: 4.18.1 + regenerator-runtime: 0.9.6 + + ecc-jsbn@0.1.2: + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + + editor@1.0.0: {} + + electron-to-chromium@1.5.364: {} + + enhanced-resolve@5.22.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + + entities@6.0.1: {} + + entities@8.0.0: {} + + es-module-lexer@2.1.0: {} + + es-toolkit@1.47.0: {} + + escalade@3.2.0: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + eslint-config-prettier@10.1.8(eslint@9.39.4(jiti@2.7.0)): + dependencies: + eslint: 9.39.4(jiti@2.7.0) + + eslint-plugin-react-hooks@7.1.1(eslint@9.39.4(jiti@2.7.0)): + dependencies: + '@babel/core': 7.29.7 + '@babel/parser': 7.29.7 + eslint: 9.39.4(jiti@2.7.0) + hermes-parser: 0.25.1 + zod: 4.4.3 + zod-validation-error: 4.0.2(zod@4.4.3) + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-refresh@0.5.2(eslint@9.39.4(jiti@2.7.0)): + dependencies: + eslint: 9.39.4(jiti@2.7.0) + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint-visitor-keys@5.0.1: {} + + eslint@9.39.4(jiti@2.7.0): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.7.0)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.2 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.5 + '@eslint/js': 9.39.4 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.8 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.9 + ajv: 6.15.0 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.5 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.7.0 + transitivePeerDependencies: + - supports-color + + espree@10.4.0: + dependencies: + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 4.2.1 + + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-util-is-identifier-name@3.0.0: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.9 + + esutils@2.0.3: {} + + eventemitter3@2.0.3: {} + + events@3.3.0: {} + + exit-hook@1.1.1: {} + + expect-type@1.3.0: {} + + extend@3.0.2: {} + + extsprintf@1.3.0: {} + + fast-deep-equal@3.1.3: {} + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + + figures@1.7.0: + dependencies: + escape-string-regexp: 1.0.5 + object-assign: 4.1.1 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.4.2 + keyv: 4.5.4 + + flatted@3.4.2: {} + + forever-agent@0.6.1: {} + + form-data@2.3.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + framer-motion@12.40.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6): + dependencies: + motion-dom: 12.40.0 + motion-utils: 12.39.0 + tslib: 2.8.1 + optionalDependencies: + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + + fs-extra@0.26.7: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 2.4.0 + klaw: 1.3.1 + path-is-absolute: 1.0.1 + rimraf: 2.7.1 + + fs-promise@0.5.0: + dependencies: + any-promise: 1.3.0 + fs-extra: 0.26.7 + mz: 2.7.0 + thenify-all: 1.6.0 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + gensync@1.0.0-beta.2: {} + + getpass@0.1.7: + dependencies: + assert-plus: 1.0.0 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.5 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@14.0.0: {} + + globals@17.6.0: {} + + graceful-fs@4.2.11: {} + + hachure-fill@0.5.2: {} + + har-schema@2.0.0: {} + + har-validator@5.1.5: + dependencies: + ajv: 6.15.0 + har-schema: 2.0.0 + + has-ansi@2.0.0: + dependencies: + ansi-regex: 2.1.1 + + has-flag@4.0.0: {} + + hast-util-from-dom@5.0.1: + dependencies: + '@types/hast': 3.0.4 + hastscript: 9.0.1 + web-namespaces: 2.0.1 + + hast-util-from-html-isomorphic@2.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-from-dom: 5.0.1 + hast-util-from-html: 2.0.3 + unist-util-remove-position: 5.0.0 + + hast-util-from-html@2.0.3: + dependencies: + '@types/hast': 3.0.4 + devlop: 1.1.0 + hast-util-from-parse5: 8.0.3 + parse5: 7.3.0 + vfile: 6.0.3 + vfile-message: 4.0.3 + + hast-util-from-parse5@8.0.3: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + devlop: 1.1.0 + hastscript: 9.0.1 + property-information: 7.1.0 + vfile: 6.0.3 + vfile-location: 5.0.3 + web-namespaces: 2.0.1 + + hast-util-is-element@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-parse-selector@4.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-raw@9.1.0: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + '@ungap/structured-clone': 1.3.1 + hast-util-from-parse5: 8.0.3 + hast-util-to-parse5: 8.0.1 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + parse5: 7.3.0 + unist-util-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-sanitize@5.0.2: + dependencies: + '@types/hast': 3.0.4 + '@ungap/structured-clone': 1.3.1 + unist-util-position: 5.0.0 + + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-to-jsx-runtime@2.3.6: + dependencies: + '@types/estree': 1.0.9 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 + unist-util-position: 5.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + hast-util-to-parse5@8.0.1: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-to-text@4.0.2: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + hast-util-is-element: 3.0.0 + unist-util-find-after: 5.0.0 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hastscript@9.0.1: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + + hermes-estree@0.25.1: {} + + hermes-parser@0.25.1: + dependencies: + hermes-estree: 0.25.1 + + html-encoding-sniffer@6.0.0: + dependencies: + '@exodus/bytes': 1.15.1 + transitivePeerDependencies: + - '@noble/hashes' + + html-parse-stringify@3.0.1: + dependencies: + void-elements: 3.1.0 + + html-url-attributes@3.0.1: {} + + html-void-elements@3.0.0: {} + + http-signature@1.2.0: + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.18.0 + + i18next-browser-languagedetector@8.2.1: + dependencies: + '@babel/runtime': 7.29.7 + + i18next@26.3.0(typescript@5.9.3): + optionalDependencies: + typescript: 5.9.3 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-meta-resolve@4.2.0: {} + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + inline-style-parser@0.2.7: {} + + inquirer-promise@0.0.3: + dependencies: + earlgrey-runtime: 0.1.2 + inquirer: 0.11.4 + + inquirer@0.11.4: + dependencies: + ansi-escapes: 1.4.0 + ansi-regex: 2.1.1 + chalk: 1.1.3 + cli-cursor: 1.0.2 + cli-width: 1.1.1 + figures: 1.7.0 + lodash: 3.10.1 + readline2: 1.0.1 + run-async: 0.1.0 + rx-lite: 3.1.2 + string-width: 1.0.2 + strip-ansi: 3.0.1 + through: 2.3.8 + + internmap@1.0.1: {} + + internmap@2.0.3: {} + + is-alphabetical@2.0.1: {} + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + + is-buffer@1.1.6: {} + + is-decimal@2.0.1: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@1.0.0: + dependencies: + number-is-nan: 1.0.1 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hexadecimal@2.0.1: {} + + is-plain-obj@4.1.0: {} + + is-potential-custom-element-name@1.0.1: {} + + is-typedarray@1.0.0: {} + + isexe@2.0.0: {} + + isstream@0.1.2: {} + + jiti@2.7.0: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + + jsbn@0.1.1: {} + + jsdom@29.1.1: + dependencies: + '@asamuzakjp/css-color': 5.1.11 + '@asamuzakjp/dom-selector': 7.1.1 + '@bramus/specificity': 2.4.2 + '@csstools/css-syntax-patches-for-csstree': 1.1.4(css-tree@3.2.1) + '@exodus/bytes': 1.15.1 + css-tree: 3.2.1 + data-urls: 7.0.0 + decimal.js: 10.6.0 + html-encoding-sniffer: 6.0.0 + is-potential-custom-element-name: 1.0.1 + lru-cache: 11.5.1 + parse5: 8.0.1 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 6.0.1 + undici: 7.26.0 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 8.0.1 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - '@noble/hashes' + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema@0.4.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json-stringify-safe@5.0.1: {} + + json5@2.2.3: {} + + jsonfile@2.4.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsprim@1.4.2: + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + + kaiser@0.0.4: + dependencies: + earlgrey-runtime: 0.1.2 + + katex@0.16.47: + dependencies: + commander: 8.3.0 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + khroma@2.1.0: {} + + kind-of@3.2.2: + dependencies: + is-buffer: 1.1.6 + + klaw@1.3.1: + optionalDependencies: + graceful-fs: 4.2.11 + + layout-base@1.0.2: {} + + layout-base@2.0.1: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash-es@4.18.1: {} + + lodash.merge@4.6.2: {} + + lodash@3.10.1: {} + + lodash@4.18.1: {} + + longest-streak@3.1.0: {} + + lru-cache@11.5.1: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lucide-react@1.17.0(react@19.2.6): + dependencies: + react: 19.2.6 + + lz-string@1.5.0: {} + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + markdown-table@3.0.4: {} + + marked@16.4.2: {} + + marked@17.0.6: {} + + material-icon-theme@5.35.0: + dependencies: + biome: 0.3.3 + chroma-js: 3.2.0 + events: 3.3.0 + fast-deep-equal: 3.1.3 + svgson: 5.3.1 + + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + mdast-util-from-markdown@2.0.3: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0: + dependencies: + mdast-util-from-markdown: 2.0.3 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-math@3.0.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + longest-streak: 3.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + unist-util-remove-position: 5.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-expression@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.2.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.1 + + mdast-util-to-hast@13.2.1: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.1 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.1.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + mdn-data@2.27.1: {} + + mermaid@11.15.0: + dependencies: + '@braintree/sanitize-url': 7.1.2 + '@iconify/utils': 3.1.3 + '@mermaid-js/parser': 1.1.1 + '@types/d3': 7.4.3 + '@upsetjs/venn.js': 2.0.0 + cytoscape: 3.33.4 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.33.4) + cytoscape-fcose: 2.2.0(cytoscape@3.33.4) + d3: 7.9.0 + d3-sankey: 0.12.3 + dagre-d3-es: 7.0.14 + dayjs: 1.11.21 + dompurify: 3.4.7 + es-toolkit: 1.47.0 + katex: 0.16.47 + khroma: 2.1.0 + marked: 16.4.2 + roughjs: 4.6.6 + stylis: 4.4.0 + ts-dedent: 2.2.0 + uuid: 14.0.0 + + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-math@3.1.0: + dependencies: + '@types/katex': 0.16.8 + devlop: 1.1.0 + katex: 0.16.47 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.3.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.13 + debug: 4.4.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + min-indent@1.0.1: {} + + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.6 + + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.15 + + motion-dom@12.40.0: + dependencies: + motion-utils: 12.39.0 + + motion-utils@12.39.0: {} + + motion@12.40.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6): + dependencies: + framer-motion: 12.40.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + tslib: 2.8.1 + optionalDependencies: + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + + ms@2.1.3: {} + + mute-stream@0.0.5: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.12: {} + + natural-compare@1.4.0: {} + + node-releases@2.0.46: {} + + number-is-nan@1.0.1: {} + + oauth-sign@0.9.0: {} + + object-assign@4.1.1: {} + + obug@2.1.1: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@1.1.0: {} + + oniguruma-parser@0.12.2: {} + + oniguruma-to-es@4.3.6: + dependencies: + oniguruma-parser: 0.12.2 + regex: 6.1.0 + regex-recursion: 6.0.2 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + os-homedir@1.0.2: {} + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + package-manager-detector@1.6.0: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-entities@4.0.2: + dependencies: + '@types/unist': 2.0.11 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.3.0 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + + parse5@8.0.1: + dependencies: + entities: 8.0.0 + + path-data-parser@0.1.0: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + pathe@2.0.3: {} + + performance-now@2.1.0: {} + + picocolors@1.1.1: {} + + picomatch@4.0.4: {} + + points-on-curve@0.2.0: {} + + points-on-path@0.2.1: + dependencies: + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + + postcss@8.5.15: + dependencies: + nanoid: 3.3.12 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier@3.8.3: {} + + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + property-information@7.1.0: {} + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + punycode@2.3.1: {} + + qs@6.5.5: {} + + react-dom@19.2.6(react@19.2.6): + dependencies: + react: 19.2.6 + scheduler: 0.27.0 + + react-i18next@17.0.8(i18next@26.3.0(typescript@5.9.3))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(typescript@5.9.3): + dependencies: + '@babel/runtime': 7.29.7 + html-parse-stringify: 3.0.1 + i18next: 26.3.0(typescript@5.9.3) + react: 19.2.6 + use-sync-external-store: 1.6.0(react@19.2.6) + optionalDependencies: + react-dom: 19.2.6(react@19.2.6) + typescript: 5.9.3 + + react-is@17.0.2: {} + + react@19.2.6: {} + + readline2@1.0.1: + dependencies: + code-point-at: 1.1.0 + is-fullwidth-code-point: 1.0.0 + mute-stream: 0.0.5 + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + regenerator-runtime@0.9.6: {} + + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.1.0: + dependencies: + regex-utilities: 2.3.0 + + rehype-harden@1.1.8: + dependencies: + unist-util-visit: 5.1.0 + + rehype-katex@7.0.1: + dependencies: + '@types/hast': 3.0.4 + '@types/katex': 0.16.8 + hast-util-from-html-isomorphic: 2.0.0 + hast-util-to-text: 4.0.2 + katex: 0.16.47 + unist-util-visit-parents: 6.0.2 + vfile: 6.0.3 + + rehype-raw@7.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-raw: 9.1.0 + vfile: 6.0.3 + + rehype-sanitize@6.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-sanitize: 5.0.2 + + remark-gfm@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.1.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-math@6.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-math: 3.0.0 + micromark-extension-math: 3.1.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.3 + micromark-util-types: 2.0.2 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@11.1.2: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.1 + unified: 11.0.5 + vfile: 6.0.3 + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.2 + unified: 11.0.5 + + remend@1.3.0: {} + + rename-keys@1.2.0: {} + + request-promise@3.0.0: + dependencies: + bluebird: 3.7.2 + lodash: 4.18.1 + request: 2.88.2 + + request@2.88.2: + dependencies: + aws-sign2: 0.7.0 + aws4: 1.13.2 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.5 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + + require-from-string@2.0.2: {} + + resolve-from@4.0.0: {} + + restore-cursor@1.0.1: + dependencies: + exit-hook: 1.1.1 + onetime: 1.1.0 + + rimraf@2.7.1: + dependencies: + glob: 7.2.3 + + robust-predicates@3.0.3: {} + + rolldown@1.0.2: + dependencies: + '@oxc-project/types': 0.132.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.2 + '@rolldown/binding-darwin-arm64': 1.0.2 + '@rolldown/binding-darwin-x64': 1.0.2 + '@rolldown/binding-freebsd-x64': 1.0.2 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.2 + '@rolldown/binding-linux-arm64-gnu': 1.0.2 + '@rolldown/binding-linux-arm64-musl': 1.0.2 + '@rolldown/binding-linux-ppc64-gnu': 1.0.2 + '@rolldown/binding-linux-s390x-gnu': 1.0.2 + '@rolldown/binding-linux-x64-gnu': 1.0.2 + '@rolldown/binding-linux-x64-musl': 1.0.2 + '@rolldown/binding-openharmony-arm64': 1.0.2 + '@rolldown/binding-wasm32-wasi': 1.0.2 + '@rolldown/binding-win32-arm64-msvc': 1.0.2 + '@rolldown/binding-win32-x64-msvc': 1.0.2 + + roughjs@4.6.6: + dependencies: + hachure-fill: 0.5.2 + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + points-on-path: 0.2.1 + + run-async@0.1.0: + dependencies: + once: 1.4.0 + + rw@1.3.3: {} + + rx-lite@3.1.2: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + + scheduler@0.27.0: {} + + semver@6.3.1: {} + + semver@7.8.1: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shiki@4.1.0: + dependencies: + '@shikijs/core': 4.1.0 + '@shikijs/engine-javascript': 4.1.0 + '@shikijs/engine-oniguruma': 4.1.0 + '@shikijs/langs': 4.1.0 + '@shikijs/themes': 4.1.0 + '@shikijs/types': 4.1.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + siginfo@2.0.0: {} + + source-map-js@1.2.1: {} + + space-separated-tokens@2.0.2: {} + + sshpk@1.18.0: + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + + stackback@0.0.2: {} + + std-env@4.1.0: {} + + streamdown@2.5.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6): + dependencies: + clsx: 2.1.1 + hast-util-to-jsx-runtime: 2.3.6 + html-url-attributes: 3.0.1 + marked: 17.0.6 + mermaid: 11.15.0 + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + rehype-harden: 1.1.8 + rehype-raw: 7.0.0 + rehype-sanitize: 6.0.0 + remark-gfm: 4.0.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + remend: 1.3.0 + tailwind-merge: 3.6.0 + unified: 11.0.5 + unist-util-visit: 5.1.0 + unist-util-visit-parents: 6.0.2 + transitivePeerDependencies: + - supports-color + + string-width@1.0.2: + dependencies: + code-point-at: 1.1.0 + is-fullwidth-code-point: 1.0.0 + strip-ansi: 3.0.1 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@3.0.1: + dependencies: + ansi-regex: 2.1.1 + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@3.1.1: {} + + style-mod@4.1.3: {} + + style-to-js@1.1.21: + dependencies: + style-to-object: 1.0.14 + + style-to-object@1.0.14: + dependencies: + inline-style-parser: 0.2.7 + + stylis@4.4.0: {} + + supports-color@2.0.0: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + svgson@5.3.1: + dependencies: + deep-rename-keys: 0.2.1 + xml-reader: 2.4.3 + + symbol-tree@3.2.4: {} + + tailwind-merge@3.6.0: {} + + tailwindcss@4.3.0: {} + + tapable@2.3.3: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + through@2.3.8: {} + + tinybench@2.9.0: {} + + tinyexec@1.2.2: {} + + tinyglobby@0.2.16: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + + tinyrainbow@3.1.0: {} + + tldts-core@7.4.1: {} + + tldts@7.4.0: + dependencies: + tldts-core: 7.4.1 + + tough-cookie@2.5.0: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + + tough-cookie@6.0.1: + dependencies: + tldts: 7.4.0 + + tr46@6.0.0: + dependencies: + punycode: 2.3.1 + + trim-lines@3.0.1: {} + + trough@2.2.0: {} + + ts-api-utils@2.5.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + + ts-dedent@2.2.0: {} + + tslib@2.8.1: {} + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + tweetnacl@0.14.5: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + typescript-eslint@8.60.0(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.60.0(@typescript-eslint/parser@8.60.0(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/parser': 8.60.0(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.60.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.60.0(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + eslint: 9.39.4(jiti@2.7.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + typescript@5.9.3: {} + + undici-types@7.24.6: {} + + undici@7.26.0: {} + + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + + unist-util-find-after@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-is@6.0.1: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-remove-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-visit: 5.1.0 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-visit@5.1.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + untildify@3.0.3: {} + + update-browserslist-db@1.2.3(browserslist@4.28.2): + dependencies: + browserslist: 4.28.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + use-sync-external-store@1.6.0(react@19.2.6): + dependencies: + react: 19.2.6 + + user-home@2.0.0: + dependencies: + os-homedir: 1.0.2 + + uuid@14.0.0: {} + + uuid@3.4.0: {} + + verror@1.10.0: + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + + vfile-location@5.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile: 6.0.3 + + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 + + vite@8.0.14(@types/node@25.9.1)(jiti@2.7.0): + dependencies: + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.15 + rolldown: 1.0.2 + tinyglobby: 0.2.16 + optionalDependencies: + '@types/node': 25.9.1 + fsevents: 2.3.3 + jiti: 2.7.0 + + vitest@4.1.7(@types/node@25.9.1)(jsdom@29.1.1)(vite@8.0.14(@types/node@25.9.1)(jiti@2.7.0)): + dependencies: + '@vitest/expect': 4.1.7 + '@vitest/mocker': 4.1.7(vite@8.0.14(@types/node@25.9.1)(jiti@2.7.0)) + '@vitest/pretty-format': 4.1.7 + '@vitest/runner': 4.1.7 + '@vitest/snapshot': 4.1.7 + '@vitest/spy': 4.1.7 + '@vitest/utils': 4.1.7 + es-module-lexer: 2.1.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.2.2 + tinyglobby: 0.2.16 + tinyrainbow: 3.1.0 + vite: 8.0.14(@types/node@25.9.1)(jiti@2.7.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 25.9.1 + jsdom: 29.1.1 + transitivePeerDependencies: + - msw + + void-elements@3.1.0: {} + + w3c-keyname@2.2.8: {} + + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 + + web-namespaces@2.0.1: {} + + webidl-conversions@8.0.1: {} + + whatwg-mimetype@5.0.0: {} + + whatwg-url@16.0.1: + dependencies: + '@exodus/bytes': 1.15.1 + tr46: 6.0.0 + webidl-conversions: 8.0.1 + transitivePeerDependencies: + - '@noble/hashes' + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + word-wrap@1.2.5: {} + + wrappy@1.0.2: {} + + ws@8.21.0: {} + + xml-lexer@0.2.2: + dependencies: + eventemitter3: 2.0.3 + + xml-name-validator@5.0.0: {} + + xml-reader@2.4.3: + dependencies: + eventemitter3: 2.0.3 + xml-lexer: 0.2.2 + + xmlchars@2.2.0: {} + + yallist@3.1.1: {} + + yocto-queue@0.1.0: {} + + zod-validation-error@4.0.2(zod@4.4.3): + dependencies: + zod: 4.4.3 + + zod@4.4.3: {} + + zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..55f54ed --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +allowBuilds: + core-js: true diff --git a/public/404.html b/public/404.html new file mode 100644 index 0000000..7320d48 --- /dev/null +++ b/public/404.html @@ -0,0 +1,26 @@ + + + + + + + diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000..d946ac9 --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,18 @@ +{ + "name": "PiAgentUI", + "short_name": "PiAgentUI", + "description": "AI Coding Assistant", + "start_url": "/", + "display": "standalone", + "orientation": "portrait", + "background_color": "#1a1a1a", + "theme_color": "#262524", + "icons": [ + { + "src": "/piagentui-logo.png", + "sizes": "1254x1254", + "type": "image/png", + "purpose": "any maskable" + } + ] +} diff --git a/public/material-icons/angular.svg b/public/material-icons/angular.svg new file mode 100644 index 0000000..a28075e --- /dev/null +++ b/public/material-icons/angular.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/assembly.svg b/public/material-icons/assembly.svg new file mode 100644 index 0000000..7a94d67 --- /dev/null +++ b/public/material-icons/assembly.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/astro-config.svg b/public/material-icons/astro-config.svg new file mode 100644 index 0000000..1c12c5e --- /dev/null +++ b/public/material-icons/astro-config.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/astro.svg b/public/material-icons/astro.svg new file mode 100644 index 0000000..fa67fee --- /dev/null +++ b/public/material-icons/astro.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/audio.svg b/public/material-icons/audio.svg new file mode 100644 index 0000000..74f43c4 --- /dev/null +++ b/public/material-icons/audio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/babel.svg b/public/material-icons/babel.svg new file mode 100644 index 0000000..244ae36 --- /dev/null +++ b/public/material-icons/babel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/bun.svg b/public/material-icons/bun.svg new file mode 100644 index 0000000..cc36204 --- /dev/null +++ b/public/material-icons/bun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/c.svg b/public/material-icons/c.svg new file mode 100644 index 0000000..5bb84b6 --- /dev/null +++ b/public/material-icons/c.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/certificate.svg b/public/material-icons/certificate.svg new file mode 100644 index 0000000..a466d81 --- /dev/null +++ b/public/material-icons/certificate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/changelog.svg b/public/material-icons/changelog.svg new file mode 100644 index 0000000..b4b1a07 --- /dev/null +++ b/public/material-icons/changelog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/clojure.svg b/public/material-icons/clojure.svg new file mode 100644 index 0000000..1b22aed --- /dev/null +++ b/public/material-icons/clojure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/cmake.svg b/public/material-icons/cmake.svg new file mode 100644 index 0000000..aa21796 --- /dev/null +++ b/public/material-icons/cmake.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/console.svg b/public/material-icons/console.svg new file mode 100644 index 0000000..d789aa2 --- /dev/null +++ b/public/material-icons/console.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/cpp.svg b/public/material-icons/cpp.svg new file mode 100644 index 0000000..16534ac --- /dev/null +++ b/public/material-icons/cpp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/csharp.svg b/public/material-icons/csharp.svg new file mode 100644 index 0000000..02b1be3 --- /dev/null +++ b/public/material-icons/csharp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/css-map.svg b/public/material-icons/css-map.svg new file mode 100644 index 0000000..55b74c0 --- /dev/null +++ b/public/material-icons/css-map.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/css.svg b/public/material-icons/css.svg new file mode 100644 index 0000000..1acad1b --- /dev/null +++ b/public/material-icons/css.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/dart.svg b/public/material-icons/dart.svg new file mode 100644 index 0000000..04b22d0 --- /dev/null +++ b/public/material-icons/dart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/database.svg b/public/material-icons/database.svg new file mode 100644 index 0000000..b107234 --- /dev/null +++ b/public/material-icons/database.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/deno.svg b/public/material-icons/deno.svg new file mode 100644 index 0000000..f5560b9 --- /dev/null +++ b/public/material-icons/deno.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/docker.svg b/public/material-icons/docker.svg new file mode 100644 index 0000000..7d6a1a5 --- /dev/null +++ b/public/material-icons/docker.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/document.svg b/public/material-icons/document.svg new file mode 100644 index 0000000..a717956 --- /dev/null +++ b/public/material-icons/document.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/elixir.svg b/public/material-icons/elixir.svg new file mode 100644 index 0000000..d40f90b --- /dev/null +++ b/public/material-icons/elixir.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/erlang.svg b/public/material-icons/erlang.svg new file mode 100644 index 0000000..41025d6 --- /dev/null +++ b/public/material-icons/erlang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/eslint.svg b/public/material-icons/eslint.svg new file mode 100644 index 0000000..54fe8cc --- /dev/null +++ b/public/material-icons/eslint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/file.svg b/public/material-icons/file.svg new file mode 100644 index 0000000..27421f5 --- /dev/null +++ b/public/material-icons/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/firebase.svg b/public/material-icons/firebase.svg new file mode 100644 index 0000000..bb3b63c --- /dev/null +++ b/public/material-icons/firebase.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-android-open.svg b/public/material-icons/folder-android-open.svg new file mode 100644 index 0000000..cdd8376 --- /dev/null +++ b/public/material-icons/folder-android-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-android.svg b/public/material-icons/folder-android.svg new file mode 100644 index 0000000..7ee8a46 --- /dev/null +++ b/public/material-icons/folder-android.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-api-open.svg b/public/material-icons/folder-api-open.svg new file mode 100644 index 0000000..ac3edb9 --- /dev/null +++ b/public/material-icons/folder-api-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-api.svg b/public/material-icons/folder-api.svg new file mode 100644 index 0000000..bf1d64c --- /dev/null +++ b/public/material-icons/folder-api.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-buildkite-open.svg b/public/material-icons/folder-buildkite-open.svg new file mode 100644 index 0000000..872db64 --- /dev/null +++ b/public/material-icons/folder-buildkite-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-buildkite.svg b/public/material-icons/folder-buildkite.svg new file mode 100644 index 0000000..9512b40 --- /dev/null +++ b/public/material-icons/folder-buildkite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-ci-open.svg b/public/material-icons/folder-ci-open.svg new file mode 100644 index 0000000..57ac1ba --- /dev/null +++ b/public/material-icons/folder-ci-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-ci.svg b/public/material-icons/folder-ci.svg new file mode 100644 index 0000000..4fdc2ed --- /dev/null +++ b/public/material-icons/folder-ci.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-circleci-open.svg b/public/material-icons/folder-circleci-open.svg new file mode 100644 index 0000000..20dfffa --- /dev/null +++ b/public/material-icons/folder-circleci-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-circleci.svg b/public/material-icons/folder-circleci.svg new file mode 100644 index 0000000..0ab8cb9 --- /dev/null +++ b/public/material-icons/folder-circleci.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-components-open.svg b/public/material-icons/folder-components-open.svg new file mode 100644 index 0000000..2f55b72 --- /dev/null +++ b/public/material-icons/folder-components-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-components.svg b/public/material-icons/folder-components.svg new file mode 100644 index 0000000..983833e --- /dev/null +++ b/public/material-icons/folder-components.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-config-open.svg b/public/material-icons/folder-config-open.svg new file mode 100644 index 0000000..3b4ec5a --- /dev/null +++ b/public/material-icons/folder-config-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-config.svg b/public/material-icons/folder-config.svg new file mode 100644 index 0000000..8519910 --- /dev/null +++ b/public/material-icons/folder-config.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-container-open.svg b/public/material-icons/folder-container-open.svg new file mode 100644 index 0000000..9db8334 --- /dev/null +++ b/public/material-icons/folder-container-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-container.svg b/public/material-icons/folder-container.svg new file mode 100644 index 0000000..3ea03c1 --- /dev/null +++ b/public/material-icons/folder-container.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-content-open.svg b/public/material-icons/folder-content-open.svg new file mode 100644 index 0000000..a924b27 --- /dev/null +++ b/public/material-icons/folder-content-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-content.svg b/public/material-icons/folder-content.svg new file mode 100644 index 0000000..23f57d2 --- /dev/null +++ b/public/material-icons/folder-content.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-context-open.svg b/public/material-icons/folder-context-open.svg new file mode 100644 index 0000000..a631e02 --- /dev/null +++ b/public/material-icons/folder-context-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-context.svg b/public/material-icons/folder-context.svg new file mode 100644 index 0000000..bee74c1 --- /dev/null +++ b/public/material-icons/folder-context.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-controller-open.svg b/public/material-icons/folder-controller-open.svg new file mode 100644 index 0000000..a732ed1 --- /dev/null +++ b/public/material-icons/folder-controller-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-controller.svg b/public/material-icons/folder-controller.svg new file mode 100644 index 0000000..f98cd6f --- /dev/null +++ b/public/material-icons/folder-controller.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-core-open.svg b/public/material-icons/folder-core-open.svg new file mode 100644 index 0000000..34e7a82 --- /dev/null +++ b/public/material-icons/folder-core-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-core.svg b/public/material-icons/folder-core.svg new file mode 100644 index 0000000..f7cfae6 --- /dev/null +++ b/public/material-icons/folder-core.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-css-open.svg b/public/material-icons/folder-css-open.svg new file mode 100644 index 0000000..ef79791 --- /dev/null +++ b/public/material-icons/folder-css-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-css.svg b/public/material-icons/folder-css.svg new file mode 100644 index 0000000..4ff433e --- /dev/null +++ b/public/material-icons/folder-css.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-cursor-open.svg b/public/material-icons/folder-cursor-open.svg new file mode 100644 index 0000000..844c7e3 --- /dev/null +++ b/public/material-icons/folder-cursor-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-cursor.svg b/public/material-icons/folder-cursor.svg new file mode 100644 index 0000000..de33bcd --- /dev/null +++ b/public/material-icons/folder-cursor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-cypress-open.svg b/public/material-icons/folder-cypress-open.svg new file mode 100644 index 0000000..2a18521 --- /dev/null +++ b/public/material-icons/folder-cypress-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-cypress.svg b/public/material-icons/folder-cypress.svg new file mode 100644 index 0000000..39460e2 --- /dev/null +++ b/public/material-icons/folder-cypress.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-database-open.svg b/public/material-icons/folder-database-open.svg new file mode 100644 index 0000000..951767a --- /dev/null +++ b/public/material-icons/folder-database-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-database.svg b/public/material-icons/folder-database.svg new file mode 100644 index 0000000..a5cfb6a --- /dev/null +++ b/public/material-icons/folder-database.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-desktop-open.svg b/public/material-icons/folder-desktop-open.svg new file mode 100644 index 0000000..880ca76 --- /dev/null +++ b/public/material-icons/folder-desktop-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-desktop.svg b/public/material-icons/folder-desktop.svg new file mode 100644 index 0000000..5a20b49 --- /dev/null +++ b/public/material-icons/folder-desktop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-dist-open.svg b/public/material-icons/folder-dist-open.svg new file mode 100644 index 0000000..553cef1 --- /dev/null +++ b/public/material-icons/folder-dist-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-dist.svg b/public/material-icons/folder-dist.svg new file mode 100644 index 0000000..995580f --- /dev/null +++ b/public/material-icons/folder-dist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-docker-open.svg b/public/material-icons/folder-docker-open.svg new file mode 100644 index 0000000..a76e97b --- /dev/null +++ b/public/material-icons/folder-docker-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-docker.svg b/public/material-icons/folder-docker.svg new file mode 100644 index 0000000..c5b0949 --- /dev/null +++ b/public/material-icons/folder-docker.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-docs-open.svg b/public/material-icons/folder-docs-open.svg new file mode 100644 index 0000000..3577767 --- /dev/null +++ b/public/material-icons/folder-docs-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-docs.svg b/public/material-icons/folder-docs.svg new file mode 100644 index 0000000..246a05d --- /dev/null +++ b/public/material-icons/folder-docs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-drizzle-open.svg b/public/material-icons/folder-drizzle-open.svg new file mode 100644 index 0000000..5f0cd59 --- /dev/null +++ b/public/material-icons/folder-drizzle-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-drizzle.svg b/public/material-icons/folder-drizzle.svg new file mode 100644 index 0000000..d01a186 --- /dev/null +++ b/public/material-icons/folder-drizzle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-environment-open.svg b/public/material-icons/folder-environment-open.svg new file mode 100644 index 0000000..3b56abb --- /dev/null +++ b/public/material-icons/folder-environment-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-environment.svg b/public/material-icons/folder-environment.svg new file mode 100644 index 0000000..9cc1f2e --- /dev/null +++ b/public/material-icons/folder-environment.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-examples-open.svg b/public/material-icons/folder-examples-open.svg new file mode 100644 index 0000000..78c77a9 --- /dev/null +++ b/public/material-icons/folder-examples-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-examples.svg b/public/material-icons/folder-examples.svg new file mode 100644 index 0000000..fba8885 --- /dev/null +++ b/public/material-icons/folder-examples.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-firebase-open.svg b/public/material-icons/folder-firebase-open.svg new file mode 100644 index 0000000..7149b48 --- /dev/null +++ b/public/material-icons/folder-firebase-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-firebase.svg b/public/material-icons/folder-firebase.svg new file mode 100644 index 0000000..9eeac86 --- /dev/null +++ b/public/material-icons/folder-firebase.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-font-open.svg b/public/material-icons/folder-font-open.svg new file mode 100644 index 0000000..1a91f0b --- /dev/null +++ b/public/material-icons/folder-font-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-font.svg b/public/material-icons/folder-font.svg new file mode 100644 index 0000000..0115b73 --- /dev/null +++ b/public/material-icons/folder-font.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-functions-open.svg b/public/material-icons/folder-functions-open.svg new file mode 100644 index 0000000..00d6dc4 --- /dev/null +++ b/public/material-icons/folder-functions-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-functions.svg b/public/material-icons/folder-functions.svg new file mode 100644 index 0000000..01a9385 --- /dev/null +++ b/public/material-icons/folder-functions.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-gh-workflows-open.svg b/public/material-icons/folder-gh-workflows-open.svg new file mode 100644 index 0000000..f0de248 --- /dev/null +++ b/public/material-icons/folder-gh-workflows-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-gh-workflows.svg b/public/material-icons/folder-gh-workflows.svg new file mode 100644 index 0000000..08edb35 --- /dev/null +++ b/public/material-icons/folder-gh-workflows.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-git-open.svg b/public/material-icons/folder-git-open.svg new file mode 100644 index 0000000..90be1c1 --- /dev/null +++ b/public/material-icons/folder-git-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-git.svg b/public/material-icons/folder-git.svg new file mode 100644 index 0000000..2ca4db5 --- /dev/null +++ b/public/material-icons/folder-git.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-github-open.svg b/public/material-icons/folder-github-open.svg new file mode 100644 index 0000000..b125682 --- /dev/null +++ b/public/material-icons/folder-github-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-github.svg b/public/material-icons/folder-github.svg new file mode 100644 index 0000000..8ef589c --- /dev/null +++ b/public/material-icons/folder-github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-gitlab-open.svg b/public/material-icons/folder-gitlab-open.svg new file mode 100644 index 0000000..fc4deb2 --- /dev/null +++ b/public/material-icons/folder-gitlab-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-gitlab.svg b/public/material-icons/folder-gitlab.svg new file mode 100644 index 0000000..55db99e --- /dev/null +++ b/public/material-icons/folder-gitlab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-helper-open.svg b/public/material-icons/folder-helper-open.svg new file mode 100644 index 0000000..6fca391 --- /dev/null +++ b/public/material-icons/folder-helper-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-helper.svg b/public/material-icons/folder-helper.svg new file mode 100644 index 0000000..27a20d4 --- /dev/null +++ b/public/material-icons/folder-helper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-hook-open.svg b/public/material-icons/folder-hook-open.svg new file mode 100644 index 0000000..17d6231 --- /dev/null +++ b/public/material-icons/folder-hook-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-hook.svg b/public/material-icons/folder-hook.svg new file mode 100644 index 0000000..2105709 --- /dev/null +++ b/public/material-icons/folder-hook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-i18n-open.svg b/public/material-icons/folder-i18n-open.svg new file mode 100644 index 0000000..bc1a53c --- /dev/null +++ b/public/material-icons/folder-i18n-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-i18n.svg b/public/material-icons/folder-i18n.svg new file mode 100644 index 0000000..6ef0283 --- /dev/null +++ b/public/material-icons/folder-i18n.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-images-open.svg b/public/material-icons/folder-images-open.svg new file mode 100644 index 0000000..44a673b --- /dev/null +++ b/public/material-icons/folder-images-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-images.svg b/public/material-icons/folder-images.svg new file mode 100644 index 0000000..5b63a6c --- /dev/null +++ b/public/material-icons/folder-images.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-intellij-open.svg b/public/material-icons/folder-intellij-open.svg new file mode 100644 index 0000000..b135d01 --- /dev/null +++ b/public/material-icons/folder-intellij-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-intellij.svg b/public/material-icons/folder-intellij.svg new file mode 100644 index 0000000..bb6e663 --- /dev/null +++ b/public/material-icons/folder-intellij.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-interface-open.svg b/public/material-icons/folder-interface-open.svg new file mode 100644 index 0000000..ba54b0e --- /dev/null +++ b/public/material-icons/folder-interface-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-interface.svg b/public/material-icons/folder-interface.svg new file mode 100644 index 0000000..993ce72 --- /dev/null +++ b/public/material-icons/folder-interface.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-ios-open.svg b/public/material-icons/folder-ios-open.svg new file mode 100644 index 0000000..112fee6 --- /dev/null +++ b/public/material-icons/folder-ios-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-ios.svg b/public/material-icons/folder-ios.svg new file mode 100644 index 0000000..7af3b85 --- /dev/null +++ b/public/material-icons/folder-ios.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-job-open.svg b/public/material-icons/folder-job-open.svg new file mode 100644 index 0000000..efd7cdf --- /dev/null +++ b/public/material-icons/folder-job-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-job.svg b/public/material-icons/folder-job.svg new file mode 100644 index 0000000..9135aff --- /dev/null +++ b/public/material-icons/folder-job.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-keys-open.svg b/public/material-icons/folder-keys-open.svg new file mode 100644 index 0000000..783b16e --- /dev/null +++ b/public/material-icons/folder-keys-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-keys.svg b/public/material-icons/folder-keys.svg new file mode 100644 index 0000000..3527f62 --- /dev/null +++ b/public/material-icons/folder-keys.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-kubernetes-open.svg b/public/material-icons/folder-kubernetes-open.svg new file mode 100644 index 0000000..022be4d --- /dev/null +++ b/public/material-icons/folder-kubernetes-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-kubernetes.svg b/public/material-icons/folder-kubernetes.svg new file mode 100644 index 0000000..b60d83d --- /dev/null +++ b/public/material-icons/folder-kubernetes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-layout-open.svg b/public/material-icons/folder-layout-open.svg new file mode 100644 index 0000000..f8f1def --- /dev/null +++ b/public/material-icons/folder-layout-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-layout.svg b/public/material-icons/folder-layout.svg new file mode 100644 index 0000000..3d773bc --- /dev/null +++ b/public/material-icons/folder-layout.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-less-open.svg b/public/material-icons/folder-less-open.svg new file mode 100644 index 0000000..3419b0a --- /dev/null +++ b/public/material-icons/folder-less-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-less.svg b/public/material-icons/folder-less.svg new file mode 100644 index 0000000..b6abc5e --- /dev/null +++ b/public/material-icons/folder-less.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-lib-open.svg b/public/material-icons/folder-lib-open.svg new file mode 100644 index 0000000..8c44431 --- /dev/null +++ b/public/material-icons/folder-lib-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-lib.svg b/public/material-icons/folder-lib.svg new file mode 100644 index 0000000..4e75285 --- /dev/null +++ b/public/material-icons/folder-lib.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-linux-open.svg b/public/material-icons/folder-linux-open.svg new file mode 100644 index 0000000..8517b35 --- /dev/null +++ b/public/material-icons/folder-linux-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-linux.svg b/public/material-icons/folder-linux.svg new file mode 100644 index 0000000..df4d229 --- /dev/null +++ b/public/material-icons/folder-linux.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-log-open.svg b/public/material-icons/folder-log-open.svg new file mode 100644 index 0000000..a78771e --- /dev/null +++ b/public/material-icons/folder-log-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-log.svg b/public/material-icons/folder-log.svg new file mode 100644 index 0000000..b2ba6a5 --- /dev/null +++ b/public/material-icons/folder-log.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-macos-open.svg b/public/material-icons/folder-macos-open.svg new file mode 100644 index 0000000..988c6bb --- /dev/null +++ b/public/material-icons/folder-macos-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-macos.svg b/public/material-icons/folder-macos.svg new file mode 100644 index 0000000..09c9309 --- /dev/null +++ b/public/material-icons/folder-macos.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-middleware-open.svg b/public/material-icons/folder-middleware-open.svg new file mode 100644 index 0000000..346954c --- /dev/null +++ b/public/material-icons/folder-middleware-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-middleware.svg b/public/material-icons/folder-middleware.svg new file mode 100644 index 0000000..f12c99d --- /dev/null +++ b/public/material-icons/folder-middleware.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-mobile-open.svg b/public/material-icons/folder-mobile-open.svg new file mode 100644 index 0000000..6a5a39b --- /dev/null +++ b/public/material-icons/folder-mobile-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-mobile.svg b/public/material-icons/folder-mobile.svg new file mode 100644 index 0000000..03aab13 --- /dev/null +++ b/public/material-icons/folder-mobile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-mock-open.svg b/public/material-icons/folder-mock-open.svg new file mode 100644 index 0000000..c92929c --- /dev/null +++ b/public/material-icons/folder-mock-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-mock.svg b/public/material-icons/folder-mock.svg new file mode 100644 index 0000000..22f88e5 --- /dev/null +++ b/public/material-icons/folder-mock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-netlify-open.svg b/public/material-icons/folder-netlify-open.svg new file mode 100644 index 0000000..d6f63b7 --- /dev/null +++ b/public/material-icons/folder-netlify-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-netlify.svg b/public/material-icons/folder-netlify.svg new file mode 100644 index 0000000..5473f42 --- /dev/null +++ b/public/material-icons/folder-netlify.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-ngrx-store-open.svg b/public/material-icons/folder-ngrx-store-open.svg new file mode 100644 index 0000000..2c8514e --- /dev/null +++ b/public/material-icons/folder-ngrx-store-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-ngrx-store.svg b/public/material-icons/folder-ngrx-store.svg new file mode 100644 index 0000000..1f9cb2d --- /dev/null +++ b/public/material-icons/folder-ngrx-store.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-node-open.svg b/public/material-icons/folder-node-open.svg new file mode 100644 index 0000000..a785ed3 --- /dev/null +++ b/public/material-icons/folder-node-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-node.svg b/public/material-icons/folder-node.svg new file mode 100644 index 0000000..fb47492 --- /dev/null +++ b/public/material-icons/folder-node.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-open.svg b/public/material-icons/folder-open.svg new file mode 100644 index 0000000..15eadfb --- /dev/null +++ b/public/material-icons/folder-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-packages-open.svg b/public/material-icons/folder-packages-open.svg new file mode 100644 index 0000000..7ac6075 --- /dev/null +++ b/public/material-icons/folder-packages-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-packages.svg b/public/material-icons/folder-packages.svg new file mode 100644 index 0000000..9ba67cb --- /dev/null +++ b/public/material-icons/folder-packages.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-prisma-open.svg b/public/material-icons/folder-prisma-open.svg new file mode 100644 index 0000000..95df8ba --- /dev/null +++ b/public/material-icons/folder-prisma-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-prisma.svg b/public/material-icons/folder-prisma.svg new file mode 100644 index 0000000..a166ebd --- /dev/null +++ b/public/material-icons/folder-prisma.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-public-open.svg b/public/material-icons/folder-public-open.svg new file mode 100644 index 0000000..04449ed --- /dev/null +++ b/public/material-icons/folder-public-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-public.svg b/public/material-icons/folder-public.svg new file mode 100644 index 0000000..ea59939 --- /dev/null +++ b/public/material-icons/folder-public.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-queue-open.svg b/public/material-icons/folder-queue-open.svg new file mode 100644 index 0000000..5afa821 --- /dev/null +++ b/public/material-icons/folder-queue-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-queue.svg b/public/material-icons/folder-queue.svg new file mode 100644 index 0000000..2445304 --- /dev/null +++ b/public/material-icons/folder-queue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-routes-open.svg b/public/material-icons/folder-routes-open.svg new file mode 100644 index 0000000..c9c875e --- /dev/null +++ b/public/material-icons/folder-routes-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-routes.svg b/public/material-icons/folder-routes.svg new file mode 100644 index 0000000..2fb204d --- /dev/null +++ b/public/material-icons/folder-routes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-sass-open.svg b/public/material-icons/folder-sass-open.svg new file mode 100644 index 0000000..0a2a82e --- /dev/null +++ b/public/material-icons/folder-sass-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-sass.svg b/public/material-icons/folder-sass.svg new file mode 100644 index 0000000..6f28731 --- /dev/null +++ b/public/material-icons/folder-sass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-scripts-open.svg b/public/material-icons/folder-scripts-open.svg new file mode 100644 index 0000000..ca49bbb --- /dev/null +++ b/public/material-icons/folder-scripts-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-scripts.svg b/public/material-icons/folder-scripts.svg new file mode 100644 index 0000000..5bcff22 --- /dev/null +++ b/public/material-icons/folder-scripts.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-secure-open.svg b/public/material-icons/folder-secure-open.svg new file mode 100644 index 0000000..163f7da --- /dev/null +++ b/public/material-icons/folder-secure-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-secure.svg b/public/material-icons/folder-secure.svg new file mode 100644 index 0000000..110093f --- /dev/null +++ b/public/material-icons/folder-secure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-server-open.svg b/public/material-icons/folder-server-open.svg new file mode 100644 index 0000000..706b8af --- /dev/null +++ b/public/material-icons/folder-server-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-server.svg b/public/material-icons/folder-server.svg new file mode 100644 index 0000000..4f03f47 --- /dev/null +++ b/public/material-icons/folder-server.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-serverless-open.svg b/public/material-icons/folder-serverless-open.svg new file mode 100644 index 0000000..113f73c --- /dev/null +++ b/public/material-icons/folder-serverless-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-serverless.svg b/public/material-icons/folder-serverless.svg new file mode 100644 index 0000000..226f89d --- /dev/null +++ b/public/material-icons/folder-serverless.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-shared-open.svg b/public/material-icons/folder-shared-open.svg new file mode 100644 index 0000000..6542e7f --- /dev/null +++ b/public/material-icons/folder-shared-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-shared.svg b/public/material-icons/folder-shared.svg new file mode 100644 index 0000000..01e7a17 --- /dev/null +++ b/public/material-icons/folder-shared.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-src-open.svg b/public/material-icons/folder-src-open.svg new file mode 100644 index 0000000..8cd9ee3 --- /dev/null +++ b/public/material-icons/folder-src-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-src-tauri-open.svg b/public/material-icons/folder-src-tauri-open.svg new file mode 100644 index 0000000..969c577 --- /dev/null +++ b/public/material-icons/folder-src-tauri-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-src-tauri.svg b/public/material-icons/folder-src-tauri.svg new file mode 100644 index 0000000..727790c --- /dev/null +++ b/public/material-icons/folder-src-tauri.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-src.svg b/public/material-icons/folder-src.svg new file mode 100644 index 0000000..8d45da9 --- /dev/null +++ b/public/material-icons/folder-src.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-store-open.svg b/public/material-icons/folder-store-open.svg new file mode 100644 index 0000000..13e415b --- /dev/null +++ b/public/material-icons/folder-store-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-store.svg b/public/material-icons/folder-store.svg new file mode 100644 index 0000000..ae29c03 --- /dev/null +++ b/public/material-icons/folder-store.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-storybook-open.svg b/public/material-icons/folder-storybook-open.svg new file mode 100644 index 0000000..9be24b2 --- /dev/null +++ b/public/material-icons/folder-storybook-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-storybook.svg b/public/material-icons/folder-storybook.svg new file mode 100644 index 0000000..26e6246 --- /dev/null +++ b/public/material-icons/folder-storybook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-supabase-open.svg b/public/material-icons/folder-supabase-open.svg new file mode 100644 index 0000000..d58a692 --- /dev/null +++ b/public/material-icons/folder-supabase-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-supabase.svg b/public/material-icons/folder-supabase.svg new file mode 100644 index 0000000..c0c8189 --- /dev/null +++ b/public/material-icons/folder-supabase.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-target-open.svg b/public/material-icons/folder-target-open.svg new file mode 100644 index 0000000..25ce48e --- /dev/null +++ b/public/material-icons/folder-target-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-target.svg b/public/material-icons/folder-target.svg new file mode 100644 index 0000000..41416cf --- /dev/null +++ b/public/material-icons/folder-target.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-tasks-open.svg b/public/material-icons/folder-tasks-open.svg new file mode 100644 index 0000000..ed0e67f --- /dev/null +++ b/public/material-icons/folder-tasks-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-tasks.svg b/public/material-icons/folder-tasks.svg new file mode 100644 index 0000000..1a9ef8a --- /dev/null +++ b/public/material-icons/folder-tasks.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-temp-open.svg b/public/material-icons/folder-temp-open.svg new file mode 100644 index 0000000..ec798b1 --- /dev/null +++ b/public/material-icons/folder-temp-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-temp.svg b/public/material-icons/folder-temp.svg new file mode 100644 index 0000000..3002a86 --- /dev/null +++ b/public/material-icons/folder-temp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-template-open.svg b/public/material-icons/folder-template-open.svg new file mode 100644 index 0000000..e3f822b --- /dev/null +++ b/public/material-icons/folder-template-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-template.svg b/public/material-icons/folder-template.svg new file mode 100644 index 0000000..1d15837 --- /dev/null +++ b/public/material-icons/folder-template.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-terraform-open.svg b/public/material-icons/folder-terraform-open.svg new file mode 100644 index 0000000..fff197b --- /dev/null +++ b/public/material-icons/folder-terraform-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-terraform.svg b/public/material-icons/folder-terraform.svg new file mode 100644 index 0000000..e71fba8 --- /dev/null +++ b/public/material-icons/folder-terraform.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-test-open.svg b/public/material-icons/folder-test-open.svg new file mode 100644 index 0000000..f3fefb3 --- /dev/null +++ b/public/material-icons/folder-test-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-test.svg b/public/material-icons/folder-test.svg new file mode 100644 index 0000000..92bee16 --- /dev/null +++ b/public/material-icons/folder-test.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-tools-open.svg b/public/material-icons/folder-tools-open.svg new file mode 100644 index 0000000..77ecaa8 --- /dev/null +++ b/public/material-icons/folder-tools-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-tools.svg b/public/material-icons/folder-tools.svg new file mode 100644 index 0000000..d591a1f --- /dev/null +++ b/public/material-icons/folder-tools.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-typescript-open.svg b/public/material-icons/folder-typescript-open.svg new file mode 100644 index 0000000..87c8e2f --- /dev/null +++ b/public/material-icons/folder-typescript-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-typescript.svg b/public/material-icons/folder-typescript.svg new file mode 100644 index 0000000..df26f89 --- /dev/null +++ b/public/material-icons/folder-typescript.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-utils-open.svg b/public/material-icons/folder-utils-open.svg new file mode 100644 index 0000000..b894eff --- /dev/null +++ b/public/material-icons/folder-utils-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-utils.svg b/public/material-icons/folder-utils.svg new file mode 100644 index 0000000..fcc7999 --- /dev/null +++ b/public/material-icons/folder-utils.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-vercel-open.svg b/public/material-icons/folder-vercel-open.svg new file mode 100644 index 0000000..a2cf77e --- /dev/null +++ b/public/material-icons/folder-vercel-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-vercel.svg b/public/material-icons/folder-vercel.svg new file mode 100644 index 0000000..335d55f --- /dev/null +++ b/public/material-icons/folder-vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-views-open.svg b/public/material-icons/folder-views-open.svg new file mode 100644 index 0000000..1c785e4 --- /dev/null +++ b/public/material-icons/folder-views-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-views.svg b/public/material-icons/folder-views.svg new file mode 100644 index 0000000..5d41f10 --- /dev/null +++ b/public/material-icons/folder-views.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-vscode-open.svg b/public/material-icons/folder-vscode-open.svg new file mode 100644 index 0000000..82e3a21 --- /dev/null +++ b/public/material-icons/folder-vscode-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-vscode.svg b/public/material-icons/folder-vscode.svg new file mode 100644 index 0000000..07ccbd6 --- /dev/null +++ b/public/material-icons/folder-vscode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-windows-open.svg b/public/material-icons/folder-windows-open.svg new file mode 100644 index 0000000..9173ff9 --- /dev/null +++ b/public/material-icons/folder-windows-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder-windows.svg b/public/material-icons/folder-windows.svg new file mode 100644 index 0000000..184de31 --- /dev/null +++ b/public/material-icons/folder-windows.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/folder.svg b/public/material-icons/folder.svg new file mode 100644 index 0000000..ebf513e --- /dev/null +++ b/public/material-icons/folder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/font.svg b/public/material-icons/font.svg new file mode 100644 index 0000000..961586d --- /dev/null +++ b/public/material-icons/font.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/fsharp.svg b/public/material-icons/fsharp.svg new file mode 100644 index 0000000..1e5b7cf --- /dev/null +++ b/public/material-icons/fsharp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/git.svg b/public/material-icons/git.svg new file mode 100644 index 0000000..c1e08fd --- /dev/null +++ b/public/material-icons/git.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/go-mod.svg b/public/material-icons/go-mod.svg new file mode 100644 index 0000000..1689116 --- /dev/null +++ b/public/material-icons/go-mod.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/go.svg b/public/material-icons/go.svg new file mode 100644 index 0000000..d874e32 --- /dev/null +++ b/public/material-icons/go.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/gradle.svg b/public/material-icons/gradle.svg new file mode 100644 index 0000000..72d88fd --- /dev/null +++ b/public/material-icons/gradle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/graphql.svg b/public/material-icons/graphql.svg new file mode 100644 index 0000000..252b0f7 --- /dev/null +++ b/public/material-icons/graphql.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/gulp.svg b/public/material-icons/gulp.svg new file mode 100644 index 0000000..bc6a77f --- /dev/null +++ b/public/material-icons/gulp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/haskell.svg b/public/material-icons/haskell.svg new file mode 100644 index 0000000..ae44927 --- /dev/null +++ b/public/material-icons/haskell.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/html.svg b/public/material-icons/html.svg new file mode 100644 index 0000000..71caf32 --- /dev/null +++ b/public/material-icons/html.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/image.svg b/public/material-icons/image.svg new file mode 100644 index 0000000..0ca446b --- /dev/null +++ b/public/material-icons/image.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/java.svg b/public/material-icons/java.svg new file mode 100644 index 0000000..0950bc4 --- /dev/null +++ b/public/material-icons/java.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/javascript-map.svg b/public/material-icons/javascript-map.svg new file mode 100644 index 0000000..a1fcc22 --- /dev/null +++ b/public/material-icons/javascript-map.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/javascript.svg b/public/material-icons/javascript.svg new file mode 100644 index 0000000..254704a --- /dev/null +++ b/public/material-icons/javascript.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/jest.svg b/public/material-icons/jest.svg new file mode 100644 index 0000000..fb40ecb --- /dev/null +++ b/public/material-icons/jest.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/jsconfig.svg b/public/material-icons/jsconfig.svg new file mode 100644 index 0000000..5aef481 --- /dev/null +++ b/public/material-icons/jsconfig.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/json.svg b/public/material-icons/json.svg new file mode 100644 index 0000000..2590b94 --- /dev/null +++ b/public/material-icons/json.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/julia.svg b/public/material-icons/julia.svg new file mode 100644 index 0000000..39fca63 --- /dev/null +++ b/public/material-icons/julia.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/key.svg b/public/material-icons/key.svg new file mode 100644 index 0000000..08f67af --- /dev/null +++ b/public/material-icons/key.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/kotlin.svg b/public/material-icons/kotlin.svg new file mode 100644 index 0000000..740505c --- /dev/null +++ b/public/material-icons/kotlin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/less.svg b/public/material-icons/less.svg new file mode 100644 index 0000000..2e13a3c --- /dev/null +++ b/public/material-icons/less.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/license.svg b/public/material-icons/license.svg new file mode 100644 index 0000000..08d7d72 --- /dev/null +++ b/public/material-icons/license.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/lock.svg b/public/material-icons/lock.svg new file mode 100644 index 0000000..ca49d02 --- /dev/null +++ b/public/material-icons/lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/lua.svg b/public/material-icons/lua.svg new file mode 100644 index 0000000..ca7a3d5 --- /dev/null +++ b/public/material-icons/lua.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/makefile.svg b/public/material-icons/makefile.svg new file mode 100644 index 0000000..e211671 --- /dev/null +++ b/public/material-icons/makefile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/markdown.svg b/public/material-icons/markdown.svg new file mode 100644 index 0000000..4c22434 --- /dev/null +++ b/public/material-icons/markdown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/maven.svg b/public/material-icons/maven.svg new file mode 100644 index 0000000..7a88745 --- /dev/null +++ b/public/material-icons/maven.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/mdx.svg b/public/material-icons/mdx.svg new file mode 100644 index 0000000..b2ab561 --- /dev/null +++ b/public/material-icons/mdx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/netlify.svg b/public/material-icons/netlify.svg new file mode 100644 index 0000000..27c837f --- /dev/null +++ b/public/material-icons/netlify.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/next.svg b/public/material-icons/next.svg new file mode 100644 index 0000000..83fee37 --- /dev/null +++ b/public/material-icons/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/nim.svg b/public/material-icons/nim.svg new file mode 100644 index 0000000..d985bb4 --- /dev/null +++ b/public/material-icons/nim.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/nodejs.svg b/public/material-icons/nodejs.svg new file mode 100644 index 0000000..ba73901 --- /dev/null +++ b/public/material-icons/nodejs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/nuxt.svg b/public/material-icons/nuxt.svg new file mode 100644 index 0000000..babf919 --- /dev/null +++ b/public/material-icons/nuxt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/ocaml.svg b/public/material-icons/ocaml.svg new file mode 100644 index 0000000..cb6eb6b --- /dev/null +++ b/public/material-icons/ocaml.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/pdf.svg b/public/material-icons/pdf.svg new file mode 100644 index 0000000..1c84fe8 --- /dev/null +++ b/public/material-icons/pdf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/perl.svg b/public/material-icons/perl.svg new file mode 100644 index 0000000..0534cad --- /dev/null +++ b/public/material-icons/perl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/php.svg b/public/material-icons/php.svg new file mode 100644 index 0000000..1d7e336 --- /dev/null +++ b/public/material-icons/php.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/pnpm.svg b/public/material-icons/pnpm.svg new file mode 100644 index 0000000..fc52c6e --- /dev/null +++ b/public/material-icons/pnpm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/powershell.svg b/public/material-icons/powershell.svg new file mode 100644 index 0000000..a266393 --- /dev/null +++ b/public/material-icons/powershell.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/prettier.svg b/public/material-icons/prettier.svg new file mode 100644 index 0000000..a6cda34 --- /dev/null +++ b/public/material-icons/prettier.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/prisma.svg b/public/material-icons/prisma.svg new file mode 100644 index 0000000..121abea --- /dev/null +++ b/public/material-icons/prisma.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/proto.svg b/public/material-icons/proto.svg new file mode 100644 index 0000000..7757c0e --- /dev/null +++ b/public/material-icons/proto.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/python.svg b/public/material-icons/python.svg new file mode 100644 index 0000000..20c2508 --- /dev/null +++ b/public/material-icons/python.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/r.svg b/public/material-icons/r.svg new file mode 100644 index 0000000..5703dd0 --- /dev/null +++ b/public/material-icons/r.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/react.svg b/public/material-icons/react.svg new file mode 100644 index 0000000..ced90db --- /dev/null +++ b/public/material-icons/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/react_ts.svg b/public/material-icons/react_ts.svg new file mode 100644 index 0000000..887f72c --- /dev/null +++ b/public/material-icons/react_ts.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/readme.svg b/public/material-icons/readme.svg new file mode 100644 index 0000000..943d08f --- /dev/null +++ b/public/material-icons/readme.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/rollup.svg b/public/material-icons/rollup.svg new file mode 100644 index 0000000..7fa0153 --- /dev/null +++ b/public/material-icons/rollup.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/ruby.svg b/public/material-icons/ruby.svg new file mode 100644 index 0000000..2e3215d --- /dev/null +++ b/public/material-icons/ruby.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/rust.svg b/public/material-icons/rust.svg new file mode 100644 index 0000000..b382aa4 --- /dev/null +++ b/public/material-icons/rust.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/sass.svg b/public/material-icons/sass.svg new file mode 100644 index 0000000..6f39acb --- /dev/null +++ b/public/material-icons/sass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/scala.svg b/public/material-icons/scala.svg new file mode 100644 index 0000000..08e0c2d --- /dev/null +++ b/public/material-icons/scala.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/settings.svg b/public/material-icons/settings.svg new file mode 100644 index 0000000..dc701ae --- /dev/null +++ b/public/material-icons/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/storybook.svg b/public/material-icons/storybook.svg new file mode 100644 index 0000000..8a4bdea --- /dev/null +++ b/public/material-icons/storybook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/svelte.svg b/public/material-icons/svelte.svg new file mode 100644 index 0000000..4b14a6f --- /dev/null +++ b/public/material-icons/svelte.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/svg.svg b/public/material-icons/svg.svg new file mode 100644 index 0000000..fbaf9e5 --- /dev/null +++ b/public/material-icons/svg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/swift.svg b/public/material-icons/swift.svg new file mode 100644 index 0000000..df413c8 --- /dev/null +++ b/public/material-icons/swift.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/tailwindcss.svg b/public/material-icons/tailwindcss.svg new file mode 100644 index 0000000..a55450d --- /dev/null +++ b/public/material-icons/tailwindcss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/toml.svg b/public/material-icons/toml.svg new file mode 100644 index 0000000..aa4f24c --- /dev/null +++ b/public/material-icons/toml.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/tsconfig.svg b/public/material-icons/tsconfig.svg new file mode 100644 index 0000000..817fb8d --- /dev/null +++ b/public/material-icons/tsconfig.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/turborepo.svg b/public/material-icons/turborepo.svg new file mode 100644 index 0000000..f0e5449 --- /dev/null +++ b/public/material-icons/turborepo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/typescript-def.svg b/public/material-icons/typescript-def.svg new file mode 100644 index 0000000..a9ef958 --- /dev/null +++ b/public/material-icons/typescript-def.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/typescript.svg b/public/material-icons/typescript.svg new file mode 100644 index 0000000..acaf0dd --- /dev/null +++ b/public/material-icons/typescript.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/vercel.svg b/public/material-icons/vercel.svg new file mode 100644 index 0000000..8ff6e49 --- /dev/null +++ b/public/material-icons/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/video.svg b/public/material-icons/video.svg new file mode 100644 index 0000000..2ade126 --- /dev/null +++ b/public/material-icons/video.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/vite.svg b/public/material-icons/vite.svg new file mode 100644 index 0000000..3f35407 --- /dev/null +++ b/public/material-icons/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/vitest.svg b/public/material-icons/vitest.svg new file mode 100644 index 0000000..a527ee0 --- /dev/null +++ b/public/material-icons/vitest.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/vue-config.svg b/public/material-icons/vue-config.svg new file mode 100644 index 0000000..bfe01c2 --- /dev/null +++ b/public/material-icons/vue-config.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/vue.svg b/public/material-icons/vue.svg new file mode 100644 index 0000000..359f899 --- /dev/null +++ b/public/material-icons/vue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/webpack.svg b/public/material-icons/webpack.svg new file mode 100644 index 0000000..68233d9 --- /dev/null +++ b/public/material-icons/webpack.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/xml.svg b/public/material-icons/xml.svg new file mode 100644 index 0000000..c3a1eaf --- /dev/null +++ b/public/material-icons/xml.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/yaml.svg b/public/material-icons/yaml.svg new file mode 100644 index 0000000..1f1cc7c --- /dev/null +++ b/public/material-icons/yaml.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/yarn.svg b/public/material-icons/yarn.svg new file mode 100644 index 0000000..9af575c --- /dev/null +++ b/public/material-icons/yarn.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/zig.svg b/public/material-icons/zig.svg new file mode 100644 index 0000000..b5604df --- /dev/null +++ b/public/material-icons/zig.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/material-icons/zip.svg b/public/material-icons/zip.svg new file mode 100644 index 0000000..1056c60 --- /dev/null +++ b/public/material-icons/zip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/notification-sw.js b/public/notification-sw.js new file mode 100644 index 0000000..74cf9a7 --- /dev/null +++ b/public/notification-sw.js @@ -0,0 +1,39 @@ +// ============================================ +// Notification Service Worker +// ============================================ +// 专门用于显示通知(Android Chrome 不支持 new Notification()) +// 不做缓存、不拦截 fetch,只处理通知相关事件 + +self.addEventListener('notificationclick', event => { + event.notification.close() + + const data = event.notification.data + if (!data) return + + // 构建跳转 URL + let url = '/' + if (data.sessionId) { + const dir = data.directory ? `?dir=${data.directory}` : '' + url = `/#/session/${data.sessionId}${dir}` + } + + // 聚焦已有窗口或打开新窗口 + event.waitUntil( + clients.matchAll({ type: 'window', includeUncontrolled: true }).then(windowClients => { + // 找到同源的已有窗口 + for (const client of windowClients) { + if (client.url.startsWith(self.location.origin) && 'focus' in client) { + // 导航到目标 session + client.postMessage({ + type: 'notification-click', + sessionId: data.sessionId, + directory: data.directory, + }) + return client.focus() + } + } + // 没有已有窗口,打开新的 + return clients.openWindow(url) + }), + ) +}) diff --git a/public/pi.svg b/public/pi.svg new file mode 100644 index 0000000..87a0d98 --- /dev/null +++ b/public/pi.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/public/piagentui-logo.png b/public/piagentui-logo.png new file mode 100644 index 0000000..73541c3 Binary files /dev/null and b/public/piagentui-logo.png differ diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/scripts/bump-version.mjs b/scripts/bump-version.mjs new file mode 100644 index 0000000..1f3dea3 --- /dev/null +++ b/scripts/bump-version.mjs @@ -0,0 +1,204 @@ +#!/usr/bin/env node + +/** + * bump-version.mjs - One-command version bump for OpenCodeUI + * + * Usage: + * node scripts/bump-version.mjs + * + * Examples: + * node scripts/bump-version.mjs 0.2.0 # stable release + * node scripts/bump-version.mjs 0.2.1-canary.1 # canary release + * + * What it does: + * 1. Updates version in package.json, src-tauri/Cargo.toml, src-tauri/tauri.conf.json + * 2. Prepends a new entry to CHANGELOG.md with git log since last tag + * 3. Prints the git commands you need to run next (tag + push) + */ + +import { readFileSync, writeFileSync, existsSync } from 'fs' +import { execSync } from 'child_process' +import { resolve, dirname } from 'path' +import { fileURLToPath } from 'url' + +const __dirname = dirname(fileURLToPath(import.meta.url)) +const root = resolve(__dirname, '..') + +// --------------------------------------------------------------------------- +// Parse args +// --------------------------------------------------------------------------- +const version = process.argv[2] + +if (!version) { + console.error('Usage: node scripts/bump-version.mjs ') + console.error(' e.g. node scripts/bump-version.mjs 0.2.0') + console.error(' e.g. node scripts/bump-version.mjs 0.2.1-canary.1') + process.exit(1) +} + +// Basic semver validation (with optional prerelease) +const semverRe = /^\d+\.\d+\.\d+(-[a-zA-Z0-9]+(\.\d+)?)?$/ +if (!semverRe.test(version)) { + console.error(`Invalid semver: "${version}"`) + console.error('Expected format: MAJOR.MINOR.PATCH or MAJOR.MINOR.PATCH-prerelease.N') + process.exit(1) +} + +const tagName = `v${version}` +const today = new Date().toISOString().slice(0, 10) +const isPrerelease = version.includes('-') +const stableTagRe = /^v\d+\.\d+\.\d+$/ +const existingChangelogPath = resolve(root, 'CHANGELOG.md') +const lineEnding = + existsSync(existingChangelogPath) && /\r\n/.test(readFileSync(existingChangelogPath, 'utf-8')) ? '\r\n' : '\n' + +function formatWithPrettier(relativePath) { + execSync(`npx prettier --write "${relativePath}"`, { + cwd: root, + stdio: 'pipe', + }) +} + +function replaceCargoPackageVersion(lockContent, packageName, nextVersion) { + const packageBlocks = lockContent.split('[[package]]') + const updatedBlocks = packageBlocks.map((block, index) => { + if (index === 0) return block + if (!block.includes(`name = "${packageName}"`)) return block + return block.replace(/^(version\s*=\s*)"[^"]*"/m, `$1"${nextVersion}"`) + }) + return updatedBlocks.join('[[package]]') +} + +function getReleaseBaseTag() { + if (isPrerelease) { + return execSync('git describe --tags --abbrev=0 2>/dev/null', { + encoding: 'utf-8', + cwd: root, + }).trim() + } + + const mergedTags = execSync('git tag --merged HEAD --sort=-v:refname', { + encoding: 'utf-8', + cwd: root, + }) + .split(/\r?\n/) + .map(tag => tag.trim()) + .filter(Boolean) + + const lastStableTag = mergedTags.find(tag => stableTagRe.test(tag) && tag !== tagName) + if (!lastStableTag) { + throw new Error('No previous stable tag found') + } + + return lastStableTag +} + +// --------------------------------------------------------------------------- +// 1. Update package.json +// --------------------------------------------------------------------------- +const pkgPath = resolve(root, 'package.json') +const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) +const oldVersion = pkg.version + +execSync(`npm version ${version} --no-git-tag-version --allow-same-version`, { + cwd: root, + stdio: 'pipe', +}) +console.log(` package.json ${oldVersion} -> ${version}`) +console.log(` package-lock.json ${oldVersion} -> ${version}`) + +// --------------------------------------------------------------------------- +// 2. Update src-tauri/Cargo.toml +// --------------------------------------------------------------------------- +const cargoPath = resolve(root, 'src-tauri/Cargo.toml') +let cargo = readFileSync(cargoPath, 'utf-8') +const cargoPackageNameMatch = cargo.match(/^(name\s*=\s*)"([^"]+)"/m) +const cargoPackageName = cargoPackageNameMatch?.[2] +cargo = cargo.replace(/^(version\s*=\s*)"[^"]*"/m, `$1"${version}"`) +writeFileSync(cargoPath, cargo) +console.log(` src-tauri/Cargo.toml ${oldVersion} -> ${version}`) + +// --------------------------------------------------------------------------- +// 3. Update src-tauri/tauri.conf.json +// --------------------------------------------------------------------------- +const tauriConfPath = resolve(root, 'src-tauri/tauri.conf.json') +const tauriConf = JSON.parse(readFileSync(tauriConfPath, 'utf-8')) +tauriConf.version = version +writeFileSync(tauriConfPath, JSON.stringify(tauriConf, null, 2) + '\n') +formatWithPrettier('src-tauri/tauri.conf.json') +console.log(` src-tauri/tauri.conf ${oldVersion} -> ${version}`) + +// --------------------------------------------------------------------------- +// 4. Update src-tauri/Cargo.lock (workspace package entry) +// --------------------------------------------------------------------------- +const cargoLockPath = resolve(root, 'src-tauri/Cargo.lock') +if (cargoPackageName && existsSync(cargoLockPath)) { + const cargoLock = readFileSync(cargoLockPath, 'utf-8') + const updatedCargoLock = replaceCargoPackageVersion(cargoLock, cargoPackageName, version) + if (updatedCargoLock !== cargoLock) { + writeFileSync(cargoLockPath, updatedCargoLock) + console.log(` src-tauri/Cargo.lock ${oldVersion} -> ${version}`) + } +} + +// --------------------------------------------------------------------------- +// 5. Generate changelog entry from git log +// --------------------------------------------------------------------------- +let commits = '' +try { + // Stable release: compare from previous stable tag. + // Pre-release: compare from the latest reachable tag. + const lastTag = getReleaseBaseTag() + + commits = execSync(`git log ${lastTag}..HEAD --pretty=format:"- %s (%h)" --no-merges`, { + encoding: 'utf-8', + cwd: root, + }).trim() +} catch { + // No previous tag — include all commits + try { + commits = execSync('git log --pretty=format:"- %s (%h)" --no-merges', { + encoding: 'utf-8', + cwd: root, + }).trim() + } catch { + commits = '- Initial release' + } +} + +if (!commits) { + commits = '- No changes since last tag' +} + +const releaseType = isPrerelease ? ' (Pre-release)' : '' +const changelogEntry = `## [${tagName}] - ${today}${releaseType}${lineEnding}${lineEnding}${commits.replace(/\n/g, lineEnding)}${lineEnding}` + +const changelogPath = resolve(root, 'CHANGELOG.md') +if (existsSync(changelogPath)) { + const existing = readFileSync(changelogPath, 'utf-8') + const headerSeparator = existing.match(/\r?\n\r?\n/) + if (headerSeparator) { + const headerEnd = existing.indexOf(headerSeparator[0]) + const separatorLength = headerSeparator[0].length + const header = existing.slice(0, headerEnd + separatorLength) + const body = existing.slice(headerEnd + separatorLength) + writeFileSync(changelogPath, header + changelogEntry + lineEnding + body) + } else { + writeFileSync(changelogPath, existing + lineEnding + changelogEntry) + } +} else { + writeFileSync(changelogPath, `# Changelog${lineEnding}${lineEnding}${changelogEntry}`) +} +console.log(` CHANGELOG.md added entry for ${tagName}`) + +// --------------------------------------------------------------------------- +// 6. Print next steps +// --------------------------------------------------------------------------- +console.log(` +Done! Next steps: + + git add -A + git commit -m "chore: bump version to ${version}" + git tag ${tagName} + git push && git push origin ${tagName} +`) diff --git a/scripts/copy-material-icons.mjs b/scripts/copy-material-icons.mjs new file mode 100644 index 0000000..dce4b74 --- /dev/null +++ b/scripts/copy-material-icons.mjs @@ -0,0 +1,70 @@ +/** + * Copy only the material-icon-theme SVGs that are actually referenced + * by src/utils/materialIcons.ts to public/material-icons/. + * + * Runs automatically via postinstall hook. + */ + +import { copyFileSync, mkdirSync, existsSync, readFileSync, rmSync } from 'fs' +import { resolve, dirname } from 'path' +import { fileURLToPath } from 'url' + +const __dirname = dirname(fileURLToPath(import.meta.url)) +const root = resolve(__dirname, '..') + +const srcDir = resolve(root, 'node_modules/material-icon-theme/icons') +const destDir = resolve(root, 'public/material-icons') + +if (!existsSync(srcDir)) { + console.warn('[copy-material-icons] Source not found, skipping:', srcDir) + process.exit(0) +} + +// Parse materialIcons.ts to extract every icon name referenced +const tsSource = readFileSync(resolve(root, 'src/utils/materialIcons.ts'), 'utf-8') + +const icons = new Set() + +// Icon values after colon: 'icon-name' +for (const m of tsSource.matchAll(/:\s*'([a-z0-9_-]+)'/g)) { + icons.add(m[1]) +} +// Array items [ext, icon] +for (const m of tsSource.matchAll(/\[\s*'[^']+'\s*,\s*'([a-z0-9_-]+)'\s*\]/g)) { + icons.add(m[1]) +} +// Defaults +icons.add('file') +icons.add('folder') +icons.add('folder-open') + +// Folder icons need both base and -open variants +for (const icon of [...icons]) { + if (icon.startsWith('folder-') && !icon.endsWith('-open')) { + icons.add(icon + '-open') + } +} + +// Clean destination and copy only needed files +if (existsSync(destDir)) { + rmSync(destDir, { recursive: true }) +} +mkdirSync(destDir, { recursive: true }) + +let copied = 0 +let missing = 0 +for (const icon of icons) { + const srcPath = resolve(srcDir, icon + '.svg') + const destPath = resolve(destDir, icon + '.svg') + if (existsSync(srcPath)) { + copyFileSync(srcPath, destPath) + copied++ + } else { + console.warn(` [WARN] Missing: ${icon}.svg`) + missing++ + } +} + +console.log( + `[copy-material-icons] Copied ${copied} icons to public/material-icons/` + (missing ? ` (${missing} missing)` : ''), +) diff --git a/scripts/dev-android.sh b/scripts/dev-android.sh new file mode 100644 index 0000000..cfafc3e --- /dev/null +++ b/scripts/dev-android.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +# Set environment variables for Android development +export ANDROID_HOME="/e/app/Android/Sdk" +export NDK_HOME="/e/app/Android/Sdk/ndk/29.0.14206865" +export JAVA_HOME="/e/app/Android/Android Studio/jbr" +export PATH="$HOME/.cargo/bin:$PATH" + +echo "Checking connected Android devices..." +adb devices + +echo "Starting Tauri Android Dev..." +npm run tauri android dev diff --git a/scripts/prepare-release.mjs b/scripts/prepare-release.mjs new file mode 100644 index 0000000..06fa03a --- /dev/null +++ b/scripts/prepare-release.mjs @@ -0,0 +1,94 @@ +#!/usr/bin/env node + +/** + * prepare-release.mjs - Validate before version bumping + * + * Usage: + * node scripts/prepare-release.mjs + * node scripts/prepare-release.mjs --skip-validate + * + * What it does: + * 1. Ensures the git worktree is clean before starting + * 2. Runs `npm run validate` by default + * 3. Runs bump-version.mjs to update release files + * 4. Prints the remaining git steps (commit, tag, push) + */ + +import { execSync } from 'child_process' +import { dirname, resolve } from 'path' +import { fileURLToPath } from 'url' + +const __dirname = dirname(fileURLToPath(import.meta.url)) +const root = resolve(__dirname, '..') + +const args = process.argv.slice(2) +const showHelp = args.includes('--help') || args.includes('-h') +const skipValidate = args.includes('--skip-validate') +const version = args.find(arg => !arg.startsWith('-')) + +if (showHelp || !version) { + console.log('Usage: node scripts/prepare-release.mjs [--skip-validate]') + console.log(' e.g. node scripts/prepare-release.mjs 0.2.0') + console.log(' e.g. node scripts/prepare-release.mjs 0.2.1-canary.1') + process.exit(showHelp ? 0 : 1) +} + +const tagName = `v${version}` + +function run(command, label) { + console.log(`\n> ${label}`) + execSync(command, { cwd: root, stdio: 'inherit' }) +} + +function read(command) { + return execSync(command, { + cwd: root, + encoding: 'utf-8', + stdio: ['ignore', 'pipe', 'pipe'], + }).trim() +} + +const worktreeStatus = read('git status --short') +if (worktreeStatus) { + console.error('Release preparation requires a clean git worktree.') + console.error('Please commit, stash, or discard local changes first.') + process.exit(1) +} + +try { + const localTag = read(`git tag -l ${tagName}`) + if (localTag === tagName) { + console.error(`Tag ${tagName} already exists locally.`) + process.exit(1) + } +} catch { + // Ignore local tag lookup failures and continue. +} + +try { + const remoteTag = read(`git ls-remote --tags origin refs/tags/${tagName}`) + if (remoteTag) { + console.error(`Tag ${tagName} already exists on origin.`) + process.exit(1) + } +} catch { + // If origin is unavailable, let later git commands surface the real error. +} + +if (!skipValidate) { + run('npm run validate', 'Running release validation') +} else { + console.log('\n> Skipping release validation (--skip-validate)') +} + +run(`node scripts/bump-version.mjs ${version}`, `Preparing release ${tagName}`) + +console.log(` +Release preparation finished for ${tagName}. + +Next steps: + git add -A + git commit -m "chore: bump version to ${version}" + git tag ${tagName} + git push && git push origin ${tagName} +`) diff --git a/src-router/Cargo.lock b/src-router/Cargo.lock new file mode 100644 index 0000000..c75e1e4 --- /dev/null +++ b/src-router/Cargo.lock @@ -0,0 +1,930 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "anstream" +version = "0.6.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" + +[[package]] +name = "anstyle-parse" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "axum" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" +dependencies = [ + "axum-core", + "bytes", + "form_urlencoded", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "serde_core", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" + +[[package]] +name = "bytes" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "colorchoice" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" + +[[package]] +name = "env_filter" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a1c3cc8e57274ec99de65301228b537f1e4eedc1b8e0f9411c6caac8ae7308f" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "env_logger" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2daee4ea451f429a58296525ddf28b45a3b64f1acf6587e2067437bb11e218d" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "jiff", + "log", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + +[[package]] +name = "futures-sink" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "slab", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + +[[package]] +name = "h2" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "http" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "bytes", + "http", + "http-body", + "hyper", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + +[[package]] +name = "itoa" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" + +[[package]] +name = "jiff" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a3546dc96b6d42c5f24902af9e2538e82e39ad350b0c766eb3fbf2d8f3d8359" +dependencies = [ + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", +] + +[[package]] +name = "jiff-static" +version = "0.2.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "libc" +version = "0.2.183" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + +[[package]] +name = "memchr" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mio" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +dependencies = [ + "libc", + "wasi", + "windows-sys", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + +[[package]] +name = "opencodeui-router" +version = "0.1.0" +dependencies = [ + "axum", + "base64", + "env_logger", + "log", + "rand", + "serde", + "serde_json", + "tokio", +] + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "portable-atomic" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" + +[[package]] +name = "portable-atomic-util" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "091397be61a01d4be58e7841595bd4bfedb15f1cd54977d79b8271e94ed799a3" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" + +[[package]] +name = "ryu" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" +dependencies = [ + "itoa", + "serde", + "serde_core", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "syn" +version = "2.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" + +[[package]] +name = "tokio" +version = "1.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys", +] + +[[package]] +name = "tokio-macros" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "log", + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.2+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" + +[[package]] +name = "zerocopy" +version = "0.8.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2578b716f8a7a858b7f02d5bd870c14bf4ddbbcf3a4c05414ba6503640505e3" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e6cc098ea4d3bd6246687de65af3f920c430e236bee1e3bf2e441463f08a02f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/src-router/Cargo.toml b/src-router/Cargo.toml new file mode 100644 index 0000000..f6c4aca --- /dev/null +++ b/src-router/Cargo.toml @@ -0,0 +1,29 @@ +[package] +name = "opencodeui-router" +version = "0.1.0" +edition = "2024" + +[dependencies] +axum = { version = "0.8.8", features = ["http2"] } +base64 = "0.22.1" +env_logger = "0.11.8" +log = { version = "0.4.29", features = ["release_max_level_info"] } +rand = "0.9.2" +serde = { version = "1.0.228", features = ["derive"] } +serde_json = "1.0.149" +tokio = { version = "1.50.0", features = [ + "fs", + "process", + "macros", + "net", + "parking_lot", + "rt-multi-thread", + "signal", + "time" +] } + +[profile.release] +strip = true +lto = "thin" +panic = "abort" +codegen-units = 1 diff --git a/src-router/src/caddy.rs b/src-router/src/caddy.rs new file mode 100644 index 0000000..eb47c16 --- /dev/null +++ b/src-router/src/caddy.rs @@ -0,0 +1,71 @@ +use std::{collections::BTreeMap, path::Path}; + +use tokio::fs; + +use crate::{ + config::{Config, PREVIEW_FILE, ROUTES_FILE}, + scanner, + state::RouteInfo, +}; + +pub(crate) async fn write_map( + config: &Config, + routes: &BTreeMap, +) -> Result<(), String> { + ensure_parent_dir(ROUTES_FILE).await?; + + let mut lines = vec!["# Dynamic routes (auto generated by router)".to_string()]; + + for (token, info) in routes { + lines.push(format!("@route_{token} path /p/{token} /p/{token}/*")); + lines.push(format!("handle @route_{token} {{")); + lines.push(format!("\turi strip_prefix /p/{token}")); + lines.push(format!( + "\treverse_proxy {}:{}", + config.target_container(), + info.port + )); + lines.push("}".to_string()); + lines.push(String::new()); + } + + fs::write(ROUTES_FILE, lines.join("\n") + "\n") + .await + .map_err(|err| err.to_string()) +} + +pub(crate) async fn write_preview_conf(config: &Config, port: Option) -> Result<(), String> { + ensure_parent_dir(PREVIEW_FILE).await?; + + let body = match port { + Some(port) => format!( + "# Preview proxy (auto generated by router)\nreverse_proxy {}:{}\n", + config.target_container(), + port + ), + None => concat!( + "# Preview proxy (no port selected)\n", + "respond \"No preview port configured. Set one from the Routes panel.\" 503\n" + ) + .to_string(), + }; + + fs::write(PREVIEW_FILE, body) + .await + .map_err(|err| err.to_string()) +} + +pub(crate) async fn reload_gateway() -> Result<(), String> { + scanner::run_cmd(&["caddy", "reload", "--config", "/etc/caddy/Caddyfile"]).await?; + Ok(()) +} + +async fn ensure_parent_dir(path: &str) -> Result<(), String> { + let Some(parent) = Path::new(path).parent() else { + return Ok(()); + }; + + fs::create_dir_all(parent) + .await + .map_err(|err| err.to_string()) +} diff --git a/src-router/src/config.rs b/src-router/src/config.rs new file mode 100644 index 0000000..560f927 --- /dev/null +++ b/src-router/src/config.rs @@ -0,0 +1,127 @@ +use std::{collections::HashSet, env}; + +pub(crate) const ROUTES_FILE: &str = "/etc/caddy/routes.conf"; +pub(crate) const PREVIEW_FILE: &str = "/etc/caddy/preview.conf"; + +#[derive(Clone, Debug)] +pub struct Config { + target_container: String, + router_state_file: String, + public_base_url: String, + preview_domain: String, + router_username: String, + router_password: String, + scan_interval: u64, + token_length: usize, + port_range: (u16, u16), + exclude_ports: HashSet, +} + +impl Config { + pub fn from_env() -> Self { + Self { + target_container: env::var("TARGET_CONTAINER") + .unwrap_or_else(|_| "opencode-backend".to_string()), + router_state_file: env::var("ROUTER_STATE_FILE") + .unwrap_or_else(|_| "/data/routes.json".to_string()), + public_base_url: env::var("PUBLIC_BASE_URL") + .map(|value| value.trim_end_matches('/').to_string()) + .unwrap_or_default(), + preview_domain: env::var("PREVIEW_DOMAIN") + .map(|value| value.trim().to_string()) + .unwrap_or_default(), + router_username: env::var("ROUTER_USERNAME").unwrap_or_default(), + router_password: env::var("ROUTER_PASSWORD").unwrap_or_default(), + scan_interval: parse_u64_env("ROUTER_SCAN_INTERVAL", 5), + token_length: parse_usize_env("ROUTER_TOKEN_LENGTH", 12), + port_range: parse_port_range( + env::var("ROUTER_PORT_RANGE") + .ok() + .as_deref() + .unwrap_or("3000-9999"), + ), + exclude_ports: parse_exclude_ports( + env::var("ROUTER_EXCLUDE_PORTS") + .ok() + .as_deref() + .unwrap_or("4096"), + ), + } + } + + pub fn target_container(&self) -> &str { + &self.target_container + } + + pub fn router_state_file(&self) -> &str { + &self.router_state_file + } + + pub fn public_base_url(&self) -> &str { + &self.public_base_url + } + + pub fn preview_domain(&self) -> &str { + &self.preview_domain + } + + pub fn router_username(&self) -> &str { + &self.router_username + } + + pub fn router_password(&self) -> &str { + &self.router_password + } + + pub fn scan_interval(&self) -> u64 { + self.scan_interval + } + + pub fn token_length(&self) -> usize { + self.token_length + } + + pub fn port_range(&self) -> (u16, u16) { + self.port_range + } + + pub fn exclude_ports(&self) -> &HashSet { + &self.exclude_ports + } +} + +fn parse_u64_env(name: &str, default: u64) -> u64 { + env::var(name) + .ok() + .and_then(|value| value.parse::().ok()) + .unwrap_or(default) +} + +fn parse_usize_env(name: &str, default: usize) -> usize { + env::var(name) + .ok() + .and_then(|value| value.parse::().ok()) + .unwrap_or(default) +} + +fn parse_port_range(value: &str) -> (u16, u16) { + let Some((start, end)) = value.split_once('-') else { + return (3000, 9999); + }; + + let mut start = start.trim().parse::().unwrap_or(3000); + let mut end = end.trim().parse::().unwrap_or(9999); + + if start > end { + std::mem::swap(&mut start, &mut end); + } + + (start, end) +} + +fn parse_exclude_ports(value: &str) -> HashSet { + value + .split(',') + .filter_map(|item| item.trim().parse::().ok()) + .collect() +} diff --git a/src-router/src/main.rs b/src-router/src/main.rs new file mode 100644 index 0000000..29a2b01 --- /dev/null +++ b/src-router/src/main.rs @@ -0,0 +1,36 @@ +mod caddy; +mod config; +mod router; +mod scanner; +mod state; + +use std::{net::SocketAddr, sync::Arc}; + +use config::Config; +use router::AppState; + +#[tokio::main] +async fn main() { + env_logger::init(); + + let config = Arc::new(Config::from_env()); + let state = Arc::new(AppState::new(config)); + + state.initialize().await; + state.spawn_sync_loop(); + + let app = router::app(state); + let addr = SocketAddr::from(([0, 0, 0, 0], 7070)); + + log::info!("Router starting on {}", addr); + + let listener = tokio::net::TcpListener::bind(addr).await.unwrap(); + axum::serve(listener, app) + .with_graceful_shutdown(shutdown_signal()) + .await + .unwrap(); +} + +async fn shutdown_signal() { + let _ = tokio::signal::ctrl_c().await; +} diff --git a/src-router/src/router.html b/src-router/src/router.html new file mode 100644 index 0000000..2ee52c5 --- /dev/null +++ b/src-router/src/router.html @@ -0,0 +1,730 @@ + + + + + + Routes - OpenCode + + + +
+
+
+
Routes
+
+ + 0 active +
+
+
+ + + +
+
+ +
+ +
+ + + + + +
+ +
+
+
+ + + + diff --git a/src-router/src/router.rs b/src-router/src/router.rs new file mode 100644 index 0000000..360be79 --- /dev/null +++ b/src-router/src/router.rs @@ -0,0 +1,396 @@ +use std::{ + collections::HashSet, + sync::Arc, + time::{Duration, SystemTime, UNIX_EPOCH}, +}; + +use axum::{ + Json, Router, + extract::{Query, State}, + http::{HeaderMap, HeaderValue, StatusCode, header}, + response::{Html, IntoResponse, Response}, + routing::{get, post}, +}; +use base64::{Engine as _, engine::general_purpose::STANDARD}; +use rand::{Rng, distr::Alphanumeric, rng}; +use serde::{Deserialize, Serialize}; +use serde_json::{Map, Value, json}; +use tokio::{ + sync::RwLock, + time::{MissedTickBehavior, interval}, +}; + +use crate::{ + caddy, + config::Config, + scanner, + state::{self, RouteInfo}, +}; + +const HTML_TEMPLATE: &str = include_str!("router.html"); + +#[derive(Clone)] +pub struct AppState { + config: Arc, + /// In-memory cache of the full state map (routes + preview port). + /// All reads/writes go through this lock; disk is only for persistence. + state_map: Arc>>, + preview_port: Arc>>, +} + +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +struct RoutePayloadItem { + token: String, + port: u16, + public_url: String, + created_at: u64, +} + +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +struct RoutesPayload { + routes: Vec, + preview_port: Option, + preview_domain: Option, +} + +#[derive(Debug, Deserialize)] +struct PreviewSetRequest { + port: Option, +} + +#[derive(Debug, Deserialize)] +struct RoutesQuery { + format: Option, +} + +impl AppState { + pub fn new(config: Arc) -> Self { + Self { + config, + state_map: Arc::new(RwLock::new(Map::new())), + preview_port: Arc::new(RwLock::new(None)), + } + } + + pub async fn initialize(&self) { + let state_map = state::load_state_map(self.config.router_state_file()).await; + let preview_port = state::load_preview_port(&state_map); + + { + let mut cached = self.state_map.write().await; + *cached = state_map; + } + { + let mut current = self.preview_port.write().await; + *current = preview_port; + } + + if let Err(err) = caddy::write_preview_conf(&self.config, preview_port).await { + log::error!("Failed to write preview config: {}", err); + } + + if let Some(port) = preview_port { + log::info!("Restored preview port: {}", port); + } + } + + pub fn spawn_sync_loop(self: &Arc) { + let state = Arc::clone(self); + tokio::spawn(async move { + log::info!( + "Route scanner started (interval={}s, target={}, range={}-{})", + state.config.scan_interval(), + state.config.target_container(), + state.config.port_range().0, + state.config.port_range().1, + ); + + let mut ticker = interval(Duration::from_secs(state.config.scan_interval())); + ticker.set_missed_tick_behavior(MissedTickBehavior::Skip); + + loop { + ticker.tick().await; + if let Err(err) = state.sync_routes().await { + log::error!("Error in sync_routes: {}", err); + } + } + }); + } + + async fn sync_routes(&self) -> Result<(), String> { + let ports = match scanner::list_listening_ports(&self.config).await { + Ok(ports) => ports, + Err(err) => { + log::warn!( + "Failed to query ports from {}: {}", + self.config.target_container(), + err + ); + return Ok(()); + } + }; + + let mut state_map = self.state_map.write().await; + let mut routes = state::extract_routes(&state_map); + let existing_ports: HashSet = routes.values().map(|info| info.port).collect(); + let mut changed = false; + + for port in &ports { + if existing_ports.contains(port) { + continue; + } + + let mut token = generate_token(self.config.token_length()); + while state_map.contains_key(&token) { + token = generate_token(self.config.token_length()); + } + + let route = RouteInfo { + port: *port, + created_at: now_ts(), + }; + + routes.insert(token.clone(), route.clone()); + state_map.insert(token.clone(), state::route_to_value(&route)); + log::info!("New route: port {} -> /p/{}", port, token); + changed = true; + } + + let active_ports: HashSet = ports.iter().copied().collect(); + let stale_tokens: Vec = routes + .iter() + .filter(|(_, info)| !active_ports.contains(&info.port)) + .map(|(token, _)| token.clone()) + .collect(); + + for token in stale_tokens { + if let Some(info) = routes.remove(&token) { + state_map.remove(&token); + log::info!("Removed stale route: port {} (token {})", info.port, token); + changed = true; + } + } + + if changed { + caddy::write_map(&self.config, &routes).await?; + state::save_state_map(self.config.router_state_file(), &state_map).await?; + self.reload_gateway().await; + log::info!("Routes updated: {} active", routes.len()); + } + + Ok(()) + } + + async fn save_preview_port(&self, port: Option) -> Result<(), String> { + { + let mut current = self.preview_port.write().await; + *current = port; + } + + let mut state_map = self.state_map.write().await; + state::set_preview_port_value(&mut state_map, port); + state::save_state_map(self.config.router_state_file(), &state_map).await + } + + async fn set_preview_port(&self, port: Option) -> Result<(), String> { + caddy::write_preview_conf(&self.config, port).await?; + self.save_preview_port(port).await?; + self.reload_gateway().await; + log::info!("Preview port set to: {:?}", port); + Ok(()) + } + + async fn reload_gateway(&self) { + if let Err(err) = caddy::reload_gateway().await { + log::warn!("Failed to reload caddy: {}", err); + } + } + + async fn build_routes_payload(&self) -> RoutesPayload { + let state_map = self.state_map.read().await; + let routes = state::extract_routes(&state_map) + .into_iter() + .map(|(token, info)| RoutePayloadItem { + public_url: self.public_url(&token), + token, + port: info.port, + created_at: info.created_at, + }) + .collect(); + + RoutesPayload { + routes, + preview_port: *self.preview_port.read().await, + preview_domain: non_empty(self.config.preview_domain()), + } + } + + fn public_url(&self, token: &str) -> String { + if !self.config.preview_domain().is_empty() { + return format!("https://{}/p/{}/", self.config.preview_domain(), token); + } + + if !self.config.public_base_url().is_empty() { + return format!("{}/p/{}/", self.config.public_base_url(), token); + } + + String::new() + } +} + +pub fn app(state: Arc) -> Router { + Router::new() + .route("/routes", get(get_routes)) + .route("/preview/set", post(post_preview_set)) + .route("/preview/status", get(get_preview_status)) + .with_state(state) +} + +async fn get_routes( + State(state): State>, + Query(query): Query, + headers: HeaderMap, +) -> Response { + if !check_basic_auth(&headers, &state.config) { + return unauthorized_response(); + } + + let payload = state.build_routes_payload().await; + log::info!( + "Serving /routes ({} routes, format={})", + payload.routes.len(), + query.format.as_deref().unwrap_or("html") + ); + + if query.format.as_deref() == Some("json") { + let mut response = Json(payload).into_response(); + set_no_cache_headers(response.headers_mut()); + return response; + } + + let initial_data = serde_json::to_string(&payload).unwrap_or_else(|_| "{}".to_string()); + let html = HTML_TEMPLATE.replace("__INITIAL_DATA__", &initial_data); + let mut response = Html(html).into_response(); + set_no_cache_headers(response.headers_mut()); + response +} + +async fn get_preview_status(State(state): State>, headers: HeaderMap) -> Response { + if !check_basic_auth(&headers, &state.config) { + return unauthorized_response(); + } + + let payload = json!({ + "previewPort": *state.preview_port.read().await, + "previewDomain": non_empty(state.config.preview_domain()), + }); + Json(payload).into_response() +} + +async fn post_preview_set( + State(state): State>, + headers: HeaderMap, + payload: Result, axum::extract::rejection::JsonRejection>, +) -> Response { + if !check_basic_auth(&headers, &state.config) { + return unauthorized_response(); + } + + let Json(request) = match payload { + Ok(payload) => payload, + Err(_) => { + return ( + StatusCode::BAD_REQUEST, + Json(json!({ "error": "invalid port" })), + ) + .into_response(); + } + }; + + match state.set_preview_port(request.port).await { + Ok(()) => Json(json!({ "ok": true, "previewPort": request.port })).into_response(), + Err(err) => { + log::error!("Failed to set preview port: {}", err); + ( + StatusCode::INTERNAL_SERVER_ERROR, + Json(json!({ "error": "failed to set preview port" })), + ) + .into_response() + } + } +} + +fn check_basic_auth(headers: &HeaderMap, config: &Config) -> bool { + if config.router_password().is_empty() { + return true; + } + + let Some(auth_header) = headers.get(header::AUTHORIZATION) else { + return false; + }; + + let Ok(auth_header) = auth_header.to_str() else { + return false; + }; + + let lower = auth_header.to_ascii_lowercase(); + if !lower.starts_with("basic ") { + return false; + }; + let raw = &auth_header["basic ".len()..]; + + let Ok(decoded) = STANDARD.decode(raw.trim()) else { + return false; + }; + + let Ok(decoded) = String::from_utf8(decoded) else { + return false; + }; + + let Some((user, password)) = decoded.split_once(':') else { + return false; + }; + + user == config.router_username() && password == config.router_password() +} + +fn unauthorized_response() -> Response { + let mut response = (StatusCode::UNAUTHORIZED, "Unauthorized").into_response(); + response + .headers_mut() + .insert(header::WWW_AUTHENTICATE, HeaderValue::from_static("Basic")); + response +} + +fn set_no_cache_headers(headers: &mut HeaderMap) { + headers.insert( + header::CACHE_CONTROL, + HeaderValue::from_static("no-cache, no-store, must-revalidate"), + ); + headers.insert(header::PRAGMA, HeaderValue::from_static("no-cache")); +} + +fn generate_token(length: usize) -> String { + rng() + .sample_iter(Alphanumeric) + .take(length) + .map(char::from) + .collect() +} + +fn now_ts() -> u64 { + SystemTime::now() + .duration_since(UNIX_EPOCH) + .unwrap_or_default() + .as_secs() +} + +fn non_empty(value: &str) -> Option { + if value.is_empty() { + None + } else { + Some(value.to_string()) + } +} diff --git a/src-router/src/scanner.rs b/src-router/src/scanner.rs new file mode 100644 index 0000000..3933b5a --- /dev/null +++ b/src-router/src/scanner.rs @@ -0,0 +1,89 @@ +use std::collections::HashSet; + +use tokio::process::Command; + +use crate::config::Config; + +pub async fn list_listening_ports(config: &Config) -> Result, String> { + let output = run_cmd(&[ + "docker", + "exec", + config.target_container(), + "sh", + "-c", + "cat /proc/net/tcp /proc/net/tcp6", + ]) + .await?; + + let ports = parse_proc_net_tcp(&output); + let (start, end) = config.port_range(); + let mut filtered: Vec = ports + .into_iter() + .filter(|port| !config.exclude_ports().contains(port)) + .filter(|port| *port >= start && *port <= end) + .collect(); + filtered.sort_unstable(); + Ok(filtered) +} + +pub(crate) async fn run_cmd(args: &[&str]) -> Result { + let (program, rest) = args + .split_first() + .ok_or_else(|| "empty command".to_string())?; + + let output = Command::new(program) + .args(rest) + .output() + .await + .map_err(|err| err.to_string())?; + + if !output.status.success() { + let stderr = String::from_utf8_lossy(&output.stderr).trim().to_string(); + log::warn!( + "Command failed (rc={}): {} | stderr: {}", + output.status.code().unwrap_or(-1), + args.join(" "), + stderr, + ); + return Err(stderr); + } + + Ok(String::from_utf8_lossy(&output.stdout).into_owned()) +} + +fn parse_proc_net_tcp(output: &str) -> HashSet { + let mut ports = HashSet::new(); + + for line in output.lines() { + let line = line.trim(); + if line.is_empty() || line.starts_with("sl") { + continue; + } + + let mut parts = line.split_whitespace(); + let _slot = parts.next(); + let Some(local) = parts.next() else { + continue; + }; + let _remote = parts.next(); + let Some(state) = parts.next() else { + continue; + }; + + if state != "0A" { + continue; + } + + let Some((_, port_hex)) = local.rsplit_once(':') else { + continue; + }; + + let Ok(port) = u16::from_str_radix(port_hex, 16) else { + continue; + }; + + ports.insert(port); + } + + ports +} diff --git a/src-router/src/state.rs b/src-router/src/state.rs new file mode 100644 index 0000000..0b2c1a3 --- /dev/null +++ b/src-router/src/state.rs @@ -0,0 +1,85 @@ +use std::{collections::BTreeMap, path::Path}; + +use serde::{Deserialize, Serialize}; +use serde_json::{Map, Value, json}; +use tokio::fs; + +const PREVIEW_STATE_KEY: &str = "__preview_port__"; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub(crate) struct RouteInfo { + pub(crate) port: u16, + pub(crate) created_at: u64, +} + +pub(crate) async fn load_state_map(path: &str) -> Map { + let Ok(content) = fs::read_to_string(path).await else { + return Map::new(); + }; + + serde_json::from_str::>(&content).unwrap_or_default() +} + +pub(crate) async fn save_state_map( + path: &str, + state_map: &Map, +) -> Result<(), String> { + ensure_parent_dir(path).await?; + + let mut sorted = BTreeMap::new(); + for (key, value) in state_map { + sorted.insert(key.clone(), value.clone()); + } + + let body = serde_json::to_string_pretty(&sorted).map_err(|err| err.to_string())?; + fs::write(path, format!("{body}\n")) + .await + .map_err(|err| err.to_string()) +} + +pub(crate) fn extract_routes(state_map: &Map) -> BTreeMap { + state_map + .iter() + .filter(|(key, _)| !key.starts_with("__")) + .filter_map(|(token, value)| { + serde_json::from_value::(value.clone()) + .ok() + .map(|info| (token.clone(), info)) + }) + .collect() +} + +pub(crate) fn route_to_value(route: &RouteInfo) -> Value { + json!({ + "port": route.port, + "created_at": route.created_at, + }) +} + +pub(crate) fn load_preview_port(state_map: &Map) -> Option { + state_map + .get(PREVIEW_STATE_KEY) + .and_then(Value::as_u64) + .and_then(|value| u16::try_from(value).ok()) +} + +pub(crate) fn set_preview_port_value(state_map: &mut Map, port: Option) { + match port { + Some(port) => { + state_map.insert(PREVIEW_STATE_KEY.to_string(), json!(port)); + } + None => { + state_map.remove(PREVIEW_STATE_KEY); + } + } +} + +async fn ensure_parent_dir(path: &str) -> Result<(), String> { + let Some(parent) = Path::new(path).parent() else { + return Ok(()); + }; + + fs::create_dir_all(parent) + .await + .map_err(|err| err.to_string()) +} diff --git a/src-tauri/.gitignore b/src-tauri/.gitignore new file mode 100644 index 0000000..502406b --- /dev/null +++ b/src-tauri/.gitignore @@ -0,0 +1,4 @@ +# Generated by Cargo +# will have compiled files and executables +/target/ +/gen/schemas diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock new file mode 100644 index 0000000..edac43e --- /dev/null +++ b/src-tauri/Cargo.lock @@ -0,0 +1,6565 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "ahash" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0453232ace82dee0dd0b4c87a59bd90f7b53b314f3e0f61fe2ee7c8a16482289" + +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom 0.2.17", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "android_log-sys" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84521a3cf562bc62942e294181d9eef17eb38ceb8c68677bc49f144e4c3d4f8d" + +[[package]] +name = "android_logger" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb4e440d04be07da1f1bf44fb4495ebd58669372fe0cffa6e48595ac5bd88a3" +dependencies = [ + "android_log-sys", + "env_filter", + "log", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "async-broadcast" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" +dependencies = [ + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-lock" +version = "3.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" +dependencies = [ + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "async-signal" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix", + "signal-hook-registry", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "atk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" +dependencies = [ + "atk-sys", + "glib", + "libc", +] + +[[package]] +name = "atk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +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 = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" +dependencies = [ + "objc2", +] + +[[package]] +name = "blocking" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "borsh" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" +dependencies = [ + "borsh-derive", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" +dependencies = [ + "once_cell", + "proc-macro-crate 3.5.0", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "brotli" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bumpalo" +version = "3.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" + +[[package]] +name = "byte-unit" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c6d47a4e2961fb8721bcfc54feae6455f2f64e7054f9bc67e875f0e77f4c58d" +dependencies = [ + "rust_decimal", + "schemars 1.2.1", + "serde", + "utf8-width", +] + +[[package]] +name = "bytecheck" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bytemuck" +version = "1.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +dependencies = [ + "serde", +] + +[[package]] +name = "cairo-rs" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" +dependencies = [ + "bitflags 2.11.0", + "cairo-sys-rs", + "glib", + "libc", + "once_cell", + "thiserror 1.0.69", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "camino" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" +dependencies = [ + "serde_core", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror 2.0.18", +] + +[[package]] +name = "cargo_toml" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77" +dependencies = [ + "serde", + "toml 0.9.12+spec-1.1.0", +] + +[[package]] +name = "cc" +version = "1.2.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfb" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" +dependencies = [ + "byteorder", + "fnv", + "uuid", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +dependencies = [ + "iana-time-zone", + "num-traits", + "serde", + "windows-link 0.2.1", +] + +[[package]] +name = "cocoa" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" +dependencies = [ + "bitflags 1.3.2", + "block", + "cocoa-foundation", + "core-foundation 0.9.4", + "core-graphics 0.23.2", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" +dependencies = [ + "bitflags 1.3.2", + "block", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", + "libc", + "objc", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "cookie_store" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eac901828f88a5241ee0600950ab981148a18f2f756900ffba1b125ca6a3ef9" +dependencies = [ + "cookie", + "document-features", + "idna", + "log", + "publicsuffix", + "serde", + "serde_derive", + "serde_json", + "time", + "url", +] + +[[package]] +name = "cookie_store" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fc4bff745c9b4c7fb1e97b25d13153da2bc7796260141df62378998d070207f" +dependencies = [ + "cookie", + "document-features", + "idna", + "log", + "publicsuffix", + "serde", + "serde_derive", + "serde_json", + "time", + "url", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "064badf302c3194842cf2c5d61f56cc88e54a759313879cdf03abdd27d0c3b97" +dependencies = [ + "bitflags 2.11.0", + "core-foundation 0.10.1", + "core-graphics-types 0.2.0", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.11.0", + "core-foundation 0.10.1", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cssparser" +version = "0.29.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93d03419cb5950ccfd3daf3ff1c7a36ace64609a1a8746d493df1ca0afde0fa" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa", + "matches", + "phf 0.10.1", + "proc-macro2", + "quote", + "smallvec", + "syn 1.0.109", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +dependencies = [ + "quote", + "syn 2.0.117", +] + +[[package]] +name = "ctor" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" +dependencies = [ + "quote", + "syn 2.0.117", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.117", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "data-encoding" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" + +[[package]] +name = "data-url" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376" + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +dependencies = [ + "powerfmt", + "serde_core", +] + +[[package]] +name = "derive_more" +version = "0.99.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.117", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.61.2", +] + +[[package]] +name = "dispatch2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" +dependencies = [ + "bitflags 2.11.0", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "dlopen2" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fbbb781877580993a8707ec48672673ec7b81eeba04cfd2310bd28c08e47c8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "dlv-list" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68df3f2b690c1b86e65ef7830956aededf3cb0a16f898f79b9a6f421a7b6211b" +dependencies = [ + "rand 0.8.5", +] + +[[package]] +name = "document-features" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" +dependencies = [ + "litrs", +] + +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" +dependencies = [ + "serde", +] + +[[package]] +name = "dtoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590" + +[[package]] +name = "dtoa-short" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +dependencies = [ + "dtoa", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "embed-resource" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55a075fc573c64510038d7ee9abc7990635863992f83ebc52c8b433b8411a02e" +dependencies = [ + "cc", + "memchr", + "rustc_version", + "toml 0.9.12+spec-1.1.0", + "vswhom", + "winreg", +] + +[[package]] +name = "embed_plist" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "endi" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" + +[[package]] +name = "enigo" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "802e4b2ae123615659085369b453cba87c5562e46ed8050a909fee18a9bc3157" +dependencies = [ + "core-graphics 0.23.2", + "libc", + "objc", + "pkg-config", + "windows 0.51.1", +] + +[[package]] +name = "enumflags2" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "env_filter" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "erased-serde" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" +dependencies = [ + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "fern" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4316185f709b23713e41e3195f90edef7fb00c3ed4adc79769cf09cc762a3b29" +dependencies = [ + "log", +] + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "file-locker" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ae8b5984a4863d8a32109a848d038bd6d914f20f010cc141375f7a183c41cf" +dependencies = [ + "nix", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "flate2" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "freedesktop_entry_parser" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db9c27b72f19a99a895f8ca89e2d26e4ef31013376e56fdafef697627306c3e4" +dependencies = [ + "nom", + "thiserror 1.0.69", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + +[[package]] +name = "futures-channel" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + +[[package]] +name = "futures-executor" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + +[[package]] +name = "futures-lite" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "futures-sink" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gdk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" +dependencies = [ + "cairo-rs", + "gdk-pixbuf", + "gdk-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" +dependencies = [ + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", + "once_cell", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkwayland-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69" +dependencies = [ + "gdk-sys", + "glib-sys", + "gobject-sys", + "libc", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkx11" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe" +dependencies = [ + "gdk", + "gdkx11-sys", + "gio", + "glib", + "libc", + "x11", +] + +[[package]] +name = "gdkx11-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d" +dependencies = [ + "gdk-sys", + "glib-sys", + "libc", + "system-deps", + "x11", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi 5.3.0", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", + "wasip2", + "wasip3", +] + +[[package]] +name = "gio" +version = "0.18.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys", + "glib", + "libc", + "once_cell", + "pin-project-lite", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "gio-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glib" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" +dependencies = [ + "bitflags 2.11.0", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "memchr", + "once_cell", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "glib-macros" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" +dependencies = [ + "heck 0.4.1", + "proc-macro-crate 2.0.2", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "glib-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "gobject-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gtk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" +dependencies = [ + "atk", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk", + "gdk-pixbuf", + "gio", + "glib", + "gtk-sys", + "gtk3-macros", + "libc", + "pango", + "pkg-config", +] + +[[package]] +name = "gtk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "gtk3-macros" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "h2" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap 2.13.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" +dependencies = [ + "ahash 0.4.8", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.8", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "html5ever" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b7410cae13cbc75623c98ac4cbfd1f0bedddf3227afc24f370cf0f50a44a11c" +dependencies = [ + "log", + "mac", + "markup5ever", + "match_token", +] + +[[package]] +name = "http" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "hyper" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots 1.0.6", +] + +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "system-configuration", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core 0.62.2", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ico" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e795dff5605e0f04bff85ca41b51a96b83e80b281e96231bcaaf1ac35103371" +dependencies = [ + "byteorder", + "png", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", + "serde", + "serde_core", +] + +[[package]] +name = "infer" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" +dependencies = [ + "cfb", +] + +[[package]] +name = "ipnet" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" + +[[package]] +name = "iri-string" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "is-docker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", +] + +[[package]] +name = "itoa" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" + +[[package]] +name = "javascriptcore-rs" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" +dependencies = [ + "bitflags 1.3.2", + "glib", + "javascriptcore-rs-sys", +] + +[[package]] +name = "javascriptcore-rs-sys" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "js-sys" +version = "0.3.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" +dependencies = [ + "jsonptr", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "jsonptr" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "keyboard-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +dependencies = [ + "bitflags 2.11.0", + "serde", + "unicode-segmentation", +] + +[[package]] +name = "kuchikiki" +version = "0.8.8-speedreader" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02cb977175687f33fa4afa0c95c112b987ea1443e5a51c8f8ff27dc618270cc2" +dependencies = [ + "cssparser", + "html5ever", + "indexmap 2.13.0", + "selectors", +] + +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + +[[package]] +name = "libappindicator" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" +dependencies = [ + "glib", + "gtk", + "gtk-sys", + "libappindicator-sys", + "log", +] + +[[package]] +name = "libappindicator-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" +dependencies = [ + "gtk-sys", + "libloading", + "once_cell", +] + +[[package]] +name = "libc" +version = "0.2.183" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libredox" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1744e39d1d6a9948f4f388969627434e31128196de472883b39f148769bfe30a" +dependencies = [ + "libc", +] + +[[package]] +name = "linicon" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee8c5653188a809616c97296180a0547a61dba205bcdcbdd261dbd022a25fd9" +dependencies = [ + "file-locker", + "freedesktop_entry_parser", + "linicon-theme", + "memmap2", + "thiserror 1.0.69", +] + +[[package]] +name = "linicon-theme" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4f8240c33bb08c5d8b8cdea87b683b05e61037aa76ff26bef40672cc6ecbb80" +dependencies = [ + "freedesktop_entry_parser", + "rust-ini", +] + +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "litrs" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +dependencies = [ + "value-bag", +] + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "mac-notification-sys" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c889829df2867fd6a043c5932c641fcf7fe9d4329317326af08df14747ab9a97" +dependencies = [ + "cc", + "objc2", + "objc2-foundation", + "time", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "markup5ever" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a7213d12e1864c0f002f52c2923d4556935a43dec5e71355c2760e0f6e7a18" +dependencies = [ + "log", + "phf 0.11.3", + "phf_codegen 0.11.3", + "string_cache", + "string_cache_codegen", + "tendril", +] + +[[package]] +name = "match_token" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + +[[package]] +name = "memchr" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.61.2", +] + +[[package]] +name = "muda" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01c1738382f66ed56b3b9c8119e794a2e23148ac8ea214eda86622d4cb9d415a" +dependencies = [ + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "once_cell", + "png", + "serde", + "thiserror 2.0.18", + "windows-sys 0.60.2", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.11.0", + "jni-sys", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.11.0", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "notify-rust" +version = "4.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21af20a1b50be5ac5861f74af1a863da53a11c38684d9818d82f1c42f7fdc6c2" +dependencies = [ + "futures-lite", + "log", + "mac-notification-sys", + "serde", + "tauri-winrt-notification", + "zbus", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +dependencies = [ + "proc-macro-crate 3.5.0", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "objc2" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" +dependencies = [ + "objc2-encode", + "objc2-exception-helper", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" +dependencies = [ + "bitflags 2.11.0", + "block2", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.11.0", + "dispatch2", + "objc2", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags 2.11.0", + "dispatch2", + "objc2", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-exception-helper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" +dependencies = [ + "cc", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags 2.11.0", + "block2", + "libc", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +dependencies = [ + "bitflags 2.11.0", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" +dependencies = [ + "bitflags 2.11.0", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" +dependencies = [ + "bitflags 2.11.0", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-web-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f" +dependencies = [ + "bitflags 2.11.0", + "block2", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "open" +version = "5.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43bb73a7fa3799b198970490a51174027ba0d4ec504b03cd08caf513d40024bc" +dependencies = [ + "dunce", + "is-wsl", + "libc", + "pathdiff", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "ordered-multimap" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c672c7ad9ec066e428c00eb917124a06f08db19e2584de982cc34b1f4c12485" +dependencies = [ + "dlv-list", + "hashbrown 0.9.1", +] + +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "pango" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" +dependencies = [ + "gio", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "papaya" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f92dd0b07c53a0a0c764db2ace8c541dc47320dad97c2200c2a637ab9dd2328f" +dependencies = [ + "equivalent", + "seize", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link 0.2.1", +] + +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "phf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" +dependencies = [ + "phf_shared 0.8.0", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_macros 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", +] + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros 0.11.3", + "phf_shared 0.11.3", +] + +[[package]] +name = "phf_codegen" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", +] + +[[package]] +name = "phf_codegen" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", +] + +[[package]] +name = "phf_generator" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" +dependencies = [ + "phf_shared 0.8.0", + "rand 0.7.3", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared 0.10.0", + "rand 0.8.5", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared 0.11.3", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "phf_shared" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" +dependencies = [ + "siphasher 0.3.11", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher 0.3.11", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher 1.0.2", +] + +[[package]] +name = "piagentui" +version = "0.6.10" +dependencies = [ + "futures-util", + "log", + "papaya", + "rapidhash", + "reqwest 0.12.28", + "serde", + "serde_json", + "tauri", + "tauri-build", + "tauri-plugin-decorum", + "tauri-plugin-dialog", + "tauri-plugin-fs", + "tauri-plugin-http", + "tauri-plugin-log", + "tauri-plugin-notification", + "tauri-plugin-opener", + "tauri-plugin-single-instance", + "tokio", + "tokio-tungstenite", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "plist" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07" +dependencies = [ + "base64 0.22.1", + "indexmap 2.13.0", + "quick-xml 0.38.4", + "serde", + "time", +] + +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.117", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" +dependencies = [ + "toml_datetime 0.6.3", + "toml_edit 0.20.2", +] + +[[package]] +name = "proc-macro-crate" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" +dependencies = [ + "toml_edit 0.25.4+spec-1.1.0", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "psl-types" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" + +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "publicsuffix" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42ea446cab60335f76979ec15e12619a2165b5ae2c12166bef27d283a9fadf" +dependencies = [ + "idna", + "psl-types", +] + +[[package]] +name = "quick-xml" +version = "0.37.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" +dependencies = [ + "memchr", +] + +[[package]] +name = "quick-xml" +version = "0.38.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c" +dependencies = [ + "memchr", +] + +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror 2.0.18", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +dependencies = [ + "bytes", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.2", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.18", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.60.2", +] + +[[package]] +name = "quote" +version = "1.0.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", + "rand_pcg", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_pcg" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rapidhash" +version = "4.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e48930979c155e2f33aa36ab3119b5ee81332beb6482199a8ecd6029b80b59" +dependencies = [ + "rustversion", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.11.0", +] + +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.17", + "libredox", + "thiserror 2.0.18", +] + +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "regex" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" + +[[package]] +name = "rend" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "reqwest" +version = "0.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +dependencies = [ + "base64 0.22.1", + "bytes", + "cookie", + "cookie_store 0.22.0", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "mime", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams 0.4.2", + "web-sys", + "webpki-roots 1.0.6", +] + +[[package]] +name = "reqwest" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "sync_wrapper", + "tokio", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams 0.5.0", + "web-sys", +] + +[[package]] +name = "rfd" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a15ad77d9e70a92437d8f74c35d99b4e4691128df018833e99f90bcd36152672" +dependencies = [ + "block2", + "dispatch2", + "glib-sys", + "gobject-sys", + "gtk-sys", + "js-sys", + "log", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "raw-window-handle", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-sys 0.60.2", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rkyv" +version = "0.7.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2297bf9c81a3f0dc96bc9521370b88f054168c29826a75e89c55ff196e7ed6a1" +dependencies = [ + "bitvec", + "bytecheck", + "bytes", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84d7b42d4b8d06048d3ac8db0eb31bcb942cbeb709f0b5f2b2ebde398d3038f5" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rust-ini" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63471c4aa97a1cf8332a5f97709a79a4234698de6a1f5087faf66f2dae810e22" +dependencies = [ + "cfg-if", + "ordered-multimap", +] + +[[package]] +name = "rust_decimal" +version = "1.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61f703d19852dbf87cbc513643fa81428361eb6940f1ac14fd58155d295a3eb0" +dependencies = [ + "arrayvec", + "borsh", + "bytes", + "num-traits", + "rand 0.8.5", + "rkyv", + "serde", + "serde_json", +] + +[[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.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +dependencies = [ + "bitflags 2.11.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls" +version = "0.23.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" +dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "indexmap 1.9.3", + "schemars_derive", + "serde", + "serde_json", + "url", + "uuid", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.117", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + +[[package]] +name = "seize" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b55fb86dfd3a2f5f76ea78310a88f96c4ea21a3031f8d212443d56123fd0521" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "selectors" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c37578180969d00692904465fb7f6b3d50b9a2b952b87c23d0e2e5cb5013416" +dependencies = [ + "bitflags 1.3.2", + "cssparser", + "derive_more", + "fxhash", + "log", + "phf 0.8.0", + "phf_codegen 0.8.0", + "precomputed-hash", + "servo_arc", + "smallvec", +] + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-untagged" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058" +dependencies = [ + "erased-serde", + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_spanned" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +dependencies = [ + "serde_core", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "381b283ce7bc6b476d903296fb59d0d36633652b633b27f64db4fb46dcbfc3b9" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.13.0", + "schemars 0.9.0", + "schemars 1.2.1", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6d4e30573c8cb306ed6ab1dca8423eec9a463ea0e155f45399455e0368b27e0" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serialize-to-javascript" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5" +dependencies = [ + "serde", + "serde_json", + "serialize-to-javascript-impl", +] + +[[package]] +name = "serialize-to-javascript-impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "servo_arc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52aa42f8fdf0fed91e5ce7f23d8138441002fa31dca008acf47e6fd4721f741" +dependencies = [ + "nodrop", + "stable_deref_trait", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "siphasher" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "softbuffer" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac18da81ebbf05109ab275b157c22a653bb3c12cf884450179942f81bcbf6c3" +dependencies = [ + "bytemuck", + "js-sys", + "ndk", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation", + "objc2-quartz-core", + "raw-window-handle", + "redox_syscall", + "tracing", + "wasm-bindgen", + "web-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "soup3" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" +dependencies = [ + "futures-channel", + "gio", + "glib", + "libc", + "soup3-sys", +] + +[[package]] +name = "soup3-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "string_cache" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared 0.11.3", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "swift-rs" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" +dependencies = [ + "base64 0.21.7", + "serde", + "serde_json", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "system-configuration" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" +dependencies = [ + "bitflags 2.11.0", + "core-foundation 0.9.4", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck 0.5.0", + "pkg-config", + "toml 0.8.2", + "version-compare", +] + +[[package]] +name = "tao" +version = "0.34.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d52c379e63da659a483a958110bbde891695a0ecb53e48cc7786d5eda7bb" +dependencies = [ + "bitflags 2.11.0", + "block2", + "core-foundation 0.10.1", + "core-graphics 0.25.0", + "crossbeam-channel", + "dispatch2", + "dlopen2", + "dpi", + "gdkwayland-sys", + "gdkx11-sys", + "gtk", + "jni", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "once_cell", + "parking_lot", + "raw-window-handle", + "tao-macros", + "unicode-segmentation", + "url", + "windows 0.61.3", + "windows-core 0.61.2", + "windows-version", + "x11-dl", +] + +[[package]] +name = "tao-macros" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tauri" +version = "2.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da77cc00fb9028caf5b5d4650f75e31f1ef3693459dfca7f7e506d1ecef0ba2d" +dependencies = [ + "anyhow", + "bytes", + "cookie", + "dirs", + "dunce", + "embed_plist", + "getrandom 0.3.4", + "glob", + "gtk", + "heck 0.5.0", + "http", + "jni", + "libc", + "log", + "mime", + "muda", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "objc2-web-kit", + "percent-encoding", + "plist", + "raw-window-handle", + "reqwest 0.13.2", + "serde", + "serde_json", + "serde_repr", + "serialize-to-javascript", + "swift-rs", + "tauri-build", + "tauri-macros", + "tauri-runtime", + "tauri-runtime-wry", + "tauri-utils", + "thiserror 2.0.18", + "tokio", + "tray-icon", + "url", + "webkit2gtk", + "webview2-com", + "window-vibrancy", + "windows 0.61.3", +] + +[[package]] +name = "tauri-build" +version = "2.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bbc990d1dbf57a8e1c7fa2327f2a614d8b757805603c1b9ba5c81bade09fd4d" +dependencies = [ + "anyhow", + "cargo_toml", + "dirs", + "glob", + "heck 0.5.0", + "json-patch", + "schemars 0.8.22", + "semver", + "serde", + "serde_json", + "tauri-utils", + "tauri-winres", + "toml 0.9.12+spec-1.1.0", + "walkdir", +] + +[[package]] +name = "tauri-codegen" +version = "2.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4a24476afd977c5d5d169f72425868613d82747916dd29e0a357c84c4bd6d29" +dependencies = [ + "base64 0.22.1", + "brotli", + "ico", + "json-patch", + "plist", + "png", + "proc-macro2", + "quote", + "semver", + "serde", + "serde_json", + "sha2", + "syn 2.0.117", + "tauri-utils", + "thiserror 2.0.18", + "time", + "url", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-macros" +version = "2.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d39b349a98dadaffebb73f0a40dcd1f23c999211e5a2e744403db384d0c33de7" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.117", + "tauri-codegen", + "tauri-utils", +] + +[[package]] +name = "tauri-plugin" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddde7d51c907b940fb573006cdda9a642d6a7c8153657e88f8a5c3c9290cd4aa" +dependencies = [ + "anyhow", + "glob", + "plist", + "schemars 0.8.22", + "serde", + "serde_json", + "tauri-utils", + "toml 0.9.12+spec-1.1.0", + "walkdir", +] + +[[package]] +name = "tauri-plugin-decorum" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db925c61a04a937028bc91ad8ae64a93b84a1715b964530925a54e793d494999" +dependencies = [ + "anyhow", + "cocoa", + "enigo", + "linicon", + "objc", + "rand 0.8.5", + "serde", + "tauri", + "tauri-plugin", +] + +[[package]] +name = "tauri-plugin-dialog" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9204b425d9be8d12aa60c2a83a289cf7d1caae40f57f336ed1155b3a5c0e359b" +dependencies = [ + "log", + "raw-window-handle", + "rfd", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "tauri-plugin-fs", + "thiserror 2.0.18", + "url", +] + +[[package]] +name = "tauri-plugin-fs" +version = "2.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed390cc669f937afeb8b28032ce837bac8ea023d975a2e207375ec05afaf1804" +dependencies = [ + "anyhow", + "dunce", + "glob", + "percent-encoding", + "schemars 0.8.22", + "serde", + "serde_json", + "serde_repr", + "tauri", + "tauri-plugin", + "tauri-utils", + "thiserror 2.0.18", + "toml 0.9.12+spec-1.1.0", + "url", +] + +[[package]] +name = "tauri-plugin-http" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8f069451c4e87e7e2636b7f065a4c52866c4ce5e60e2d53fa1038edb6d184dc" +dependencies = [ + "bytes", + "cookie_store 0.21.1", + "data-url", + "http", + "regex", + "reqwest 0.12.28", + "schemars 0.8.22", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "tauri-plugin-fs", + "thiserror 2.0.18", + "tokio", + "url", + "urlpattern", +] + +[[package]] +name = "tauri-plugin-log" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7545bd67f070a4500432c826e2e0682146a1d6712aee22a2786490156b574d93" +dependencies = [ + "android_logger", + "byte-unit", + "fern", + "log", + "objc2", + "objc2-foundation", + "serde", + "serde_json", + "serde_repr", + "swift-rs", + "tauri", + "tauri-plugin", + "thiserror 2.0.18", + "time", +] + +[[package]] +name = "tauri-plugin-notification" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01fc2c5ff41105bd1f7242d8201fdf3efd70749b82fa013a17f2126357d194cc" +dependencies = [ + "log", + "notify-rust", + "rand 0.9.2", + "serde", + "serde_json", + "serde_repr", + "tauri", + "tauri-plugin", + "thiserror 2.0.18", + "time", + "url", +] + +[[package]] +name = "tauri-plugin-opener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc624469b06f59f5a29f874bbc61a2ed737c0f9c23ef09855a292c389c42e83f" +dependencies = [ + "dunce", + "glob", + "objc2-app-kit", + "objc2-foundation", + "open", + "schemars 0.8.22", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror 2.0.18", + "url", + "windows 0.61.3", + "zbus", +] + +[[package]] +name = "tauri-plugin-single-instance" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc61e4822b8f74d68278e09161d3e3fdd1b14b9eb781e24edccaabf10c420e8c" +dependencies = [ + "serde", + "serde_json", + "tauri", + "thiserror 2.0.18", + "tracing", + "windows-sys 0.60.2", + "zbus", +] + +[[package]] +name = "tauri-runtime" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2826d79a3297ed08cd6ea7f412644ef58e32969504bc4fbd8d7dbeabc4445ea2" +dependencies = [ + "cookie", + "dpi", + "gtk", + "http", + "jni", + "objc2", + "objc2-ui-kit", + "objc2-web-kit", + "raw-window-handle", + "serde", + "serde_json", + "tauri-utils", + "thiserror 2.0.18", + "url", + "webkit2gtk", + "webview2-com", + "windows 0.61.3", +] + +[[package]] +name = "tauri-runtime-wry" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e11ea2e6f801d275fdd890d6c9603736012742a1c33b96d0db788c9cdebf7f9e" +dependencies = [ + "gtk", + "http", + "jni", + "log", + "objc2", + "objc2-app-kit", + "once_cell", + "percent-encoding", + "raw-window-handle", + "softbuffer", + "tao", + "tauri-runtime", + "tauri-utils", + "url", + "webkit2gtk", + "webview2-com", + "windows 0.61.3", + "wry", +] + +[[package]] +name = "tauri-utils" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219a1f983a2af3653f75b5747f76733b0da7ff03069c7a41901a5eb3ace4557d" +dependencies = [ + "anyhow", + "brotli", + "cargo_metadata", + "ctor", + "dunce", + "glob", + "html5ever", + "http", + "infer", + "json-patch", + "kuchikiki", + "log", + "memchr", + "phf 0.11.3", + "proc-macro2", + "quote", + "regex", + "schemars 0.8.22", + "semver", + "serde", + "serde-untagged", + "serde_json", + "serde_with", + "swift-rs", + "thiserror 2.0.18", + "toml 0.9.12+spec-1.1.0", + "url", + "urlpattern", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-winres" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1087b111fe2b005e42dbdc1990fc18593234238d47453b0c99b7de1c9ab2c1e0" +dependencies = [ + "dunce", + "embed-resource", + "toml 0.9.12+spec-1.1.0", +] + +[[package]] +name = "tauri-winrt-notification" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b1e66e07de489fe43a46678dd0b8df65e0c973909df1b60ba33874e297ba9b9" +dependencies = [ + "quick-xml 0.37.5", + "thiserror 2.0.18", + "windows 0.61.3", + "windows-version", +] + +[[package]] +name = "tempfile" +version = "3.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0" +dependencies = [ + "fastrand", + "getrandom 0.4.2", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "time" +version = "0.3.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9e442fc33d7fdb45aa9bfeb312c095964abdf596f7567261062b2a7107aaabd" +dependencies = [ + "deranged", + "itoa", + "libc", + "num-conv", + "num_threads", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b36ee98fd31ec7426d599183e8fe26932a8dc1fb76ddb6214d05493377d34ca" + +[[package]] +name = "time-macros" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e552d1249bf61ac2a52db88179fd0673def1e1ad8243a00d9ec9ed71fee3dd" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" +dependencies = [ + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" +dependencies = [ + "futures-util", + "log", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tungstenite", + "webpki-roots 0.26.11", +] + +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +dependencies = [ + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.3", + "toml_edit 0.20.2", +] + +[[package]] +name = "toml" +version = "0.9.12+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" +dependencies = [ + "indexmap 2.13.0", + "serde_core", + "serde_spanned 1.0.4", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow 0.7.15", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_datetime" +version = "1.0.0+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.13.0", + "toml_datetime 0.6.3", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap 2.13.0", + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.3", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.25.4+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7193cbd0ce53dc966037f54351dbbcf0d5a642c7f0038c382ef9e677ce8c13f2" +dependencies = [ + "indexmap 2.13.0", + "toml_datetime 1.0.0+spec-1.1.0", + "toml_parser", + "winnow 0.7.15", +] + +[[package]] +name = "toml_parser" +version = "1.0.9+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +dependencies = [ + "winnow 0.7.15", +] + +[[package]] +name = "toml_writer" +version = "1.0.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +dependencies = [ + "bitflags 2.11.0", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tray-icon" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e85aa143ceb072062fc4d6356c1b520a51d636e7bc8e77ec94be3608e5e80c" +dependencies = [ + "crossbeam-channel", + "dirs", + "libappindicator", + "muda", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation", + "once_cell", + "png", + "serde", + "thiserror 2.0.18", + "windows-sys 0.60.2", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "tungstenite" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand 0.8.5", + "rustls", + "rustls-pki-types", + "sha1", + "thiserror 1.0.69", + "utf-8", +] + +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "uds_windows" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51b70b87d15e91f553711b40df3048faf27a7a04e01e0ddc0cf9309f0af7c2ca" +dependencies = [ + "memoffset", + "tempfile", + "windows-sys 0.61.2", +] + +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", + "serde_derive", +] + +[[package]] +name = "urlpattern" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +dependencies = [ + "regex", + "serde", + "unic-ucd-ident", + "url", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8-width" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1292c0d970b54115d14f2492fe0170adf21d68a1de108eebc51c1df4f346a091" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37" +dependencies = [ + "getrandom 0.4.2", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "value-bag" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ba6f5989077681266825251a52748b8c1d8a4ad098cc37e440103d0ea717fc0" + +[[package]] +name = "version-compare" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "vswhom" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" +dependencies = [ + "libc", + "vswhom-sys", +] + +[[package]] +name = "vswhom-sys" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.2+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8" +dependencies = [ + "cfg-if", + "futures-util", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.117", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap 2.13.0", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasm-streams" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wasm-streams" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.11.0", + "hashbrown 0.15.5", + "indexmap 2.13.0", + "semver", +] + +[[package]] +name = "web-sys" +version = "0.3.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webkit2gtk" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1027150013530fb2eaf806408df88461ae4815a45c541c8975e61d6f2fc4793" +dependencies = [ + "bitflags 1.3.2", + "cairo-rs", + "gdk", + "gdk-sys", + "gio", + "gio-sys", + "glib", + "glib-sys", + "gobject-sys", + "gtk", + "gtk-sys", + "javascriptcore-rs", + "libc", + "once_cell", + "soup3", + "webkit2gtk-sys", +] + +[[package]] +name = "webkit2gtk-sys" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "916a5f65c2ef0dfe12fff695960a2ec3d4565359fdbb2e9943c974e06c734ea5" +dependencies = [ + "bitflags 1.3.2", + "cairo-sys-rs", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk-sys", + "javascriptcore-rs-sys", + "libc", + "pkg-config", + "soup3-sys", + "system-deps", +] + +[[package]] +name = "webpki-roots" +version = "0.26.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.6", +] + +[[package]] +name = "webpki-roots" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cfaf3c063993ff62e73cb4311efde4db1efb31ab78a3e5c457939ad5cc0bed" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "webview2-com" +version = "0.38.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7130243a7a5b33c54a444e54842e6a9e133de08b5ad7b5861cd8ed9a6a5bc96a" +dependencies = [ + "webview2-com-macros", + "webview2-com-sys", + "windows 0.61.3", + "windows-core 0.61.2", + "windows-implement", + "windows-interface", +] + +[[package]] +name = "webview2-com-macros" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a921c1b6914c367b2b823cd4cde6f96beec77d30a939c8199bb377cf9b9b54" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "webview2-com-sys" +version = "0.38.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c" +dependencies = [ + "thiserror 2.0.18", + "windows 0.61.3", + "windows-core 0.61.2", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "window-vibrancy" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" +dependencies = [ + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "raw-window-handle", + "windows-sys 0.59.0", + "windows-version", +] + +[[package]] +name = "windows" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9" +dependencies = [ + "windows-core 0.51.1", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections", + "windows-core 0.61.2", + "windows-future", + "windows-link 0.1.3", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core 0.61.2", +] + +[[package]] +name = "windows-core" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" +dependencies = [ + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-version" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.55.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" +dependencies = [ + "cfg-if", + "windows-sys 0.59.0", +] + +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck 0.5.0", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck 0.5.0", + "indexmap 2.13.0", + "prettyplease", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.11.0", + "indexmap 2.13.0", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap 2.13.0", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "wry" +version = "0.54.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb26159b420aa77684589a744ae9a9461a95395b848764ad12290a14d960a11a" +dependencies = [ + "base64 0.22.1", + "block2", + "cookie", + "crossbeam-channel", + "dirs", + "dpi", + "dunce", + "gdkx11", + "gtk", + "html5ever", + "http", + "javascriptcore-rs", + "jni", + "kuchikiki", + "libc", + "ndk", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "objc2-ui-kit", + "objc2-web-kit", + "once_cell", + "percent-encoding", + "raw-window-handle", + "sha2", + "soup3", + "tao-macros", + "thiserror 2.0.18", + "url", + "webkit2gtk", + "webkit2gtk-sys", + "webview2-com", + "windows 0.61.3", + "windows-core 0.61.2", + "windows-version", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zbus" +version = "5.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca82f95dbd3943a40a53cfded6c2d0a2ca26192011846a1810c4256ef92c60bc" +dependencies = [ + "async-broadcast", + "async-executor", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener", + "futures-core", + "futures-lite", + "hex", + "libc", + "ordered-stream", + "rustix", + "serde", + "serde_repr", + "tracing", + "uds_windows", + "uuid", + "windows-sys 0.61.2", + "winnow 0.7.15", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "5.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897e79616e84aac4b2c46e9132a4f63b93105d54fe8c0e8f6bffc21fa8d49222" +dependencies = [ + "proc-macro-crate 3.5.0", + "proc-macro2", + "quote", + "syn 2.0.117", + "zbus_names", + "zvariant", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffd8af6d5b78619bab301ff3c560a5bd22426150253db278f164d6cf3b72c50f" +dependencies = [ + "serde", + "winnow 0.7.15", + "zvariant", +] + +[[package]] +name = "zerocopy" +version = "0.8.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96e13bc581734df6250836c59a5f44f3c57db9f9acb9dc8e3eaabdaf6170254d" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3545ea9e86d12ab9bba9fcd99b54c1556fd3199007def5a03c375623d05fac1c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + +[[package]] +name = "zvariant" +version = "5.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5708299b21903bbe348e94729f22c49c55d04720a004aa350f1f9c122fd2540b" +dependencies = [ + "endi", + "enumflags2", + "serde", + "winnow 0.7.15", + "zvariant_derive", + "zvariant_utils", +] + +[[package]] +name = "zvariant_derive" +version = "5.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b59b012ebe9c46656f9cc08d8da8b4c726510aef12559da3e5f1bf72780752c" +dependencies = [ + "proc-macro-crate 3.5.0", + "proc-macro2", + "quote", + "syn 2.0.117", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f75c23a64ef8f40f13a6989991e643554d9bef1d682a281160cf0c1bc389c5e9" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "syn 2.0.117", + "winnow 0.7.15", +] diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml new file mode 100644 index 0000000..4056e5d --- /dev/null +++ b/src-tauri/Cargo.toml @@ -0,0 +1,46 @@ +[package] +name = "piagentui" +version = "0.6.10" +description = "Pi Agent UI - Tauri Desktop & Mobile App" +authors = ["lehhair"] +license = "GPL-3.0-only" +repository = "" +edition = "2021" +rust-version = "1.85.0" + +[lib] +crate-type = ["cdylib", "rlib", "staticlib"] +name = "app_lib" + +[dependencies] +futures-util = "0.3" +log = "0.4" +papaya = "0.2.3" +rapidhash = { version = "4.4.1", features = ["unsafe"] } +reqwest = { version = "0.12", default-features = false, features = [ + "rustls-tls", + "stream" +] } +serde = { version = "1", features = ["derive"] } +serde_json = "1" +tauri = { version = "2", features = ["devtools"] } +tauri-plugin-decorum = "1.1.1" +tauri-plugin-dialog = "2" +tauri-plugin-fs = "2" +tauri-plugin-http = "2" +tauri-plugin-log = "2" +tauri-plugin-notification = "2" +tauri-plugin-opener = "2" +tauri-plugin-single-instance = "2" +tokio = { version = "1", features = ["macros", "rt-multi-thread", "sync", "time"] } +tokio-tungstenite = { version = "0.24", features = ["rustls-tls-webpki-roots"] } + +[build-dependencies] +tauri-build = { version = "2", features = [] } + +[profile.release] +strip = true +lto = true +panic = "abort" +codegen-units = 1 +opt-level = "s" diff --git a/src-tauri/app-icon.manifest.json b/src-tauri/app-icon.manifest.json new file mode 100644 index 0000000..735cf81 --- /dev/null +++ b/src-tauri/app-icon.manifest.json @@ -0,0 +1,6 @@ +{ + "default": "../src/assets/images/logo/PiAgentUiLogoBlackletterBGTransp.png", + "android_bg": "../assets/app-icons/app-icon-android-background.svg", + "android_fg": "../assets/app-icons/app-icon-android-foreground.svg", + "android_fg_scale": 66 +} diff --git a/src-tauri/build.rs b/src-tauri/build.rs new file mode 100644 index 0000000..795b9b7 --- /dev/null +++ b/src-tauri/build.rs @@ -0,0 +1,3 @@ +fn main() { + tauri_build::build() +} diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json new file mode 100644 index 0000000..ecf3b5a --- /dev/null +++ b/src-tauri/capabilities/default.json @@ -0,0 +1,42 @@ +{ + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "default", + "description": "Default capabilities for Pi Agent UI", + "windows": ["main", "win-*"], + "permissions": [ + "core:default", + "core:window:allow-start-dragging", + "core:window:allow-set-theme", + "core:window:allow-set-focus", + "core:window:allow-close", + "core:window:allow-center", + "core:window:allow-minimize", + "core:window:allow-maximize", + "core:window:allow-set-size", + "core:window:allow-is-maximized", + "core:window:allow-toggle-maximize", + "decorum:allow-show-snap-overlay", + { + "identifier": "http:default", + "allow": [ + { "url": "http://**" }, + { "url": "https://**" }, + { "url": "http://**:*" }, + { "url": "https://**:*" }, + { "url": "http://**:*/**" }, + { "url": "https://**:*/**" } + ] + }, + "notification:default", + "notification:allow-is-permission-granted", + "notification:allow-request-permission", + "notification:allow-notify", + "dialog:default", + "dialog:allow-open", + "dialog:allow-save", + "fs:default", + "fs:allow-read-file", + "fs:allow-write-file", + "opener:default" + ] +} diff --git a/src-tauri/gen/android/.editorconfig b/src-tauri/gen/android/.editorconfig new file mode 100644 index 0000000..ebe51d3 --- /dev/null +++ b/src-tauri/gen/android/.editorconfig @@ -0,0 +1,12 @@ +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = false +insert_final_newline = false \ No newline at end of file diff --git a/src-tauri/gen/android/.gitignore b/src-tauri/gen/android/.gitignore new file mode 100644 index 0000000..b248203 --- /dev/null +++ b/src-tauri/gen/android/.gitignore @@ -0,0 +1,19 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +build +/captures +.externalNativeBuild +.cxx +local.properties +key.properties + +/.tauri +/tauri.settings.gradle \ No newline at end of file diff --git a/src-tauri/gen/android/app/.gitignore b/src-tauri/gen/android/app/.gitignore new file mode 100644 index 0000000..6bc0121 --- /dev/null +++ b/src-tauri/gen/android/app/.gitignore @@ -0,0 +1,6 @@ +/src/main/java/com/opencodeui/app/generated +/src/main/jniLibs/**/*.so +/src/main/assets/tauri.conf.json +/tauri.build.gradle.kts +/proguard-tauri.pro +/tauri.properties \ No newline at end of file diff --git a/src-tauri/gen/android/app/build.gradle.kts b/src-tauri/gen/android/app/build.gradle.kts new file mode 100644 index 0000000..e5bc30b --- /dev/null +++ b/src-tauri/gen/android/app/build.gradle.kts @@ -0,0 +1,95 @@ +import java.util.Properties + +plugins { + id("com.android.application") + id("org.jetbrains.kotlin.android") + id("rust") +} + +val tauriProperties = Properties().apply { + val propFile = file("tauri.properties") + if (propFile.exists()) { + propFile.inputStream().use { load(it) } + } +} + +// 读取签名配置(CI 环境通过 keystore.properties 注入) +val keystoreProperties = Properties().apply { + val propFile = file("keystore.properties") + if (propFile.exists()) { + propFile.inputStream().use { load(it) } + } +} + +android { + compileSdk = 36 + namespace = "com.opencodeui.app" + defaultConfig { + manifestPlaceholders["usesCleartextTraffic"] = "false" + applicationId = "com.opencodeui.app" + minSdk = 24 + targetSdk = 36 + versionCode = tauriProperties.getProperty("tauri.android.versionCode", "1").toInt() + versionName = tauriProperties.getProperty("tauri.android.versionName", "1.0") + } + signingConfigs { + create("release") { + val ksFile = keystoreProperties.getProperty("storeFile") + if (ksFile != null) { + storeFile = file(ksFile) + storePassword = keystoreProperties.getProperty("password") + keyAlias = keystoreProperties.getProperty("keyAlias") + keyPassword = keystoreProperties.getProperty("password") + } + } + } + buildTypes { + getByName("debug") { + manifestPlaceholders["usesCleartextTraffic"] = "true" + isDebuggable = true + isJniDebuggable = true + isMinifyEnabled = false + packaging { + jniLibs.keepDebugSymbols.add("*/arm64-v8a/*.so") + jniLibs.keepDebugSymbols.add("*/armeabi-v7a/*.so") + jniLibs.keepDebugSymbols.add("*/x86/*.so") + jniLibs.keepDebugSymbols.add("*/x86_64/*.so") + } + } + getByName("release") { + manifestPlaceholders["usesCleartextTraffic"] = "true" + isMinifyEnabled = true + val ksFile = keystoreProperties.getProperty("storeFile") + if (ksFile != null) { + signingConfig = signingConfigs.getByName("release") + } + proguardFiles( + *fileTree(".") { include("**/*.pro") } + .plus(getDefaultProguardFile("proguard-android-optimize.txt")) + .toList().toTypedArray() + ) + } + } + kotlinOptions { + jvmTarget = "1.8" + } + buildFeatures { + buildConfig = true + } +} + +rust { + rootDirRel = "../../../" +} + +dependencies { + implementation("androidx.webkit:webkit:1.14.0") + implementation("androidx.appcompat:appcompat:1.7.1") + implementation("androidx.activity:activity-ktx:1.10.1") + implementation("com.google.android.material:material:1.12.0") + testImplementation("junit:junit:4.13.2") + androidTestImplementation("androidx.test.ext:junit:1.1.4") + androidTestImplementation("androidx.test.espresso:espresso-core:3.5.0") +} + +apply(from = "tauri.build.gradle.kts") \ No newline at end of file diff --git a/src-tauri/gen/android/app/proguard-rules.pro b/src-tauri/gen/android/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/src-tauri/gen/android/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/src-tauri/gen/android/app/src/main/AndroidManifest.xml b/src-tauri/gen/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..2d56b22 --- /dev/null +++ b/src-tauri/gen/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src-tauri/gen/android/app/src/main/java/com/opencodeui/app/MainActivity.kt b/src-tauri/gen/android/app/src/main/java/com/opencodeui/app/MainActivity.kt new file mode 100644 index 0000000..35208d8 --- /dev/null +++ b/src-tauri/gen/android/app/src/main/java/com/opencodeui/app/MainActivity.kt @@ -0,0 +1,304 @@ +package com.opencodeui.app + +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.os.Handler +import android.os.Looper +import android.os.Build +import android.view.View +import android.view.ViewGroup +import android.webkit.WebView +import android.os.VibrationEffect +import android.os.Vibrator +import android.os.VibratorManager +import androidx.activity.enableEdgeToEdge +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat + +class MainActivity : TauriActivity() { + + private val handler = Handler(Looper.getMainLooper()) + private var cachedInsetsJs: String? = null + private var themeSyncRunnable: Runnable? = null + private var cachedWebView: WebView? = null + + override fun onCreate(savedInstanceState: Bundle?) { + enableEdgeToEdge() + super.onCreate(savedInstanceState) + + // 初始状态栏样式(后续由 WebView 主题同步驱动) + val controller = WindowInsetsControllerCompat(window, window.decorView) + controller.isAppearanceLightStatusBars = true + controller.isAppearanceLightNavigationBars = true + + // 禁用系统对比度强制(避免状态栏自动加黑/渐变) + if (Build.VERSION.SDK_INT >= 29) { + window.isStatusBarContrastEnforced = false + window.isNavigationBarContrastEnforced = false + } + + // 监听 WindowInsets 变化: + // 1. 对内容容器 setPadding,让 WebView 物理 resize(键盘弹出时 window.innerHeight 自动变小) + // 2. 注入 CSS 变量供前端做精细布局 + val contentView = findViewById(android.R.id.content) + ViewCompat.setOnApplyWindowInsetsListener(contentView) { view, windowInsets -> + val systemInsets = windowInsets.getInsets( + WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout() + ) + val imeInsets = windowInsets.getInsets(WindowInsetsCompat.Type.ime()) + + // 键盘弹出时底部取 IME 和系统栏的较大值,让 WebView 整体 resize + val bottomPadding = maxOf(imeInsets.bottom, systemInsets.bottom) + view.setPadding( + systemInsets.left, + systemInsets.top, + systemInsets.right, + bottomPadding + ) + + cachedInsetsJs = """ + (function() { + var s = document.documentElement.style; + s.setProperty('--safe-area-inset-top', '0px'); + s.setProperty('--safe-area-inset-bottom', '0px'); + s.setProperty('--safe-area-inset-left', '0px'); + s.setProperty('--safe-area-inset-right', '0px'); + })(); + """.trimIndent() + + // 立即尝试注入 + tryInjectInsets(view) + + WindowInsetsCompat.CONSUMED + } + + // WebView 可能还没创建好,轮询几次确保注入成功 + scheduleInsetsInjection(contentView, 0) + } + + override fun onResume() { + super.onResume() + startThemeSync() + } + + override fun onPause() { + stopThemeSync() + super.onPause() + } + + private fun startThemeSync() { + if (themeSyncRunnable != null) return + themeSyncRunnable = Runnable { + val rootView = window.decorView.findViewById(android.R.id.content) + syncSystemBars(rootView) + handler.postDelayed(themeSyncRunnable!!, 800L) + } + handler.post(themeSyncRunnable!!) + } + + private fun stopThemeSync() { + themeSyncRunnable?.let { handler.removeCallbacks(it) } + themeSyncRunnable = null + } + + private fun syncSystemBars(rootView: View) { + val webView = cachedWebView ?: findWebView(rootView) ?: return + // 在 JS 端用 Canvas 2D 将 getComputedStyle 返回的任意格式颜色 + // 统一转为 #rrggbb hex,避免不同 WebView 版本返回不同格式 + // (rgb 逗号/空格分隔, color(srgb ...), oklch(...) 等) + val js = """ + (function() { + var mode = document.documentElement.getAttribute('data-mode') || 'system'; + var raw = getComputedStyle(document.documentElement).getPropertyValue('--color-bg-100').trim(); + if (!raw) return JSON.stringify({ mode: mode, bg: '' }); + var c = document.createElement('canvas').getContext('2d'); + c.fillStyle = raw; + var hex = c.fillStyle; + return JSON.stringify({ mode: mode, bg: hex }); + })(); + """.trimIndent() + webView.evaluateJavascript(js) { result -> + applySystemBarsFromJs(result) + } + } + + private fun applySystemBarsFromJs(result: String?) { + if (result == null || result == "null") return + val unescaped = result + .trim('"') + .replace("\\\\", "\\") + .replace("\\\"", "\"") + val json = try { + org.json.JSONObject(unescaped) + } catch (_: Exception) { + return + } + val mode = json.optString("mode", "system") + val bg = json.optString("bg", "") + val color = parseCssColor(bg) ?: return + val isLightBg = isColorLight(color) + val controller = WindowInsetsControllerCompat(window, window.decorView) + controller.isAppearanceLightStatusBars = isLightBg && mode != "dark" + controller.isAppearanceLightNavigationBars = isLightBg && mode != "dark" + window.statusBarColor = color + window.navigationBarColor = color + window.decorView.setBackgroundColor(color) + } + + private inner class SystemBarBridge { + @android.webkit.JavascriptInterface + fun setSystemBars(mode: String, bg: String) { + val color = parseCssColor(bg) ?: return + val isLightBg = isColorLight(color) + val controller = WindowInsetsControllerCompat(window, window.decorView) + controller.isAppearanceLightStatusBars = isLightBg && mode != "dark" + controller.isAppearanceLightNavigationBars = isLightBg && mode != "dark" + window.statusBarColor = color + window.navigationBarColor = color + window.decorView.setBackgroundColor(color) + } + + @android.webkit.JavascriptInterface + fun vibrate(ms: Int) { + val duration = ms.coerceIn(1, 50).toLong() + val vibrator = if (android.os.Build.VERSION.SDK_INT >= 31) { + val vm = getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager + vm.defaultVibrator + } else { + @Suppress("DEPRECATION") + getSystemService(Context.VIBRATOR_SERVICE) as Vibrator + } + if (!vibrator.hasVibrator()) return + if (android.os.Build.VERSION.SDK_INT >= 26) { + vibrator.vibrate(VibrationEffect.createOneShot(duration, VibrationEffect.DEFAULT_AMPLITUDE)) + } else { + @Suppress("DEPRECATION") + vibrator.vibrate(duration) + } + } + } + + private fun parseCssColor(value: String): Int? { + val v = value.trim() + if (v.isEmpty()) return null + + // 优先处理 #hex 格式(JS 端已统一转为此格式) + if (v.startsWith("#")) { + return try { + Color.parseColor(v) + } catch (_: Exception) { + null + } + } + + // 兼容处理 rgb/rgba — 同时支持逗号分隔和空格分隔 + if (v.startsWith("rgb")) { + val inner = v.substringAfter('(').substringBefore(')') + // 提取所有数字(整数或浮点) + val nums = Regex("""\d+\.?\d*""").findAll(inner).map { it.value }.toList() + if (nums.size < 3) return null + val r = nums[0].toFloatOrNull()?.toInt()?.coerceIn(0, 255) ?: return null + val g = nums[1].toFloatOrNull()?.toInt()?.coerceIn(0, 255) ?: return null + val b = nums[2].toFloatOrNull()?.toInt()?.coerceIn(0, 255) ?: return null + return Color.rgb(r, g, b) + } + + // 兼容处理 hsl/hsla — 同时支持逗号分隔和空格分隔 + if (v.startsWith("hsl")) { + val inner = v.substringAfter('(').substringBefore(')') + .replace("%", "") + val parts = Regex("""\d+\.?\d*""").findAll(inner).map { it.value }.toList() + if (parts.size < 3) return null + val h = parts[0].toFloatOrNull() ?: return null + val s = (parts[1].toFloatOrNull() ?: return null) / 100f + val l = (parts[2].toFloatOrNull() ?: return null) / 100f + return hslToColor(h, s, l) + } + + // 最后尝试 Color.parseColor (支持 named colors 等) + return try { + Color.parseColor(v) + } catch (_: Exception) { + null + } + } + + private fun hslToColor(h: Float, s: Float, l: Float): Int { + val c = (1 - kotlin.math.abs(2 * l - 1)) * s + val hh = (h % 360) / 60f + val x = c * (1 - kotlin.math.abs(hh % 2 - 1)) + val (r1, g1, b1) = when { + hh < 1 -> Triple(c, x, 0f) + hh < 2 -> Triple(x, c, 0f) + hh < 3 -> Triple(0f, c, x) + hh < 4 -> Triple(0f, x, c) + hh < 5 -> Triple(x, 0f, c) + else -> Triple(c, 0f, x) + } + val m = l - c / 2 + val r = ((r1 + m) * 255).toInt().coerceIn(0, 255) + val g = ((g1 + m) * 255).toInt().coerceIn(0, 255) + val b = ((b1 + m) * 255).toInt().coerceIn(0, 255) + return Color.rgb(r, g, b) + } + + private fun isColorLight(color: Int): Boolean { + val r = Color.red(color) / 255f + val g = Color.green(color) / 255f + val b = Color.blue(color) / 255f + val luminance = 0.299f * r + 0.587f * g + 0.114f * b + return luminance > 0.6f + } + + /** + * 延迟重试注入 insets,确保 WebView 加载完成后 CSS 变量被设置 + * 最多重试 10 次,间隔递增 + */ + private fun scheduleInsetsInjection(rootView: View, attempt: Int) { + if (attempt >= 10) return + val delay = if (attempt < 3) 200L else 1000L + handler.postDelayed({ + if (tryInjectInsets(rootView)) { + // 注入成功后再补几次,确保页面导航后也有值 + if (attempt < 5) { + scheduleInsetsInjection(rootView, attempt + 1) + } + } else { + scheduleInsetsInjection(rootView, attempt + 1) + } + }, delay) + } + + /** + * 尝试向 WebView 注入 insets CSS 变量 + * @return 是否找到了 WebView 并成功注入 + */ + private fun tryInjectInsets(view: View): Boolean { + val js = cachedInsetsJs ?: return false + val webView = findWebView(view) ?: return false + cachedWebView = webView + ensureJsBridge(webView) + webView.evaluateJavascript(js, null) + return true + } + + private fun ensureJsBridge(webView: WebView) { + try { + webView.addJavascriptInterface(SystemBarBridge(), "__opencode_android") + } catch (_: Exception) { + // ignore - may be added already + } + } + + private fun findWebView(view: View): WebView? { + if (view is WebView) return view + if (view is ViewGroup) { + for (i in 0 until view.childCount) { + findWebView(view.getChildAt(i))?.let { return it } + } + } + return null + } +} diff --git a/src-tauri/gen/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/src-tauri/gen/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/src-tauri/gen/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src-tauri/gen/android/app/src/main/res/drawable/ic_launcher_background.xml b/src-tauri/gen/android/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/src-tauri/gen/android/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src-tauri/gen/android/app/src/main/res/layout/activity_main.xml b/src-tauri/gen/android/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..4fc2444 --- /dev/null +++ b/src-tauri/gen/android/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/src-tauri/gen/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..b8b5e35 --- /dev/null +++ b/src-tauri/gen/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..0a97f86 Binary files /dev/null and b/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png b/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png new file mode 100644 index 0000000..0089a96 Binary files /dev/null and b/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..0993762 Binary files /dev/null and b/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000..66a524c Binary files /dev/null and b/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..77fa992 Binary files /dev/null and b/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png b/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png new file mode 100644 index 0000000..1da732e Binary files /dev/null and b/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..a3fba07 Binary files /dev/null and b/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000..062ee53 Binary files /dev/null and b/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..737c501 Binary files /dev/null and b/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png b/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png new file mode 100644 index 0000000..2155521 Binary files /dev/null and b/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..4be6a36 Binary files /dev/null and b/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000..07d8f88 Binary files /dev/null and b/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..d098558 Binary files /dev/null and b/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png b/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png new file mode 100644 index 0000000..febaf14 Binary files /dev/null and b/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..3eeb05a Binary files /dev/null and b/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..94cc5c1 Binary files /dev/null and b/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..6d8f7a9 Binary files /dev/null and b/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png b/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png new file mode 100644 index 0000000..a3ba02e Binary files /dev/null and b/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..f854170 Binary files /dev/null and b/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..f229b80 Binary files /dev/null and b/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/src-tauri/gen/android/app/src/main/res/values-night/themes.xml b/src-tauri/gen/android/app/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..e82189e --- /dev/null +++ b/src-tauri/gen/android/app/src/main/res/values-night/themes.xml @@ -0,0 +1,14 @@ + + + + diff --git a/src-tauri/gen/android/app/src/main/res/values/colors.xml b/src-tauri/gen/android/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..f8c6127 --- /dev/null +++ b/src-tauri/gen/android/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/src-tauri/gen/android/app/src/main/res/values/ic_launcher_background.xml b/src-tauri/gen/android/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..ea9c223 --- /dev/null +++ b/src-tauri/gen/android/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #fff + \ No newline at end of file diff --git a/src-tauri/gen/android/app/src/main/res/values/strings.xml b/src-tauri/gen/android/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..9c494b5 --- /dev/null +++ b/src-tauri/gen/android/app/src/main/res/values/strings.xml @@ -0,0 +1,4 @@ + + OpenCode + OpenCode + \ No newline at end of file diff --git a/src-tauri/gen/android/app/src/main/res/values/themes.xml b/src-tauri/gen/android/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..32ca4e0 --- /dev/null +++ b/src-tauri/gen/android/app/src/main/res/values/themes.xml @@ -0,0 +1,14 @@ + + + + diff --git a/src-tauri/gen/android/app/src/main/res/xml/file_paths.xml b/src-tauri/gen/android/app/src/main/res/xml/file_paths.xml new file mode 100644 index 0000000..782d63b --- /dev/null +++ b/src-tauri/gen/android/app/src/main/res/xml/file_paths.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src-tauri/gen/android/build.gradle.kts b/src-tauri/gen/android/build.gradle.kts new file mode 100644 index 0000000..607240b --- /dev/null +++ b/src-tauri/gen/android/build.gradle.kts @@ -0,0 +1,22 @@ +buildscript { + repositories { + google() + mavenCentral() + } + dependencies { + classpath("com.android.tools.build:gradle:8.11.0") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.25") + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +tasks.register("clean").configure { + delete("build") +} + diff --git a/src-tauri/gen/android/buildSrc/build.gradle.kts b/src-tauri/gen/android/buildSrc/build.gradle.kts new file mode 100644 index 0000000..5c55bba --- /dev/null +++ b/src-tauri/gen/android/buildSrc/build.gradle.kts @@ -0,0 +1,23 @@ +plugins { + `kotlin-dsl` +} + +gradlePlugin { + plugins { + create("pluginsForCoolKids") { + id = "rust" + implementationClass = "RustPlugin" + } + } +} + +repositories { + google() + mavenCentral() +} + +dependencies { + compileOnly(gradleApi()) + implementation("com.android.tools.build:gradle:8.11.0") +} + diff --git a/src-tauri/gen/android/buildSrc/src/main/java/com/opencodeui/app/kotlin/BuildTask.kt b/src-tauri/gen/android/buildSrc/src/main/java/com/opencodeui/app/kotlin/BuildTask.kt new file mode 100644 index 0000000..a3de125 --- /dev/null +++ b/src-tauri/gen/android/buildSrc/src/main/java/com/opencodeui/app/kotlin/BuildTask.kt @@ -0,0 +1,68 @@ +import java.io.File +import org.apache.tools.ant.taskdefs.condition.Os +import org.gradle.api.DefaultTask +import org.gradle.api.GradleException +import org.gradle.api.logging.LogLevel +import org.gradle.api.tasks.Input +import org.gradle.api.tasks.TaskAction + +open class BuildTask : DefaultTask() { + @Input + var rootDirRel: String? = null + @Input + var target: String? = null + @Input + var release: Boolean? = null + + @TaskAction + fun assemble() { + val executable = """npm"""; + try { + runTauriCli(executable) + } catch (e: Exception) { + if (Os.isFamily(Os.FAMILY_WINDOWS)) { + // Try different Windows-specific extensions + val fallbacks = listOf( + "$executable.exe", + "$executable.cmd", + "$executable.bat", + ) + + var lastException: Exception = e + for (fallback in fallbacks) { + try { + runTauriCli(fallback) + return + } catch (fallbackException: Exception) { + lastException = fallbackException + } + } + throw lastException + } else { + throw e; + } + } + } + + fun runTauriCli(executable: String) { + val rootDirRel = rootDirRel ?: throw GradleException("rootDirRel cannot be null") + val target = target ?: throw GradleException("target cannot be null") + val release = release ?: throw GradleException("release cannot be null") + val args = listOf("run", "--", "tauri", "android", "android-studio-script"); + + project.exec { + workingDir(File(project.projectDir, rootDirRel)) + executable(executable) + args(args) + if (project.logger.isEnabled(LogLevel.DEBUG)) { + args("-vv") + } else if (project.logger.isEnabled(LogLevel.INFO)) { + args("-v") + } + if (release) { + args("--release") + } + args(listOf("--target", target)) + }.assertNormalExitValue() + } +} \ No newline at end of file diff --git a/src-tauri/gen/android/buildSrc/src/main/java/com/opencodeui/app/kotlin/RustPlugin.kt b/src-tauri/gen/android/buildSrc/src/main/java/com/opencodeui/app/kotlin/RustPlugin.kt new file mode 100644 index 0000000..4aa7fca --- /dev/null +++ b/src-tauri/gen/android/buildSrc/src/main/java/com/opencodeui/app/kotlin/RustPlugin.kt @@ -0,0 +1,85 @@ +import com.android.build.api.dsl.ApplicationExtension +import org.gradle.api.DefaultTask +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.get + +const val TASK_GROUP = "rust" + +open class Config { + lateinit var rootDirRel: String +} + +open class RustPlugin : Plugin { + private lateinit var config: Config + + override fun apply(project: Project) = with(project) { + config = extensions.create("rust", Config::class.java) + + val defaultAbiList = listOf("arm64-v8a", "armeabi-v7a", "x86", "x86_64"); + val abiList = (findProperty("abiList") as? String)?.split(',') ?: defaultAbiList + + val defaultArchList = listOf("arm64", "arm", "x86", "x86_64"); + val archList = (findProperty("archList") as? String)?.split(',') ?: defaultArchList + + val targetsList = (findProperty("targetList") as? String)?.split(',') ?: listOf("aarch64", "armv7", "i686", "x86_64") + + extensions.configure { + @Suppress("UnstableApiUsage") + flavorDimensions.add("abi") + productFlavors { + create("universal") { + dimension = "abi" + ndk { + abiFilters += abiList + } + } + defaultArchList.forEachIndexed { index, arch -> + create(arch) { + dimension = "abi" + ndk { + abiFilters.add(defaultAbiList[index]) + } + } + } + } + } + + afterEvaluate { + for (profile in listOf("debug", "release")) { + val profileCapitalized = profile.replaceFirstChar { it.uppercase() } + val buildTask = tasks.maybeCreate( + "rustBuildUniversal$profileCapitalized", + DefaultTask::class.java + ).apply { + group = TASK_GROUP + description = "Build dynamic library in $profile mode for all targets" + } + + tasks["mergeUniversal${profileCapitalized}JniLibFolders"].dependsOn(buildTask) + + for (targetPair in targetsList.withIndex()) { + val targetName = targetPair.value + val targetArch = archList[targetPair.index] + val targetArchCapitalized = targetArch.replaceFirstChar { it.uppercase() } + val targetBuildTask = project.tasks.maybeCreate( + "rustBuild$targetArchCapitalized$profileCapitalized", + BuildTask::class.java + ).apply { + group = TASK_GROUP + description = "Build dynamic library in $profile mode for $targetArch" + rootDirRel = config.rootDirRel + target = targetName + release = profile == "release" + } + + buildTask.dependsOn(targetBuildTask) + tasks["merge$targetArchCapitalized${profileCapitalized}JniLibFolders"].dependsOn( + targetBuildTask + ) + } + } + } + } +} \ No newline at end of file diff --git a/src-tauri/gen/android/gradle.properties b/src-tauri/gen/android/gradle.properties new file mode 100644 index 0000000..2a7ec69 --- /dev/null +++ b/src-tauri/gen/android/gradle.properties @@ -0,0 +1,24 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app"s APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official +# Enables namespacing of each library's R class so that its R class includes only the +# resources declared in the library itself and none from the library's dependencies, +# thereby reducing the size of the R class for that library +android.nonTransitiveRClass=true +android.nonFinalResIds=false \ No newline at end of file diff --git a/src-tauri/gen/android/gradle/wrapper/gradle-wrapper.jar b/src-tauri/gen/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..e708b1c Binary files /dev/null and b/src-tauri/gen/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/src-tauri/gen/android/gradle/wrapper/gradle-wrapper.properties b/src-tauri/gen/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..c5f9a53 --- /dev/null +++ b/src-tauri/gen/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Tue May 10 19:22:52 CST 2022 +distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/src-tauri/gen/android/gradlew b/src-tauri/gen/android/gradlew new file mode 100644 index 0000000..4f906e0 --- /dev/null +++ b/src-tauri/gen/android/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/src-tauri/gen/android/gradlew.bat b/src-tauri/gen/android/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/src-tauri/gen/android/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src-tauri/gen/android/settings.gradle b/src-tauri/gen/android/settings.gradle new file mode 100644 index 0000000..3939116 --- /dev/null +++ b/src-tauri/gen/android/settings.gradle @@ -0,0 +1,3 @@ +include ':app' + +apply from: 'tauri.settings.gradle' diff --git a/src-tauri/icons/128x128.png b/src-tauri/icons/128x128.png new file mode 100644 index 0000000..0355a11 Binary files /dev/null and b/src-tauri/icons/128x128.png differ diff --git a/src-tauri/icons/128x128@2x.png b/src-tauri/icons/128x128@2x.png new file mode 100644 index 0000000..070d85e Binary files /dev/null and b/src-tauri/icons/128x128@2x.png differ diff --git a/src-tauri/icons/32x32.png b/src-tauri/icons/32x32.png new file mode 100644 index 0000000..bb1ebb9 Binary files /dev/null and b/src-tauri/icons/32x32.png differ diff --git a/src-tauri/icons/64x64.png b/src-tauri/icons/64x64.png new file mode 100644 index 0000000..54e0c94 Binary files /dev/null and b/src-tauri/icons/64x64.png differ diff --git a/src-tauri/icons/Square107x107Logo.png b/src-tauri/icons/Square107x107Logo.png new file mode 100644 index 0000000..45b72b4 Binary files /dev/null and b/src-tauri/icons/Square107x107Logo.png differ diff --git a/src-tauri/icons/Square142x142Logo.png b/src-tauri/icons/Square142x142Logo.png new file mode 100644 index 0000000..4ecb569 Binary files /dev/null and b/src-tauri/icons/Square142x142Logo.png differ diff --git a/src-tauri/icons/Square150x150Logo.png b/src-tauri/icons/Square150x150Logo.png new file mode 100644 index 0000000..07ab14f Binary files /dev/null and b/src-tauri/icons/Square150x150Logo.png differ diff --git a/src-tauri/icons/Square284x284Logo.png b/src-tauri/icons/Square284x284Logo.png new file mode 100644 index 0000000..3ea7634 Binary files /dev/null and b/src-tauri/icons/Square284x284Logo.png differ diff --git a/src-tauri/icons/Square30x30Logo.png b/src-tauri/icons/Square30x30Logo.png new file mode 100644 index 0000000..ffb6532 Binary files /dev/null and b/src-tauri/icons/Square30x30Logo.png differ diff --git a/src-tauri/icons/Square310x310Logo.png b/src-tauri/icons/Square310x310Logo.png new file mode 100644 index 0000000..1cd55e2 Binary files /dev/null and b/src-tauri/icons/Square310x310Logo.png differ diff --git a/src-tauri/icons/Square44x44Logo.png b/src-tauri/icons/Square44x44Logo.png new file mode 100644 index 0000000..fb0b750 Binary files /dev/null and b/src-tauri/icons/Square44x44Logo.png differ diff --git a/src-tauri/icons/Square71x71Logo.png b/src-tauri/icons/Square71x71Logo.png new file mode 100644 index 0000000..6ce0d72 Binary files /dev/null and b/src-tauri/icons/Square71x71Logo.png differ diff --git a/src-tauri/icons/Square89x89Logo.png b/src-tauri/icons/Square89x89Logo.png new file mode 100644 index 0000000..0e51d90 Binary files /dev/null and b/src-tauri/icons/Square89x89Logo.png differ diff --git a/src-tauri/icons/StoreLogo.png b/src-tauri/icons/StoreLogo.png new file mode 100644 index 0000000..4641dae Binary files /dev/null and b/src-tauri/icons/StoreLogo.png differ diff --git a/src-tauri/icons/icon.icns b/src-tauri/icons/icon.icns new file mode 100644 index 0000000..ee985a2 Binary files /dev/null and b/src-tauri/icons/icon.icns differ diff --git a/src-tauri/icons/icon.ico b/src-tauri/icons/icon.ico new file mode 100644 index 0000000..1fb7894 Binary files /dev/null and b/src-tauri/icons/icon.ico differ diff --git a/src-tauri/icons/icon.png b/src-tauri/icons/icon.png new file mode 100644 index 0000000..a17af48 Binary files /dev/null and b/src-tauri/icons/icon.png differ diff --git a/src-tauri/icons/ios/AppIcon-20x20@1x.png b/src-tauri/icons/ios/AppIcon-20x20@1x.png new file mode 100644 index 0000000..010eaa5 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-20x20@1x.png differ diff --git a/src-tauri/icons/ios/AppIcon-20x20@2x-1.png b/src-tauri/icons/ios/AppIcon-20x20@2x-1.png new file mode 100644 index 0000000..9912711 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-20x20@2x-1.png differ diff --git a/src-tauri/icons/ios/AppIcon-20x20@2x.png b/src-tauri/icons/ios/AppIcon-20x20@2x.png new file mode 100644 index 0000000..9912711 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-20x20@2x.png differ diff --git a/src-tauri/icons/ios/AppIcon-20x20@3x.png b/src-tauri/icons/ios/AppIcon-20x20@3x.png new file mode 100644 index 0000000..976b557 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-20x20@3x.png differ diff --git a/src-tauri/icons/ios/AppIcon-29x29@1x.png b/src-tauri/icons/ios/AppIcon-29x29@1x.png new file mode 100644 index 0000000..002c941 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-29x29@1x.png differ diff --git a/src-tauri/icons/ios/AppIcon-29x29@2x-1.png b/src-tauri/icons/ios/AppIcon-29x29@2x-1.png new file mode 100644 index 0000000..fbf5f06 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-29x29@2x-1.png differ diff --git a/src-tauri/icons/ios/AppIcon-29x29@2x.png b/src-tauri/icons/ios/AppIcon-29x29@2x.png new file mode 100644 index 0000000..fbf5f06 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-29x29@2x.png differ diff --git a/src-tauri/icons/ios/AppIcon-29x29@3x.png b/src-tauri/icons/ios/AppIcon-29x29@3x.png new file mode 100644 index 0000000..19a01b9 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-29x29@3x.png differ diff --git a/src-tauri/icons/ios/AppIcon-40x40@1x.png b/src-tauri/icons/ios/AppIcon-40x40@1x.png new file mode 100644 index 0000000..9912711 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-40x40@1x.png differ diff --git a/src-tauri/icons/ios/AppIcon-40x40@2x-1.png b/src-tauri/icons/ios/AppIcon-40x40@2x-1.png new file mode 100644 index 0000000..4d6b801 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-40x40@2x-1.png differ diff --git a/src-tauri/icons/ios/AppIcon-40x40@2x.png b/src-tauri/icons/ios/AppIcon-40x40@2x.png new file mode 100644 index 0000000..4d6b801 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-40x40@2x.png differ diff --git a/src-tauri/icons/ios/AppIcon-40x40@3x.png b/src-tauri/icons/ios/AppIcon-40x40@3x.png new file mode 100644 index 0000000..fff4eb0 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-40x40@3x.png differ diff --git a/src-tauri/icons/ios/AppIcon-512@2x.png b/src-tauri/icons/ios/AppIcon-512@2x.png new file mode 100644 index 0000000..31dcc3d Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-512@2x.png differ diff --git a/src-tauri/icons/ios/AppIcon-60x60@2x.png b/src-tauri/icons/ios/AppIcon-60x60@2x.png new file mode 100644 index 0000000..fff4eb0 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-60x60@2x.png differ diff --git a/src-tauri/icons/ios/AppIcon-60x60@3x.png b/src-tauri/icons/ios/AppIcon-60x60@3x.png new file mode 100644 index 0000000..f8067f5 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-60x60@3x.png differ diff --git a/src-tauri/icons/ios/AppIcon-76x76@1x.png b/src-tauri/icons/ios/AppIcon-76x76@1x.png new file mode 100644 index 0000000..230d2f0 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-76x76@1x.png differ diff --git a/src-tauri/icons/ios/AppIcon-76x76@2x.png b/src-tauri/icons/ios/AppIcon-76x76@2x.png new file mode 100644 index 0000000..e6b6f79 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-76x76@2x.png differ diff --git a/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png b/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png new file mode 100644 index 0000000..f904a18 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png differ diff --git a/src-tauri/src/app/bridge/args.rs b/src-tauri/src/app/bridge/args.rs new file mode 100644 index 0000000..8cbbc07 --- /dev/null +++ b/src-tauri/src/app/bridge/args.rs @@ -0,0 +1,74 @@ +use serde::Deserialize; + +/// Arguments for `bridge_connect`. +/// +/// `bridge_id` is an opaque label chosen by the frontend (e.g. `"sse"`, +/// a PTY id, etc.). Together with the window label it forms the unique +/// connection key. +/// +/// The Rust layer inspects the URL scheme to pick the transport: +/// - `ws://` / `wss://` → WebSocket (bidirectional) +/// - `http://` / `https://` → HTTP streaming (read-only) +#[derive(Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct ConnectArgs { + bridge_id: String, + url: String, + auth_header: Option, +} + +impl ConnectArgs { + #[inline(always)] + pub fn bridge_id(&self) -> &str { + &self.bridge_id + } + + #[inline(always)] + pub fn url(&self) -> &str { + &self.url + } + + #[inline(always)] + pub fn auth_header(&self) -> Option<&str> { + self.auth_header.as_deref() + } + + /// Returns `true` when the URL uses WebSocket scheme. + pub fn is_websocket(&self) -> bool { + self.url.starts_with("ws://") || self.url.starts_with("wss://") + } +} + +/// Arguments for `bridge_send` (WebSocket only). +#[derive(Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct SendArgs { + bridge_id: String, + data: String, +} + +impl SendArgs { + #[inline(always)] + pub fn bridge_id(&self) -> &str { + &self.bridge_id + } + + #[inline(always)] + pub fn data(&self) -> &str { + &self.data + } +} + +/// Arguments for `bridge_disconnect`. +#[derive(Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct DisconnectArgs { + bridge_id: String, +} + +impl DisconnectArgs { + #[inline(always)] + pub fn bridge_id(&self) -> &str { + &self.bridge_id + } +} diff --git a/src-tauri/src/app/bridge/event.rs b/src-tauri/src/app/bridge/event.rs new file mode 100644 index 0000000..3cb035b --- /dev/null +++ b/src-tauri/src/app/bridge/event.rs @@ -0,0 +1,15 @@ +use serde::Serialize; + +/// Unified bridge event pushed to the frontend via Tauri Channel. +/// +/// The Rust layer is a transparent proxy — `data` is forwarded as-is +/// without parsing or field renaming. The frontend decides how to +/// interpret it (SSE line parsing, terminal output, etc.). +#[derive(Clone, Serialize)] +#[serde(rename_all = "camelCase", tag = "event", content = "data")] +pub enum BridgeEvent { + Connected, + Data { data: String }, + Disconnected { code: Option, reason: String }, + Error { message: String }, +} diff --git a/src-tauri/src/app/bridge/mod.rs b/src-tauri/src/app/bridge/mod.rs new file mode 100644 index 0000000..c781d25 --- /dev/null +++ b/src-tauri/src/app/bridge/mod.rs @@ -0,0 +1,7 @@ +mod args; +mod event; +mod state; + +pub use args::{ConnectArgs, DisconnectArgs, SendArgs}; +pub use event::BridgeEvent; +pub use state::{BridgeCommand, BridgeConnection, BridgeKey, BridgeState}; diff --git a/src-tauri/src/app/bridge/state.rs b/src-tauri/src/app/bridge/state.rs new file mode 100644 index 0000000..ebba9cb --- /dev/null +++ b/src-tauri/src/app/bridge/state.rs @@ -0,0 +1,142 @@ +use std::{ + collections::HashMap, + sync::{ + atomic::{AtomicU64, Ordering}, + Mutex, + }, +}; + +use tokio::sync::mpsc::UnboundedSender; + +/// Command sent from the frontend to an active WebSocket bridge. +#[derive(Debug)] +pub enum BridgeCommand { + Send(String), + Close, +} + +/// A single active bridge connection. +pub struct BridgeConnection { + pub id: u64, + /// `Some` for WebSocket connections (bidirectional), + /// `None` for HTTP stream connections (read-only, cancelled via id mismatch). + pub tx: Option>, +} + +impl BridgeConnection { + pub fn new_ws(id: u64, tx: UnboundedSender) -> Self { + Self { id, tx: Some(tx) } + } + + pub fn new_stream(id: u64) -> Self { + Self { id, tx: None } + } +} + +/// Composite key: (window label, bridge id). +#[derive(Clone, Debug, Eq, Hash, PartialEq)] +pub struct BridgeKey { + window_label: String, + bridge_id: String, +} + +impl BridgeKey { + pub fn new(window_label: &str, bridge_id: &str) -> Self { + Self { + window_label: window_label.to_string(), + bridge_id: bridge_id.to_string(), + } + } + + pub fn window_label(&self) -> &str { + &self.window_label + } +} + +/// Global bridge state shared across all windows. +#[derive(Default)] +pub struct BridgeState { + next_id: AtomicU64, + active: Mutex>, +} + +impl BridgeState { + /// Allocate the next connection id. + pub fn next_conn_id(&self) -> u64 { + self.next_id.fetch_add(1, Ordering::SeqCst) + 1 + } + + /// Insert a new connection, returning the previous one (if any) so + /// the caller can shut it down. + pub fn replace(&self, key: BridgeKey, conn: BridgeConnection) -> Option { + self.active + .lock() + .expect("bridge state poisoned") + .insert(key, conn) + } + + /// Get the sender for a WebSocket connection. + pub fn sender(&self, key: &BridgeKey) -> Option> { + self.active + .lock() + .expect("bridge state poisoned") + .get(key) + .and_then(|conn| conn.tx.clone()) + } + + /// Remove the connection only if its id matches (prevents a new + /// connection from being removed by an old task's cleanup). + pub fn remove_if_current(&self, key: &BridgeKey, id: u64) { + let mut guard = self.active.lock().expect("bridge state poisoned"); + if guard.get(key).is_some_and(|conn| conn.id == id) { + guard.remove(key); + } + } + + /// Gracefully disconnect a specific bridge. + pub fn disconnect(&self, key: &BridgeKey) -> bool { + let removed = self + .active + .lock() + .expect("bridge state poisoned") + .remove(key); + if let Some(conn) = removed { + if let Some(tx) = conn.tx { + let _ = tx.send(BridgeCommand::Close); + } + return true; + } + false + } + + /// Disconnect all bridges belonging to a window (called on window destroy). + pub fn disconnect_window(&self, window_label: &str) { + let removed = { + let mut guard = self.active.lock().expect("bridge state poisoned"); + let keys: Vec<_> = guard + .keys() + .filter(|k| k.window_label() == window_label) + .cloned() + .collect(); + keys.into_iter() + .filter_map(|k| guard.remove(&k)) + .collect::>() + }; + + for conn in removed { + if let Some(tx) = conn.tx { + let _ = tx.send(BridgeCommand::Close); + } + } + } + + /// Check whether a connection id is still current (used by HTTP + /// stream loops to detect cancellation). + pub fn is_current(&self, key: &BridgeKey, id: u64) -> bool { + self.active + .lock() + .expect("bridge state poisoned") + .get(key) + .is_some_and(|conn| conn.id == id) + } +} diff --git a/src-tauri/src/app/commands/bridge.rs b/src-tauri/src/app/commands/bridge.rs new file mode 100644 index 0000000..c6b2b9a --- /dev/null +++ b/src-tauri/src/app/commands/bridge.rs @@ -0,0 +1,402 @@ +// ============================================ +// Unified Bridge Commands +// +// A single set of Tauri commands that transparently proxies both +// HTTP streaming (SSE) and WebSocket (PTY) connections. +// +// The frontend picks the transport by URL scheme: +// ws:// / wss:// → WebSocket (bidirectional) +// http:// / https:// → HTTP stream (read-only) +// ============================================ + +use crate::app::bridge::{ + BridgeCommand, BridgeConnection, BridgeEvent, BridgeKey, BridgeState, ConnectArgs, + DisconnectArgs, SendArgs, +}; +use futures_util::{SinkExt, StreamExt}; +use std::time::Duration; +use tauri::{ipc::Channel, State}; +use tokio::sync::mpsc; + +fn emit(channel: &Channel, event: BridgeEvent) { + let _ = channel.send(event); +} + +fn split_valid_utf8_prefix(bytes: &[u8]) -> Option<(String, usize)> { + if bytes.is_empty() { + return None; + } + + match std::str::from_utf8(bytes) { + Ok(text) => Some((text.to_string(), bytes.len())), + Err(error) => { + let valid_up_to = error.valid_up_to(); + + if let Some(error_len) = error.error_len() { + let consumed = valid_up_to + error_len; + let text = String::from_utf8_lossy(&bytes[..consumed]).into_owned(); + Some((text, consumed)) + } else if valid_up_to > 0 { + let text = std::str::from_utf8(&bytes[..valid_up_to]) + .expect("valid_up_to must point to a valid UTF-8 prefix") + .to_string(); + Some((text, valid_up_to)) + } else { + None + } + } + } +} + +fn emit_stream_chunk(channel: &Channel, pending_utf8: &mut Vec, chunk: &[u8]) { + if chunk.is_empty() { + return; + } + + pending_utf8.extend_from_slice(chunk); + + while let Some((text, consumed)) = split_valid_utf8_prefix(pending_utf8.as_slice()) { + pending_utf8.drain(..consumed); + if !text.is_empty() { + emit(channel, BridgeEvent::Data { data: text }); + } + } +} + +// ============================================ +// bridge_connect — auto-selects transport +// ============================================ + +#[tauri::command] +pub async fn bridge_connect( + window: tauri::Window, + state: State<'_, BridgeState>, + args: ConnectArgs, + on_event: Channel, +) -> Result<(), String> { + if args.is_websocket() { + connect_ws(window, state, args, on_event).await + } else { + connect_stream(window, state, args, on_event).await + } +} + +// ============================================ +// bridge_send — WebSocket only +// ============================================ + +#[tauri::command] +pub async fn bridge_send( + window: tauri::Window, + state: State<'_, BridgeState>, + args: SendArgs, +) -> Result<(), String> { + let key = BridgeKey::new(window.label(), args.bridge_id()); + let sender = state + .sender(&key) + .ok_or_else(|| format!("bridge '{}' is not active", args.bridge_id()))?; + + sender + .send(BridgeCommand::Send(args.data().to_string())) + .map_err(|_| format!("bridge '{}' is closed", args.bridge_id())) +} + +// ============================================ +// bridge_disconnect +// ============================================ + +#[tauri::command] +pub async fn bridge_disconnect( + window: tauri::Window, + state: State<'_, BridgeState>, + args: DisconnectArgs, +) -> Result<(), String> { + let key = BridgeKey::new(window.label(), args.bridge_id()); + state.disconnect(&key); + Ok(()) +} + +// ============================================ +// HTTP stream transport (for SSE) +// ============================================ + +async fn connect_stream( + window: tauri::Window, + state: State<'_, BridgeState>, + args: ConnectArgs, + on_event: Channel, +) -> Result<(), String> { + let conn_id = state.next_conn_id(); + let key = BridgeKey::new(window.label(), args.bridge_id()); + + // Replace any previous connection with the same key + if let Some(prev) = state.replace(key.clone(), BridgeConnection::new_stream(conn_id)) { + if let Some(tx) = prev.tx { + let _ = tx.send(BridgeCommand::Close); + } + } + + let client = reqwest::Client::builder() + .connect_timeout(Duration::from_secs(15)) + .tcp_keepalive(Duration::from_secs(30)) + .build() + .map_err(|e| format!("failed to create HTTP client: {}", e))?; + + let mut req = client.get(args.url()); + if let Some(auth) = args.auth_header() { + req = req.header("Authorization", auth); + } + + let response = match req.send().await { + Ok(r) => r, + Err(e) => { + let msg = format!("HTTP stream connection failed: {}", e); + emit( + &on_event, + BridgeEvent::Error { + message: msg.clone(), + }, + ); + state.remove_if_current(&key, conn_id); + return Err(msg); + } + }; + + if !response.status().is_success() { + let msg = format!("HTTP stream server returned {}", response.status()); + emit( + &on_event, + BridgeEvent::Error { + message: msg.clone(), + }, + ); + state.remove_if_current(&key, conn_id); + return Err(msg); + } + + emit(&on_event, BridgeEvent::Connected); + + // Read timeout — if no data arrives for 90s the connection is likely dead + const READ_TIMEOUT: Duration = Duration::from_secs(90); + let mut stream = response.bytes_stream(); + let mut pending_utf8 = Vec::new(); + + loop { + // Check cancellation (disconnect or replaced by a new connect) + if !state.is_current(&key, conn_id) { + emit( + &on_event, + BridgeEvent::Disconnected { + code: None, + reason: "Disconnected by client".to_string(), + }, + ); + return Ok(()); + } + + match tokio::time::timeout(READ_TIMEOUT, stream.next()).await { + Ok(Some(Ok(chunk))) => { + emit_stream_chunk(&on_event, &mut pending_utf8, chunk.as_ref()); + } + Ok(Some(Err(e))) => { + let msg = format!("HTTP stream error: {}", e); + emit( + &on_event, + BridgeEvent::Error { + message: msg.clone(), + }, + ); + state.remove_if_current(&key, conn_id); + return Err(msg); + } + Ok(None) => { + state.remove_if_current(&key, conn_id); + emit( + &on_event, + BridgeEvent::Disconnected { + code: None, + reason: "Stream ended".to_string(), + }, + ); + return Ok(()); + } + Err(_) => { + let msg = format!( + "HTTP stream read timeout ({}s without data)", + READ_TIMEOUT.as_secs() + ); + emit( + &on_event, + BridgeEvent::Error { + message: msg.clone(), + }, + ); + state.remove_if_current(&key, conn_id); + return Err(msg); + } + } + } +} + +#[cfg(test)] +mod tests { + use super::split_valid_utf8_prefix; + + #[test] + fn split_valid_utf8_prefix_waits_for_incomplete_chinese_bytes() { + let text = "中文A"; + let bytes = text.as_bytes(); + + assert_eq!(split_valid_utf8_prefix(&bytes[..2]), None); + assert_eq!( + split_valid_utf8_prefix(&bytes[..3]), + Some(("中".to_string(), 3)) + ); + assert_eq!( + split_valid_utf8_prefix(bytes), + Some((text.to_string(), bytes.len())) + ); + } + + #[test] + fn split_valid_utf8_prefix_returns_valid_prefix_before_incomplete_tail() { + let mut bytes = "中文".as_bytes().to_vec(); + bytes.extend_from_slice(&"世".as_bytes()[..2]); + + assert_eq!( + split_valid_utf8_prefix(&bytes), + Some(("中文".to_string(), "中文".len())) + ); + } +} + +// ============================================ +// WebSocket transport (for PTY) +// ============================================ + +async fn connect_ws( + window: tauri::Window, + state: State<'_, BridgeState>, + args: ConnectArgs, + on_event: Channel, +) -> Result<(), String> { + use tokio_tungstenite::{ + connect_async, + tungstenite::{client::IntoClientRequest, http::HeaderValue, Error as WsError, Message}, + }; + + let conn_id = state.next_conn_id(); + let key = BridgeKey::new(window.label(), args.bridge_id()); + let (tx, mut rx) = mpsc::unbounded_channel(); + + // Replace any previous connection with the same key + if let Some(prev) = state.replace(key.clone(), BridgeConnection::new_ws(conn_id, tx)) { + if let Some(prev_tx) = prev.tx { + let _ = prev_tx.send(BridgeCommand::Close); + } + } + + let mut request = args + .url() + .into_client_request() + .map_err(|e| format!("invalid WebSocket URL: {}", e))?; + + if let Some(auth) = args.auth_header() { + let value = HeaderValue::from_str(auth) + .map_err(|e| format!("invalid Authorization header: {}", e))?; + request.headers_mut().insert("Authorization", value); + } + + let (ws_stream, _) = match connect_async(request).await { + Ok(result) => result, + Err(error) => { + let message = match error { + WsError::Http(response) => { + format!("WebSocket server returned {}", response.status()) + } + other => format!("WebSocket connection failed: {}", other), + }; + emit( + &on_event, + BridgeEvent::Error { + message: message.clone(), + }, + ); + state.remove_if_current(&key, conn_id); + return Err(message); + } + }; + + emit(&on_event, BridgeEvent::Connected); + + let (mut write, mut read) = ws_stream.split(); + + loop { + tokio::select! { + outbound = rx.recv() => match outbound { + Some(BridgeCommand::Send(data)) => { + if let Err(error) = write.send(Message::Text(data.into())).await { + let msg = format!("WebSocket write failed: {}", error); + emit(&on_event, BridgeEvent::Error { message: msg.clone() }); + state.remove_if_current(&key, conn_id); + return Err(msg); + } + } + Some(BridgeCommand::Close) | None => { + let _ = write.close().await; + state.remove_if_current(&key, conn_id); + emit(&on_event, BridgeEvent::Disconnected { + code: Some(1000), + reason: "Disconnected by client".to_string(), + }); + return Ok(()); + } + }, + inbound = read.next() => match inbound { + Some(Ok(message)) => match message { + Message::Text(text) => { + emit(&on_event, BridgeEvent::Data { data: text.to_string() }); + } + Message::Binary(bytes) => { + emit(&on_event, BridgeEvent::Data { + data: String::from_utf8_lossy(&bytes).into_owned(), + }); + } + Message::Ping(payload) => { + if let Err(error) = write.send(Message::Pong(payload)).await { + let msg = format!("WebSocket pong failed: {}", error); + emit(&on_event, BridgeEvent::Error { message: msg.clone() }); + state.remove_if_current(&key, conn_id); + return Err(msg); + } + } + Message::Pong(_) => {} + Message::Close(frame) => { + let code = frame.as_ref().map(|f| u16::from(f.code)); + let reason = frame + .map(|f| f.reason.to_string()) + .unwrap_or_else(|| "Connection closed by server".to_string()); + state.remove_if_current(&key, conn_id); + emit(&on_event, BridgeEvent::Disconnected { code, reason }); + return Ok(()); + } + _ => {} + }, + Some(Err(error)) => { + let msg = format!("WebSocket stream error: {}", error); + emit(&on_event, BridgeEvent::Error { message: msg.clone() }); + state.remove_if_current(&key, conn_id); + return Err(msg); + } + None => { + state.remove_if_current(&key, conn_id); + emit(&on_event, BridgeEvent::Disconnected { + code: None, + reason: "Stream ended".to_string(), + }); + return Ok(()); + } + } + } + } +} diff --git a/src-tauri/src/app/commands/mod.rs b/src-tauri/src/app/commands/mod.rs new file mode 100644 index 0000000..f235402 --- /dev/null +++ b/src-tauri/src/app/commands/mod.rs @@ -0,0 +1,5 @@ +pub mod bridge; +#[cfg(not(target_os = "android"))] +pub mod pi_agent; +#[cfg(not(target_os = "android"))] +pub mod utils; diff --git a/src-tauri/src/app/commands/pi_agent.rs b/src-tauri/src/app/commands/pi_agent.rs new file mode 100644 index 0000000..c1e29d1 --- /dev/null +++ b/src-tauri/src/app/commands/pi_agent.rs @@ -0,0 +1,166 @@ +// ============================================ +// Pi Agent Service Management (desktop only) +// Android 不支持子进程管理和 window.destroy() +// ============================================ + +use crate::app::service::ServiceState; +use std::{ + process::{Command, Stdio}, + sync::atomic::Ordering, + time::Duration, +}; +use tauri::State; + +/// 检查 pi 服务是否在运行(通过 health endpoint) +pub async fn is_service_running(url: &str) -> bool { + let health_url = format!("{}/api/health", url.trim_end_matches('/')); + match reqwest::Client::builder() + .connect_timeout(Duration::from_secs(3)) + .build() + { + Ok(client) => client + .get(&health_url) + .timeout(Duration::from_secs(5)) + .send() + .await + .map(|r| r.status().is_success()) + .unwrap_or(false), + Err(_) => false, + } +} + +/// 启动 pi serve 进程 +fn spawn_pi_serve( + binary_path: &str, + env_vars: &std::collections::HashMap, +) -> Result { + log::info!("Starting pi serve with binary: {}", binary_path); + if !env_vars.is_empty() { + log::info!("Injecting {} environment variable(s)", env_vars.len()); + } + + let mut cmd = Command::new(binary_path); + cmd.arg("rpc").stdout(Stdio::null()).stderr(Stdio::null()); + + // 注入用户配置的环境变量 + for (key, value) in env_vars { + cmd.env(key, value); + } + + #[cfg(target_os = "windows")] + { + use std::os::windows::process::CommandExt; + const CREATE_NO_WINDOW: u32 = 0x08000000; + cmd.creation_flags(CREATE_NO_WINDOW); + } + + cmd.spawn().map_err(|e| { + format!( + "Failed to start '{}': {}. Check that the path is correct.", + binary_path, e + ) + }) +} + +/// 跨平台杀进程 +pub fn kill_process_by_pid(pid: u32) { + #[cfg(target_os = "windows")] + { + use std::os::windows::process::CommandExt; + const CREATE_NO_WINDOW: u32 = 0x08000000; + let _ = Command::new("taskkill") + .args(["/PID", &pid.to_string(), "/F", "/T"]) + .stdout(Stdio::null()) + .stderr(Stdio::null()) + .creation_flags(CREATE_NO_WINDOW) + .spawn(); + } + + #[cfg(not(target_os = "windows"))] + { + let _ = Command::new("kill") + .arg(pid.to_string()) + .stdout(Stdio::null()) + .stderr(Stdio::null()) + .spawn(); + } +} + +/// 检查 pi 服务是否在运行 +#[tauri::command] +pub async fn check_pi_service(url: String) -> Result { + Ok(is_service_running(&url).await) +} + +/// 启动 pi serve +#[tauri::command] +pub async fn start_pi_service( + state: State<'_, ServiceState>, + url: String, + binary_path: String, + env_vars: std::collections::HashMap, +) -> Result { + if is_service_running(&url).await { + log::info!("pi service already running at {}", url); + return Ok(false); + } + + let child = spawn_pi_serve(&binary_path, &env_vars)?; + let pid = child.id(); + log::info!("Started pi serve, PID: {}", pid); + + state.child_pid.store(pid, Ordering::SeqCst); + state.we_started.store(true, Ordering::SeqCst); + + for _ in 0..30 { + tokio::time::sleep(Duration::from_millis(500)).await; + if is_service_running(&url).await { + log::info!("pi service is ready at {}", url); + return Ok(true); + } + } + + log::warn!("pi service started but health check not passing yet"); + Ok(true) +} + +/// 停止 pi serve +#[tauri::command] +pub async fn stop_pi_service(state: State<'_, ServiceState>) -> Result<(), String> { + let pid = state.child_pid.swap(0, Ordering::SeqCst); + state.we_started.store(false, Ordering::SeqCst); + + if pid > 0 { + log::info!("Stopping pi serve, PID: {}", pid); + kill_process_by_pid(pid); + } + + Ok(()) +} + +/// 查询是否由我们启动了 pi 服务 +#[tauri::command] +pub async fn get_service_started_by_us(state: State<'_, ServiceState>) -> Result { + Ok(state.we_started.load(Ordering::SeqCst)) +} + +/// 确认关闭应用(前端调用,可选择是否同时停止服务) +#[tauri::command] +pub async fn confirm_close_app( + window: tauri::Window, + state: State<'_, ServiceState>, + stop_service: bool, +) -> Result<(), String> { + if stop_service { + let pid = state.child_pid.swap(0, Ordering::SeqCst); + if pid > 0 { + log::info!("Closing app and stopping pi serve, PID: {}", pid); + kill_process_by_pid(pid); + } + state.we_started.store(false, Ordering::SeqCst); + } else { + log::info!("Closing app, keeping pi serve running"); + } + + window.destroy().map_err(|e| e.to_string()) +} diff --git a/src-tauri/src/app/commands/utils.rs b/src-tauri/src/app/commands/utils.rs new file mode 100644 index 0000000..6e9c552 --- /dev/null +++ b/src-tauri/src/app/commands/utils.rs @@ -0,0 +1,45 @@ +use crate::app::dir_state::OpenDirectoryState; +use std::sync::Arc; +use tauri::State; + +/// 获取启动时传入的目录路径(一次性读取后清空) +#[tauri::command] +pub fn get_cli_directory( + window: tauri::Window, + state: State<'_, OpenDirectoryState>, +) -> Option> { + state.pending().pin().remove(window.label()).cloned() +} + +/// 新建桌面窗口 +#[cfg(not(target_os = "android"))] +#[tauri::command] +pub async fn open_new_window(app: tauri::AppHandle, directory: Option) { + crate::app::create_new_window(&app, directory); +} + +/// 桌面窗口前端首帧完成后,通知 Rust 显示真实窗口并关闭 loading 窗口 +#[cfg(not(target_os = "android"))] +#[tauri::command] +pub fn desktop_window_ready(window: tauri::Window) -> Result<(), String> { + crate::app::mark_window_ready(&window).map_err(|err| err.to_string()) +} + +#[derive(serde::Serialize, serde::Deserialize, Clone, Debug)] +pub struct PiAgentConnection { + pub port: u16, + pub token: String, +} + +#[tauri::command] +pub fn get_pi_agent_connection() -> Option { + let home = std::env::var_os("USERPROFILE") + .or_else(|| std::env::var_os("HOME")) + .map(std::path::PathBuf::from)?; + let conn_file = home.join(".pi").join("agent").join("piagentui-port.json"); + if !conn_file.exists() { + return None; + } + let file = std::fs::File::open(conn_file).ok()?; + serde_json::from_reader(file).ok() +} diff --git a/src-tauri/src/app/dir_state.rs b/src-tauri/src/app/dir_state.rs new file mode 100644 index 0000000..83e4463 --- /dev/null +++ b/src-tauri/src/app/dir_state.rs @@ -0,0 +1,27 @@ +// ============================================ +// Open Directory State (desktop only) +// 存储启动时传入的目录路径(右键菜单、拖放等) +// ============================================ + +use papaya::HashMap as PaHashMap; +use rapidhash::fast::RandomState; +use std::sync::Arc; + +pub struct OpenDirectoryState { + /// per-window 待处理目录: window label → directory path + pending: PaHashMap, RandomState>, +} + +impl Default for OpenDirectoryState { + fn default() -> Self { + Self { + pending: PaHashMap::with_hasher(RandomState::new()), + } + } +} + +impl OpenDirectoryState { + pub fn pending(&self) -> &PaHashMap, RandomState> { + &self.pending + } +} diff --git a/src-tauri/src/app/mod.rs b/src-tauri/src/app/mod.rs new file mode 100644 index 0000000..80d0481 --- /dev/null +++ b/src-tauri/src/app/mod.rs @@ -0,0 +1,301 @@ +// ============================================ +// Tauri Application Entry Point +// Unified Bridge + Plugin Registration + Service Management +// ============================================ +mod bridge; +mod commands; +#[cfg(not(target_os = "android"))] +mod dir_state; +mod service; + +use bridge::BridgeState; +use std::sync::atomic::{AtomicU64, Ordering}; +use tauri::Manager; + +#[cfg(windows)] +use tauri_plugin_decorum::WebviewWindowExt; + +// Desktop-only imports for service management +#[cfg(not(target_os = "android"))] +use dir_state::OpenDirectoryState; +#[cfg(not(target_os = "android"))] +use std::sync::Arc; +#[cfg(not(target_os = "android"))] +use tauri::Emitter; + +/// 从命令行参数中提取目录路径 +#[cfg(not(target_os = "android"))] +fn extract_directory_from_args(args: &[String]) -> Option { + for arg in args.iter().skip(1) { + if arg.starts_with('-') { + continue; + } + if std::path::Path::new(arg).is_dir() { + return Some(arg.clone()); + } + } + None +} + +#[cfg(not(target_os = "android"))] +fn create_main_window(app: &tauri::AppHandle) -> Result { + if let Some(window) = app.get_webview_window("main") { + return Ok(window); + } + + let config = app + .config() + .app + .windows + .iter() + .find(|window| window.label == "main") + .cloned() + .expect("main window config missing"); + + configure_desktop_window_builder(tauri::WebviewWindowBuilder::from_config(app, &config)?) + .visible(false) + .build() +} + +#[cfg(target_os = "android")] +fn create_main_window(app: &tauri::AppHandle) -> Result { + if let Some(window) = app.get_webview_window("main") { + return Ok(window); + } + + let config = app + .config() + .app + .windows + .iter() + .find(|window| window.label == "main") + .cloned() + .expect("main window config missing"); + + tauri::WebviewWindowBuilder::from_config(app, &config)?.build() +} + +#[cfg(not(target_os = "android"))] +fn create_hidden_content_window( + app: &tauri::AppHandle, + label: &str, +) -> Result { + let builder = configure_desktop_window_builder(tauri::WebviewWindowBuilder::new( + app, + label, + tauri::WebviewUrl::App("index.html".into()), + )) + .title("PiAgentUI") + .inner_size(800.0, 600.0); + + #[cfg(windows)] + let builder = builder.disable_drag_drop_handler(); + + builder.visible(false).build() +} + +#[cfg(not(target_os = "android"))] +fn finish_desktop_window_setup(window: &tauri::WebviewWindow) { + #[cfg(windows)] + let _ = window.create_overlay_titlebar(); +} + +#[cfg(not(target_os = "android"))] +pub(crate) fn mark_window_ready( + window: &tauri::Window, +) -> Result<(), tauri::Error> { + window.show()?; + let _ = window.set_focus(); + + Ok(()) +} + +/// 创建新窗口,可选地关联一个目录(多窗口支持) +#[cfg(not(target_os = "android"))] +pub(crate) fn create_new_window(app: &tauri::AppHandle, directory: Option) { + static WIN_COUNTER: AtomicU64 = AtomicU64::new(1); + let label = format!("win-{}", WIN_COUNTER.fetch_add(1, Ordering::SeqCst)); + + if let Some(ref dir) = directory { + if let Some(state) = app.try_state::() { + state + .pending() + .pin() + .insert(label.clone(), Arc::from(dir.clone())); + } + } + + match create_hidden_content_window(app, &label) { + Ok(window) => { + finish_desktop_window_setup(&window); + + log::info!( + "Created new window '{}' for directory: {:?}", + label, + directory + ) + } + Err(e) => log::error!("Failed to create new window: {}", e), + } +} + +#[cfg(not(target_os = "android"))] +fn configure_desktop_window_builder<'a, R: tauri::Runtime, M: tauri::Manager>( + window_builder: tauri::WebviewWindowBuilder<'a, R, M>, +) -> tauri::WebviewWindowBuilder<'a, R, M> { + let window_builder = window_builder; + + #[cfg(target_os = "macos")] + let window_builder = window_builder + .title_bar_style(tauri::TitleBarStyle::Overlay) + .hidden_title(true) + .traffic_light_position(tauri::LogicalPosition::new(12.0, 16.0)); + + window_builder +} + +pub fn run() { + let builder = tauri::Builder::default().manage(BridgeState::default()); + + #[cfg(not(target_os = "android"))] + let builder = builder.plugin(tauri_plugin_decorum::init()); + + // Desktop: 注册 OpenDirectoryState + single-instance 插件(需在 setup 之前) + #[cfg(not(target_os = "android"))] + let builder = + builder + .manage(OpenDirectoryState::default()) + .plugin(tauri_plugin_single_instance::init(|app, args, _cwd| { + // 始终新建窗口(类似 VSCode:双击图标 = 新窗口) + let dir = extract_directory_from_args(&args); + log::info!("Single-instance: opening new window, directory: {:?}", dir); + create_new_window(app, dir); + })); + + let builder = builder + .plugin(tauri_plugin_http::init()) + .plugin(tauri_plugin_notification::init()) + .plugin(tauri_plugin_dialog::init()) + .plugin(tauri_plugin_fs::init()) + .plugin(tauri_plugin_opener::init()) + .setup(|app| { + // 始终启用 log 插件,方便排查问题 + app.handle().plugin( + tauri_plugin_log::Builder::default() + .level(log::LevelFilter::Info) + .build(), + )?; + + #[cfg(not(target_os = "android"))] + { + let main_window = create_main_window(&app.handle())?; + finish_desktop_window_setup(&main_window); + + #[cfg(debug_assertions)] + main_window.open_devtools(); + } + + #[cfg(target_os = "android")] + { + let _main_window = create_main_window(&app.handle())?; + } + + // Desktop: 解析 CLI 参数,存入 pending state + #[cfg(not(target_os = "android"))] + { + let args: Vec = std::env::args().collect(); + if let Some(dir) = extract_directory_from_args(&args) { + log::info!("CLI directory argument: {}", dir); + if let Some(state) = app.try_state::() { + state + .pending() + .pin() + .insert("main".to_string(), Arc::from(dir)); + } + } + } + + Ok(()) + }); + + // Desktop: 注册 service management commands + 窗口关闭拦截 + #[cfg(not(target_os = "android"))] + let builder = builder + .manage(service::ServiceState::default()) + .on_window_event(|window, event| { + match event { + tauri::WindowEvent::CloseRequested { api, .. } => { + // 只在最后一个窗口关闭时询问是否停止服务 + let is_last = window.app_handle().webview_windows().len() <= 1; + if is_last { + let state = window.state::(); + if state.we_started.load(Ordering::SeqCst) { + api.prevent_close(); + let _ = window.emit("close-requested", ()); + } + } + } + tauri::WindowEvent::Destroyed => { + // 窗口销毁时清理该窗口的所有桥接连接 + let state = window.state::(); + state.disconnect_window(window.label()); + } + _ => {} + } + }) + .invoke_handler(tauri::generate_handler![ + commands::bridge::bridge_connect, + commands::bridge::bridge_send, + commands::bridge::bridge_disconnect, + commands::utils::get_cli_directory, + commands::utils::open_new_window, + commands::utils::desktop_window_ready, + commands::utils::get_pi_agent_connection, + commands::pi_agent::check_pi_service, + commands::pi_agent::start_pi_service, + commands::pi_agent::stop_pi_service, + commands::pi_agent::get_service_started_by_us, + commands::pi_agent::confirm_close_app, + ]); + + // Android: 注册 bridge commands + #[cfg(target_os = "android")] + let builder = builder.invoke_handler(tauri::generate_handler![ + commands::bridge::bridge_connect, + commands::bridge::bridge_send, + commands::bridge::bridge_disconnect, + ]); + + // build + run 分开调用,以支持 macOS RunEvent::Opened + let app = builder + .build(tauri::generate_context!()) + .unwrap_or_else(|err| panic!("error while building tauri application: {err}")); + + app.run(|_app_handle, _event| { + // macOS: 处理 Finder "Open with" / 拖文件夹到 Dock 图标 + #[cfg(target_os = "macos")] + if let tauri::RunEvent::Opened { urls } = &_event { + for url in urls { + if let Ok(path) = url.to_file_path() { + if path.is_dir() { + let dir = path.to_string_lossy().to_string(); + log::info!("macOS Opened directory: {}", dir); + + // 如果只有 main 窗口且它还没消费目录,说明是冷启动,设给 main + // 否则新建窗口 + if let Some(state) = _app_handle.try_state::() { + let pending = state.pending().pin(); + let win_count = _app_handle.webview_windows().len(); + if win_count <= 1 && !pending.contains_key("main") { + pending.insert("main".to_string(), Arc::from(dir.clone())); + let _ = _app_handle.emit("open-directory", dir); + } else { + create_new_window(_app_handle, Some(dir)); + } + } + } + } + } + } + }); +} diff --git a/src-tauri/src/app/service.rs b/src-tauri/src/app/service.rs new file mode 100644 index 0000000..d4061bc --- /dev/null +++ b/src-tauri/src/app/service.rs @@ -0,0 +1,18 @@ +use std::sync::atomic::{AtomicBool, AtomicU32}; + +/// 跟踪我们是否启动了 pi serve 进程 +pub struct ServiceState { + /// 我们启动的子进程 PID + pub child_pid: AtomicU32, + /// 是否由我们启动(用于关闭时判断是否需要询问) + pub we_started: AtomicBool, +} + +impl Default for ServiceState { + fn default() -> Self { + Self { + child_pid: AtomicU32::new(0), + we_started: AtomicBool::new(false), + } + } +} diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs new file mode 100644 index 0000000..580fd30 --- /dev/null +++ b/src-tauri/src/lib.rs @@ -0,0 +1,6 @@ +pub mod app; + +#[cfg_attr(mobile, tauri::mobile_entry_point)] +pub fn run() { + app::run(); +} diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs new file mode 100644 index 0000000..b43a4f2 --- /dev/null +++ b/src-tauri/src/main.rs @@ -0,0 +1,8 @@ +// Prevents additional console window on Windows in release, DO NOT REMOVE!! +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +mod app; + +fn main() { + app::run(); +} diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json new file mode 100644 index 0000000..12f65f9 --- /dev/null +++ b/src-tauri/tauri.conf.json @@ -0,0 +1,49 @@ +{ + "$schema": "../node_modules/@tauri-apps/cli/config.schema.json", + "productName": "Pi Agent", + "version": "0.6.10", + "identifier": "com.piagentui.app", + "build": { + "frontendDist": "../dist", + "devUrl": "http://localhost:5173", + "beforeDevCommand": "npm run dev", + "beforeBuildCommand": "npm run build" + }, + "app": { + "withGlobalTauri": true, + "windows": [ + { + "label": "main", + "create": false, + "title": "Pi Agent", + "width": 800, + "height": 600, + "titleBarStyle": "Overlay", + "hiddenTitle": true, + "trafficLightPosition": { + "x": 12, + "y": 16 + }, + "resizable": true, + "fullscreen": false, + "dragDropEnabled": false + } + ], + "security": { + "csp": null + } + }, + "plugins": { + "notification": null + }, + "bundle": { + "active": true, + "targets": ["nsis", "dmg", "deb"], + "icon": ["icons/32x32.png", "icons/128x128.png", "icons/128x128@2x.png", "icons/icon.icns", "icons/icon.ico"], + "windows": { + "nsis": { + "installerHooks": "./windows/hooks.nsi" + } + } + } +} diff --git a/src-tauri/windows/hooks.nsi b/src-tauri/windows/hooks.nsi new file mode 100644 index 0000000..73f5120 --- /dev/null +++ b/src-tauri/windows/hooks.nsi @@ -0,0 +1,19 @@ +; OpenCodeUI - NSIS Installer Hooks +; 安装时注册 Windows 资源管理器右键菜单,卸载时清理 + +!macro NSIS_HOOK_POSTINSTALL + ; 右键文件夹 → "Open with OpenCode" + WriteRegStr HKCU "Software\Classes\Directory\shell\OpenCodeUI" "" "Open with OpenCode" + WriteRegStr HKCU "Software\Classes\Directory\shell\OpenCodeUI" "Icon" "$INSTDIR\${MAINBINARYNAME}.exe" + WriteRegStr HKCU "Software\Classes\Directory\shell\OpenCodeUI\command" "" '"$INSTDIR\${MAINBINARYNAME}.exe" "%V"' + + ; 右键文件夹空白处 → "Open with OpenCode" + WriteRegStr HKCU "Software\Classes\Directory\Background\shell\OpenCodeUI" "" "Open with OpenCode" + WriteRegStr HKCU "Software\Classes\Directory\Background\shell\OpenCodeUI" "Icon" "$INSTDIR\${MAINBINARYNAME}.exe" + WriteRegStr HKCU "Software\Classes\Directory\Background\shell\OpenCodeUI\command" "" '"$INSTDIR\${MAINBINARYNAME}.exe" "%V"' +!macroend + +!macro NSIS_HOOK_PREUNINSTALL + DeleteRegKey HKCU "Software\Classes\Directory\shell\OpenCodeUI" + DeleteRegKey HKCU "Software\Classes\Directory\Background\shell\OpenCodeUI" +!macroend diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..6cac6ae --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,631 @@ +import { lazy, Suspense, useCallback, useEffect, useMemo, useRef, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { invoke } from '@tauri-apps/api/core' +import { Sidebar } from './features/chat' +import { ChatPane } from './features/chat/ChatPane' +import { SplitContainer } from './features/chat/SplitContainer' +import type { CommandItem } from './components/CommandPalette' +import { ToastContainer } from './components/ToastContainer' +import { RightPanel } from './components/RightPanel' +import { BottomPanel } from './components/BottomPanel' +import { DesktopTitlebar } from './components/DesktopTitlebar' +import { useDirectory, useGlobalEvents, useGlobalKeybindings, useRouter } from './hooks' +import { useViewportHeight } from './hooks/useViewportHeight' +import { useCloseServiceDialog } from './hooks/useCloseServiceDialog' +import { useWakeLock } from './hooks/useWakeLock' +import type { KeybindingHandlers } from './hooks/useKeybindings' +import { keybindingStore } from './store/keybindingStore' +import { + layoutStore, + paneLayoutStore, + useLayoutStore, + usePaneController, + usePaneControllers, + usePaneLayout, + updateStore, +} from './store' +import { + ChatViewportProvider, + CHAT_SURFACE_MIN_WIDTH, + canUseSplitPane, + useChatViewportController, +} from './features/chat/chatViewport' +import { uiErrorHandler, isSameDirectory, collectActiveDirectories } from './utils' +import { initNotificationSound } from './utils/notificationSoundBridge' +import { createPtySession } from './api/pty' +import type { TerminalTab } from './store/layoutStore' +import type { SettingsTab } from './features/settings/SettingsDialog' +import { isTauri, isTauriMobile } from './utils/tauri' + +const SettingsDialog = lazy(() => + import('./features/settings/SettingsDialog').then(module => ({ default: module.SettingsDialog })), +) +const CommandPalette = lazy(() => + import('./components/CommandPalette').then(module => ({ default: module.CommandPalette })), +) +const CloseServiceDialog = lazy(() => + import('./components/CloseServiceDialog').then(module => ({ default: module.CloseServiceDialog })), +) + +function App() { + const { t } = useTranslation(['commands', 'chat', 'common', 'components']) + const router = useRouter() + const { + sessionId: routeSessionId, + directory: routeDirectory, + navigateToSession: navigateRouteToSession, + navigateHome: navigateRouteHome, + replaceSession, + } = router + const { currentDirectory, savedDirectories, sidebarExpanded, setSidebarExpanded } = useDirectory() + const { rightPanelOpen, rightPanelWidth, wakeLock } = useLayoutStore() + const { surfaceRef, value: chatViewport } = useChatViewportController({ + sidebarExpanded, + rightPanelOpen, + requestedRightPanelWidth: rightPanelWidth, + }) + const splitPaneEnabled = canUseSplitPane(chatViewport) + const paneLayout = usePaneLayout() + const focusedController = usePaneController(paneLayout.focusedPaneId) + const paneControllers = usePaneControllers() + const syncingFromRouteRef = useRef(false) + const lastRouteSessionIdRef = useRef(undefined) + // 当 currentDirectory 为 undefined 时表示全局模式, + // 不应 fallback 到 session 自身的 directory,否则 replaceSession 会把 dir 参数写回 URL + const focusedRouteDirectory = + currentDirectory !== undefined + ? paneLayout.focusedSessionId === routeSessionId + ? routeDirectory || focusedController?.effectiveDirectory || currentDirectory + : focusedController?.effectiveDirectory || currentDirectory + : undefined + + useEffect(() => { + const cleanup = initNotificationSound() + return cleanup + }, []) + + useEffect(() => { + if (!isTauri() || isTauriMobile()) return + + void invoke('desktop_window_ready').catch(() => { + // best effort only + }) + }, []) + + useEffect(() => { + if (import.meta.env.DEV) return + void updateStore.checkForUpdates() + }, []) + + useViewportHeight() + useWakeLock(wakeLock) + + const activeDirectories = useMemo( + () => + collectActiveDirectories({ + routeDirectory, + currentDirectory, + paneDirectories: paneControllers + .map(controller => controller.effectiveDirectory) + .filter((directory): directory is string => Boolean(directory)), + projectDirectories: savedDirectories.map(directory => directory.path), + }), + [routeDirectory, currentDirectory, paneControllers, savedDirectories], + ) + + // 全局唯一 SSE 连接。所有 pane 通过 consumer 机制接收自己的 session 事件。 + useGlobalEvents(activeDirectories) + + // URL -> focused pane session + useEffect(() => { + if (lastRouteSessionIdRef.current === routeSessionId) return + lastRouteSessionIdRef.current = routeSessionId + if (paneLayoutStore.getFocusedSessionId() === routeSessionId) return + syncingFromRouteRef.current = true + paneLayoutStore.setFocusedSession(routeSessionId) + }, [routeSessionId]) + + // focused pane session -> URL(路由只反映当前 focused pane) + useEffect(() => { + if (syncingFromRouteRef.current) { + syncingFromRouteRef.current = false + return + } + if (paneLayoutStore.getFocusedSessionId() !== paneLayout.focusedSessionId) return + if (paneLayout.focusedSessionId === routeSessionId && isSameDirectory(routeDirectory, focusedRouteDirectory)) return + replaceSession(paneLayout.focusedSessionId, focusedRouteDirectory) + }, [ + paneLayout.focusedPaneId, + paneLayout.focusedSessionId, + routeSessionId, + routeDirectory, + replaceSession, + focusedRouteDirectory, + ]) + + const navigatePaneToSession = useCallback( + (paneId: string, sessionId: string, directory?: string) => { + paneLayoutStore.focusPane(paneId) + paneLayoutStore.setPaneSession(paneId, sessionId) + navigateRouteToSession(sessionId, directory) + }, + [navigateRouteToSession], + ) + + const navigatePaneHome = useCallback( + (paneId: string) => { + paneLayoutStore.focusPane(paneId) + paneLayoutStore.setPaneSession(paneId, null) + navigateRouteHome() + }, + [navigateRouteHome], + ) + + const handleSelectSession = useCallback( + (session: { id: string; directory?: string }) => { + const paneId = paneLayout.focusedPaneId ?? paneLayoutStore.getFocusedPaneId() + if (!paneId) return + navigatePaneToSession(paneId, session.id, session.directory) + }, + [paneLayout.focusedPaneId, navigatePaneToSession], + ) + + const handleNewSession = useCallback(() => { + const paneId = paneLayout.focusedPaneId ?? paneLayoutStore.getFocusedPaneId() + if (!paneId) return + navigatePaneHome(paneId) + }, [paneLayout.focusedPaneId, navigatePaneHome]) + + const handleEnterSplitMode = useCallback(() => { + paneLayoutStore.enterSplitMode(paneLayout.focusedSessionId) + }, [paneLayout.focusedSessionId]) + + const handleToggleFocusedPaneFullscreen = useCallback(() => { + const paneId = paneLayout.focusedPaneId ?? paneLayoutStore.getFocusedPaneId() + if (!paneId) return + paneLayoutStore.togglePaneFullscreen(paneId) + }, [paneLayout.focusedPaneId]) + + const handleOpenSidebar = useCallback(() => setSidebarExpanded(true), [setSidebarExpanded]) + + const renderPaneLeaf = useCallback( + (paneId: string, paneSessionId: string | null) => ( + + ), + [ + paneLayout.focusedPaneId, + paneLayout.paneCount, + paneLayout.isSplit, + paneLayout.fullscreenPaneId, + chatViewport.interaction.sidebarBehavior, + splitPaneEnabled, + handleOpenSidebar, + handleEnterSplitMode, + handleToggleFocusedPaneFullscreen, + navigatePaneToSession, + navigatePaneHome, + ], + ) + + const focusedDirectory = focusedRouteDirectory || '' + + const [settingsDialogOpen, setSettingsDialogOpen] = useState(false) + const [settingsInitialTab, setSettingsInitialTab] = useState('servers') + const openSettingsTab = useCallback((tab: SettingsTab) => { + setSettingsInitialTab(tab) + setSettingsDialogOpen(true) + }, []) + const openSettings = useCallback(() => { + openSettingsTab('servers') + }, [openSettingsTab]) + const openAboutSettings = useCallback(() => { + openSettingsTab('about') + }, [openSettingsTab]) + const closeSettings = useCallback(() => setSettingsDialogOpen(false), []) + + const [projectDialogOpen, setProjectDialogOpen] = useState(false) + const openProject = useCallback(() => setProjectDialogOpen(true), []) + const closeProjectDialog = useCallback(() => setProjectDialogOpen(false), []) + + // 桌面标题栏通过 CustomEvent 触发打开项目/设置 + useEffect(() => { + const onOpenProject = () => openProject() + const onOpenSettings = () => openSettings() + window.addEventListener('titlebar:open-project', onOpenProject) + window.addEventListener('titlebar:open-settings', onOpenSettings) + return () => { + window.removeEventListener('titlebar:open-project', onOpenProject) + window.removeEventListener('titlebar:open-settings', onOpenSettings) + } + }, [openProject, openSettings]) + + const [commandPaletteOpen, setCommandPaletteOpen] = useState(false) + + const handleNewTerminal = useCallback(async () => { + try { + const pty = await createPtySession({ cwd: focusedDirectory }, focusedDirectory) + const tab: TerminalTab = { + id: pty.id, + title: pty.title || t('components:terminal.terminal'), + status: 'connecting', + } + layoutStore.addTerminalTab(tab, true) + } catch (error) { + uiErrorHandler('create terminal', error) + } + }, [focusedDirectory, t]) + + const keybindingHandlers = useMemo( + () => ({ + openSettings, + openProject, + commandPalette: () => setCommandPaletteOpen(true), + toggleSidebar: () => setSidebarExpanded(!sidebarExpanded), + toggleRightPanel: () => layoutStore.toggleRightPanel(), + focusInput: () => { + const input = document.querySelector('[data-input-box] textarea') + input?.focus() + }, + newSession: () => focusedController?.newSession(), + archiveSession: () => focusedController?.archiveSession(), + previousSession: () => focusedController?.previousSession(), + nextSession: () => focusedController?.nextSession(), + toggleTerminal: () => layoutStore.toggleBottomPanel(), + newTerminal: handleNewTerminal, + selectModel: () => focusedController?.openModelSelector(), + toggleAgent: () => focusedController?.toggleAgent(), + cancelMessage: () => focusedController?.cancelMessage(), + copyLastResponse: () => focusedController?.copyLastResponse(), + toggleFullAuto: () => focusedController?.toggleFullAuto(), + // Pane + focusNextPane: () => { + paneLayoutStore.focusNextPane() + requestAnimationFrame(() => { + const pid = paneLayoutStore.getFocusedPaneId() + if (pid) { + const input = document.querySelector(`[data-pane-id="${pid}"] textarea`) + input?.focus() + } + }) + }, + focusPrevPane: () => { + paneLayoutStore.focusPrevPane() + requestAnimationFrame(() => { + const pid = paneLayoutStore.getFocusedPaneId() + if (pid) { + const input = document.querySelector(`[data-pane-id="${pid}"] textarea`) + input?.focus() + } + }) + }, + splitRight: () => { + const pid = paneLayout.focusedPaneId ?? paneLayoutStore.getFocusedPaneId() + if (pid && splitPaneEnabled) paneLayoutStore.splitPane(pid, 'horizontal') + }, + splitDown: () => { + const pid = paneLayout.focusedPaneId ?? paneLayoutStore.getFocusedPaneId() + if (pid && splitPaneEnabled) paneLayoutStore.splitPane(pid, 'vertical') + }, + closePane: () => { + const pid = paneLayout.focusedPaneId ?? paneLayoutStore.getFocusedPaneId() + if (pid && paneLayout.isSplit) paneLayoutStore.closePane(pid) + }, + togglePaneFullscreen: () => { + if (paneLayout.isSplit) handleToggleFocusedPaneFullscreen() + }, + }), + [ + openSettings, + openProject, + sidebarExpanded, + setSidebarExpanded, + focusedController, + handleNewTerminal, + paneLayout.focusedPaneId, + paneLayout.isSplit, + splitPaneEnabled, + handleToggleFocusedPaneFullscreen, + ], + ) + + useGlobalKeybindings(keybindingHandlers) + + const commands = useMemo(() => { + const getShortcut = (action: string) => + keybindingStore.getKey(action as import('./store/keybindingStore').KeybindingAction) + + return [ + { + id: 'openSettings', + label: t('commands:openSettings'), + description: t('commands:openSettingsDesc'), + category: t('commands:categories.general'), + shortcut: getShortcut('openSettings'), + action: openSettings, + }, + { + id: 'openProject', + label: t('commands:openProject'), + description: t('commands:openProjectDesc'), + category: t('commands:categories.general'), + shortcut: getShortcut('openProject'), + action: openProject, + }, + { + id: 'openSettingsShortcuts', + label: t('commands:openShortcutsSettings'), + description: t('commands:openShortcutsSettingsDesc'), + category: t('commands:categories.general'), + action: () => { + openSettingsTab('keybindings') + }, + }, + { + id: 'toggleSidebar', + label: t('commands:toggleSidebar'), + description: t('commands:toggleSidebarDesc'), + category: t('commands:categories.general'), + shortcut: getShortcut('toggleSidebar'), + action: () => setSidebarExpanded(!sidebarExpanded), + }, + { + id: 'toggleRightPanel', + label: t('commands:toggleRightPanel'), + description: t('commands:toggleRightPanelDesc'), + category: t('commands:categories.general'), + shortcut: getShortcut('toggleRightPanel'), + action: () => layoutStore.toggleRightPanel(), + }, + { + id: 'focusInput', + label: t('commands:focusInput'), + description: t('commands:focusInputDesc'), + category: t('commands:categories.general'), + shortcut: getShortcut('focusInput'), + action: () => { + const input = document.querySelector('[data-input-box] textarea') + input?.focus() + }, + }, + { + id: 'newSession', + label: t('commands:newSession'), + description: t('commands:newSessionDesc'), + category: t('commands:categories.session'), + shortcut: getShortcut('newSession'), + action: () => focusedController?.newSession(), + }, + { + id: 'archiveSession', + label: t('commands:archiveSession'), + description: t('commands:archiveSessionDesc'), + category: t('commands:categories.session'), + shortcut: getShortcut('archiveSession'), + action: () => focusedController?.archiveSession(), + }, + { + id: 'previousSession', + label: t('commands:previousSession'), + description: t('commands:previousSessionDesc'), + category: t('commands:categories.session'), + shortcut: getShortcut('previousSession'), + action: () => focusedController?.previousSession(), + }, + { + id: 'nextSession', + label: t('commands:nextSession'), + description: t('commands:nextSessionDesc'), + category: t('commands:categories.session'), + shortcut: getShortcut('nextSession'), + action: () => focusedController?.nextSession(), + }, + { + id: 'toggleTerminal', + label: t('commands:toggleTerminal'), + description: t('commands:toggleTerminalDesc'), + category: t('commands:categories.terminal'), + shortcut: getShortcut('toggleTerminal'), + action: () => layoutStore.toggleBottomPanel(), + }, + { + id: 'newTerminal', + label: t('commands:newTerminal'), + description: t('commands:newTerminalDesc'), + category: t('commands:categories.terminal'), + shortcut: getShortcut('newTerminal'), + action: handleNewTerminal, + }, + { + id: 'selectModel', + label: t('commands:selectModel'), + description: t('commands:selectModelDesc'), + category: t('commands:categories.model'), + shortcut: getShortcut('selectModel'), + action: () => focusedController?.openModelSelector(), + }, + { + id: 'toggleAgent', + label: t('commands:toggleAgent'), + description: t('commands:toggleAgentDesc'), + category: t('commands:categories.model'), + shortcut: getShortcut('toggleAgent'), + action: () => focusedController?.toggleAgent(), + }, + { + id: 'copyLastResponse', + label: t('commands:copyLastResponse'), + description: t('commands:copyLastResponseDesc'), + category: t('commands:categories.message'), + shortcut: getShortcut('copyLastResponse'), + action: () => focusedController?.copyLastResponse(), + }, + { + id: 'cancelMessage', + label: t('commands:cancelMessage'), + description: t('commands:cancelMessageDesc'), + category: t('commands:categories.message'), + shortcut: getShortcut('cancelMessage'), + action: () => focusedController?.cancelMessage(), + when: () => !!focusedController?.isStreaming, + }, + // Pane + { + id: 'focusNextPane', + label: t('commands:focusNextPane'), + description: t('commands:focusNextPaneDesc'), + category: t('commands:categories.pane'), + shortcut: getShortcut('focusNextPane'), + action: () => paneLayoutStore.focusNextPane(), + }, + { + id: 'focusPrevPane', + label: t('commands:focusPrevPane'), + description: t('commands:focusPrevPaneDesc'), + category: t('commands:categories.pane'), + shortcut: getShortcut('focusPrevPane'), + action: () => paneLayoutStore.focusPrevPane(), + }, + { + id: 'splitRight', + label: t('commands:splitRight'), + description: t('commands:splitRightDesc'), + category: t('commands:categories.pane'), + shortcut: getShortcut('splitRight'), + action: () => { + const pid = paneLayout.focusedPaneId ?? paneLayoutStore.getFocusedPaneId() + if (pid && splitPaneEnabled) paneLayoutStore.splitPane(pid, 'horizontal') + }, + }, + { + id: 'splitDown', + label: t('commands:splitDown'), + description: t('commands:splitDownDesc'), + category: t('commands:categories.pane'), + shortcut: getShortcut('splitDown'), + action: () => { + const pid = paneLayout.focusedPaneId ?? paneLayoutStore.getFocusedPaneId() + if (pid && splitPaneEnabled) paneLayoutStore.splitPane(pid, 'vertical') + }, + }, + { + id: 'closePane', + label: t('commands:closePane'), + description: t('commands:closePaneDesc'), + category: t('commands:categories.pane'), + shortcut: getShortcut('closePane'), + action: () => { + const pid = paneLayout.focusedPaneId ?? paneLayoutStore.getFocusedPaneId() + if (pid && paneLayout.isSplit) paneLayoutStore.closePane(pid) + }, + when: () => paneLayout.isSplit, + }, + { + id: 'togglePaneFullscreen', + label: t('commands:togglePaneFullscreen'), + description: t('commands:togglePaneFullscreenDesc'), + category: t('commands:categories.pane'), + shortcut: getShortcut('togglePaneFullscreen'), + action: () => { + if (paneLayout.isSplit) handleToggleFocusedPaneFullscreen() + }, + when: () => paneLayout.isSplit, + }, + ] + }, [ + t, + openSettings, + openProject, + openSettingsTab, + sidebarExpanded, + setSidebarExpanded, + focusedController, + handleNewTerminal, + paneLayout.focusedPaneId, + paneLayout.isSplit, + splitPaneEnabled, + handleToggleFocusedPaneFullscreen, + ]) + + const { showCloseDialog, handleCloseDialogConfirm, handleCloseDialogCancel } = useCloseServiceDialog() + + return ( +
+ + +
+ setSidebarExpanded(false)} + contextLimit={focusedController?.contextLimit} + onOpenSettings={openSettings} + projectDialogOpen={projectDialogOpen} + onProjectDialogClose={closeProjectDialog} + /> + +
+
+
+ +
+ + +
+ + +
+ +
+ + + + setCommandPaletteOpen(false)} + commands={commands} + /> + + + + + +
+
+ ) +} + +export default App diff --git a/src/api/agent.ts b/src/api/agent.ts new file mode 100644 index 0000000..96c8274 --- /dev/null +++ b/src/api/agent.ts @@ -0,0 +1,29 @@ +// ============================================ +// Agent API Functions - Decoupled from SDK +// ============================================ + +import { piClient } from './piClient' +import type { ApiAgent } from './types' + +/** + * 获取 agent 列表 + */ +export async function getAgents(_directory?: string): Promise { + try { + const data = await piClient.get<{ agents: ApiAgent[] }>('/api/agents') + return data.agents || [] + } catch { + return [ + { id: 'build', name: 'Build', description: 'Main coder agent', hidden: false, mode: 'chat' }, + { id: 'research', name: 'Research', description: 'Code researcher', hidden: false, mode: 'chat' }, + ] + } +} + +/** + * 获取可选择的 agent 列表(过滤掉 hidden 的) + */ +export async function getSelectableAgents(directory?: string): Promise { + const agents = await getAgents(directory) + return agents.filter(agent => !agent.hidden) +} diff --git a/src/api/client.test.ts b/src/api/client.test.ts new file mode 100644 index 0000000..3a7917c --- /dev/null +++ b/src/api/client.test.ts @@ -0,0 +1,73 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { getActiveModels } from './client' +import { piClient } from './piClient' + +vi.mock('./piClient', () => ({ + piClient: { + get: vi.fn(), + }, +})) + +describe('getActiveModels', () => { + beforeEach(() => { + vi.mocked(piClient.get).mockReset() + }) + + it('preserves real context and output limits returned by the backend', async () => { + vi.mocked(piClient.get).mockResolvedValue({ + models: [ + { + id: 'anthropic/claude-opus-4.8', + name: 'Claude Opus 4.8', + provider: 'anthropic', + contextLimit: 1_000_000, + outputLimit: 128_000, + supportsReasoning: true, + supportsImages: true, + }, + ], + }) + + const models = await getActiveModels() + + expect(models).toHaveLength(1) + expect(models[0]).toMatchObject({ + id: 'anthropic/claude-opus-4.8', + name: 'Claude Opus 4.8', + providerId: 'anthropic', + providerName: 'anthropic', + contextLimit: 1_000_000, + outputLimit: 128_000, + supportsReasoning: true, + supportsImages: true, + }) + }) + + it('uses Pi model metadata aliases before generic fallbacks', async () => { + vi.mocked(piClient.get).mockResolvedValue({ + models: [ + { + id: 'custom-model', + providerId: 'custom-provider', + providerName: 'Custom Provider', + contextWindow: 200_000, + maxOutputTokens: 64_000, + reasoning: true, + input: ['text', 'image'], + }, + ], + }) + + const models = await getActiveModels() + + expect(models[0]).toMatchObject({ + id: 'custom-model', + providerId: 'custom-provider', + providerName: 'Custom Provider', + contextLimit: 200_000, + outputLimit: 64_000, + supportsReasoning: true, + supportsImages: true, + }) + }) +}) diff --git a/src/api/client.ts b/src/api/client.ts new file mode 100644 index 0000000..52bd24b --- /dev/null +++ b/src/api/client.ts @@ -0,0 +1,140 @@ +// ============================================ +// API Client for Pi Agent Backend +// ============================================ + +import { piClient } from './piClient' +import { formatPathForApi } from '../utils/directoryUtils' +import type { ModelInfo, ApiProject, ApiPath } from './types' + +// Re-export all types +export * from './types' + +// Re-export from Attachment feature +export { fromFilePart, fromAgentPart } from '../features/attachment' + +// Re-export from sub-modules +export * from './session' +export * from './message' +export * from './permission' +export * from './file' +export * from './agent' +export * from './skill' +export * from './events' +export * from './config' +export * from './vcs' +export * from './mcp' +export * from './pty' +export * from './worktree' +export * from './command' +export * from './global' +export * from './tool' +export * from './lsp' +export * from './extension' + +// ============================================ +// Model API Functions +// ============================================ + +export async function getActiveModels(_directory?: string): Promise { + try { + const data = await piClient.get<{ models: any[] }>('/api/models') + return data.models.map(model => ({ + id: model.id, + name: model.name || model.id, + providerId: model.providerId ?? model.provider, + providerName: model.providerName ?? model.provider, + family: model.family ?? '', + contextLimit: model.contextLimit ?? model.contextWindow ?? 128000, + outputLimit: model.outputLimit ?? model.maxOutputTokens ?? model.maxTokens ?? 4096, + supportsReasoning: model.supportsReasoning ?? model.reasoning ?? false, + supportsImages: model.supportsImages ?? model.input?.includes('image') ?? false, + supportsPdf: model.supportsPdf ?? false, + supportsAudio: model.supportsAudio ?? false, + supportsVideo: model.supportsVideo ?? false, + supportsToolcall: model.supportsToolcall ?? true, + variants: model.variants ?? [], + })) + } catch { + return [ + { + id: 'gemini-2.5-flash', + name: 'Gemini 2.5 Flash', + providerId: 'google', + providerName: 'google', + family: '', + contextLimit: 128000, + outputLimit: 4096, + supportsReasoning: true, + supportsImages: true, + supportsPdf: false, + supportsAudio: false, + supportsVideo: false, + supportsToolcall: true, + variants: [], + }, + ] + } +} + +export async function getDefaultModels(_directory?: string): Promise> { + return { + google: 'gemini-2.5-flash', + anthropic: 'claude-3-5-sonnet', + } +} + +// ============================================ +// Project API Functions +// ============================================ + +export async function getCurrentProject(directory?: string): Promise { + return { + id: 'default', + name: 'Default Project', + directory: formatPathForApi(directory), + } +} + +export async function getProjects(directory?: string): Promise { + return [ + { + id: 'default', + name: 'Default Project', + directory: formatPathForApi(directory), + }, + ] +} + +export async function initGitProject(directory?: string): Promise { + return { + id: 'default', + name: 'Default Project', + directory: formatPathForApi(directory), + } +} + +export async function updateProject( + projectId: string, + params: { + name?: string + icon?: { url?: string; override?: string; color?: string } + }, + directory?: string, +): Promise { + return { + id: projectId, + name: params.name || 'Default Project', + directory: formatPathForApi(directory), + } +} + +// ============================================ +// Path API Functions +// ============================================ + +export async function getPath(): Promise { + return { + home: '', + path: '', + } +} diff --git a/src/api/command.test.ts b/src/api/command.test.ts new file mode 100644 index 0000000..6b8edb3 --- /dev/null +++ b/src/api/command.test.ts @@ -0,0 +1,66 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { getCommands } from './command' +import { piClient } from './piClient' + +vi.mock('./piClient', () => ({ + piClient: { + get: vi.fn(), + }, +})) + +vi.mock('../store/serverStore', () => ({ + serverStore: { + getActiveServerId: () => 'test-server', + }, +})) + +describe('getCommands', () => { + beforeEach(() => { + vi.mocked(piClient.get).mockReset() + }) + + it('marks frontend and api commands with stable sources', async () => { + vi.mocked(piClient.get).mockResolvedValue({ + commands: [{ name: 'review', description: 'Run project review' }], + }) + + const commands = await getCommands('/workspace/project') + + expect(commands).toEqual([ + { name: 'review', description: 'Run project review', source: 'api' }, + { name: 'new', description: 'Create a new chat session', source: 'frontend' }, + { name: 'compact', description: 'Compact session by summarizing conversation history', source: 'frontend' }, + ]) + }) + + it('keeps API commands as api commands even if names overlap frontend commands', async () => { + vi.mocked(piClient.get).mockResolvedValue({ + commands: [{ name: 'compact', description: 'Native compact command' }], + }) + + const commands = await getCommands('/workspace/project-overlap') + + expect(commands).toEqual([ + { name: 'compact', description: 'Native compact command', source: 'api' }, + { name: 'new', description: 'Create a new chat session', source: 'frontend' }, + ]) + }) + + it('keeps local UI handlers for built-in commands that are already implemented in the frontend', async () => { + vi.mocked(piClient.get).mockResolvedValue({ + commands: [ + { name: 'new', description: 'Native new command', apiSource: 'builtin' }, + { name: 'compact', description: 'Native compact command', apiSource: 'builtin' }, + { name: 'model', description: 'Select model', apiSource: 'builtin' }, + ], + }) + + const commands = await getCommands('/workspace/project-builtins') + + expect(commands).toEqual([ + { name: 'model', description: 'Select model', apiSource: 'builtin', source: 'api' }, + { name: 'new', description: 'Create a new chat session', source: 'frontend' }, + { name: 'compact', description: 'Compact session by summarizing conversation history', source: 'frontend' }, + ]) + }) +}) diff --git a/src/api/command.ts b/src/api/command.ts new file mode 100644 index 0000000..fdeeeeb --- /dev/null +++ b/src/api/command.ts @@ -0,0 +1,107 @@ +// ============================================ +// Command API - Decoupled +// ============================================ + +import { piClient } from './piClient' +import { formatPathForApi } from '../utils/directoryUtils' +import { serverStore } from '../store/serverStore' +import i18n from '../i18n' + +export type CommandApiSource = 'builtin' | 'extension' | 'prompt' | 'skill' | 'unknown' + +export interface Command { + name: string + description?: string + keybind?: string + source: 'frontend' | 'api' + apiSource?: CommandApiSource + category?: string + sourceInfo?: unknown + requiresArgs?: boolean + dangerous?: boolean +} + +type ApiCommand = Omit & { source?: unknown } + +// Frontend-added slash commands that do not come from GET /command. +// These are executed locally or via dedicated session actions. +function getFrontendCommands(): Command[] { + return [ + { name: 'new', description: i18n.t('commands:slashCommand.newSessionDesc'), source: 'frontend' }, + { name: 'compact', description: i18n.t('commands:slashCommand.compactDesc'), source: 'frontend' }, + ] +} + +const COMMAND_CACHE_TTL_MS = 10_000 + +const commandCache = new Map() +const commandInflight = new Map>() + +function getCommandCacheKey(directory?: string): string { + return `${serverStore.getActiveServerId()}::${i18n.resolvedLanguage || i18n.language}::${formatPathForApi(directory) ?? ''}` +} + +async function fetchCommands(directory?: string): Promise { + let apiCommands: ApiCommand[] = [] + try { + const q = `?directory=${encodeURIComponent(formatPathForApi(directory) || '')}` + const data = await piClient.get<{ commands: ApiCommand[] }>(`/api/commands/list${q}`) + apiCommands = data.commands || [] + } catch { + // Backend unreachable — frontend commands still available + } + const frontendCommands = getFrontendCommands() + const frontendNames = new Set(frontendCommands.map(c => c.name)) + const commandsFromApi: Command[] = apiCommands + .map(command => ({ ...command, source: 'api' as const })) + // Built-in Pi commands that already have dedicated frontend behavior should keep + // their local handler; otherwise selecting `/new` or `/compact` would route to + // the generic API-command path instead of the existing UI action. + .filter(command => !(command.apiSource === 'builtin' && frontendNames.has(command.name))) + const apiNames = new Set(commandsFromApi.map(c => c.name)) + return [...commandsFromApi, ...frontendCommands.filter(c => !apiNames.has(c.name))] +} + +export async function getCommands(directory?: string): Promise { + const key = getCommandCacheKey(directory) + const now = Date.now() + const cached = commandCache.get(key) + if (cached && cached.expiresAt > now) { + return cached.data + } + + const inflight = commandInflight.get(key) + if (inflight) { + return inflight + } + + const request = fetchCommands(directory) + .then(data => { + commandCache.set(key, { data, expiresAt: Date.now() + COMMAND_CACHE_TTL_MS }) + return data + }) + .finally(() => { + commandInflight.delete(key) + }) + + commandInflight.set(key, request) + return request +} + +export async function prefetchCommands(directory?: string): Promise { + await getCommands(directory) +} + +export async function executeCommand( + sessionId: string, + command: string, + args: string = '', + directory?: string, +): Promise { + return await piClient.post('/api/sessions/command', { + sessionID: sessionId, + directory: formatPathForApi(directory), + command, + arguments: args, + }) +} diff --git a/src/api/config.ts b/src/api/config.ts new file mode 100644 index 0000000..bf9a832 --- /dev/null +++ b/src/api/config.ts @@ -0,0 +1,58 @@ +// ============================================ +// Config API - 配置管理 +// ============================================ + +import type { Config } from '../types/api/config' +import type { ProvidersResponse } from '../types/api/model' + +/** + * 获取当前配置 + */ +export async function getConfig(_directory?: string): Promise { + return { + models: {}, + providers: {}, + } as unknown as Config +} + +/** + * 更新配置 + */ +export async function updateConfig(config: Config, _directory?: string): Promise { + return config +} + +/** + * 获取 provider 配置列表 + */ +export async function getProviderConfigs(_directory?: string): Promise { + return { + providers: [ + { + id: "google", + name: "Google Gemini", + models: [ + { id: "gemini-2.5-flash", name: "Gemini 2.5 Flash", provider: "google" }, + { id: "gemini-2.5-pro", name: "Gemini 2.5 Pro", provider: "google" } + ], + auth: { + authorization: { configured: true } + } + }, + { + id: "anthropic", + name: "Anthropic Claude", + models: [ + { id: "claude-3-5-sonnet", name: "Claude 3.5 Sonnet", provider: "anthropic" } + ], + auth: { + authorization: { configured: true } + } + } + ], + default: { + "google": "gemini-2.5-flash", + "anthropic": "claude-3-5-sonnet" + } + } +} diff --git a/src/api/events.test.ts b/src/api/events.test.ts new file mode 100644 index 0000000..66c28c0 --- /dev/null +++ b/src/api/events.test.ts @@ -0,0 +1,317 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import { EventTypes } from '../types/api/event' + +vi.mock('./http', () => ({ + getApiBaseUrl: () => 'http://example.test', + getAuthHeader: () => ({}), +})) + +vi.mock('../utils/tauri', () => ({ + isTauri: () => false, +})) + +const encoder = new TextEncoder() + +function concatBytes(...parts: Uint8Array[]): Uint8Array { + const total = parts.reduce((sum, part) => sum + part.length, 0) + const result = new Uint8Array(total) + let offset = 0 + + for (const part of parts) { + result.set(part, offset) + offset += part.length + } + + return result +} + +function createEventChunks(delta: string, splitAt: number): Uint8Array[] { + const marker = '__DELTA__' + const raw = `data: ${JSON.stringify({ + directory: 'global', + payload: { + type: EventTypes.MESSAGE_PART_DELTA, + properties: { + messageID: 'session-1', + partID: 'part-1', + field: 'text', + delta: marker, + }, + }, + })}\n\n` + + const [before, after] = raw.split(marker) + const deltaBytes = encoder.encode(delta) + + return [ + concatBytes(encoder.encode(before), deltaBytes.slice(0, splitAt)), + concatBytes(deltaBytes.slice(splitAt), encoder.encode(after)), + ] +} + +function createStream(chunks: Uint8Array[]): ReadableStream { + return new ReadableStream({ + start(controller) { + for (const chunk of chunks) { + controller.enqueue(chunk) + } + controller.close() + }, + }) +} + +function createFetchResponse(chunks: Uint8Array[]): Pick { + return { + ok: true, + body: createStream(chunks) as Response['body'], + } +} + +function createDeferred() { + let resolve!: (value: T) => void + let reject!: (reason?: unknown) => void + const promise = new Promise((res, rej) => { + resolve = res + reject = rej + }) + return { promise, resolve, reject } +} + +function createEventChunk(payload: object): Uint8Array[] { + return [encoder.encode(`data: ${JSON.stringify({ directory: 'global', payload })}\n\n`)] +} + +describe('subscribeToEvents', () => { + beforeEach(() => { + vi.resetModules() + }) + + afterEach(() => { + vi.restoreAllMocks() + vi.unstubAllGlobals() + }) + + it('preserves Chinese text when UTF-8 bytes are split across chunks', async () => { + const fetchMock = vi.fn().mockResolvedValue(createFetchResponse(createEventChunks('中文', 2))) + vi.stubGlobal('fetch', fetchMock) + + const { subscribeToEvents } = await import('./events') + + const received = await new Promise((resolve, reject) => { + const unsubscribe = subscribeToEvents({ + onPartDelta(data) { + unsubscribe() + resolve(data.delta) + }, + onError(error) { + unsubscribe() + reject(error) + }, + }) + }) + + expect(received).toBe('中文') + }) + + it('preserves four-byte characters when split in the middle', async () => { + const fetchMock = vi.fn().mockResolvedValue(createFetchResponse(createEventChunks('𠮷😀', 3))) + vi.stubGlobal('fetch', fetchMock) + + const { subscribeToEvents } = await import('./events') + + const received = await new Promise((resolve, reject) => { + const unsubscribe = subscribeToEvents({ + onPartDelta(data) { + unsubscribe() + resolve(data.delta) + }, + onError(error) { + unsubscribe() + reject(error) + }, + }) + }) + + expect(received).toBe('𠮷😀') + }) + + it('dispatches server.connected payloads with timestamp', async () => { + const fetchMock = vi.fn().mockResolvedValue( + createFetchResponse( + createEventChunk({ + type: EventTypes.SERVER_CONNECTED, + properties: { timestamp: '2026-04-22T15:00:00.000Z' }, + }), + ), + ) + vi.stubGlobal('fetch', fetchMock) + + const { subscribeToEvents } = await import('./events') + + const received = await new Promise((resolve, reject) => { + const unsubscribe = subscribeToEvents({ + onServerConnected(data) { + unsubscribe() + resolve(data.timestamp) + }, + onError(error) { + unsubscribe() + reject(error) + }, + }) + }) + + expect(received).toBe('2026-04-22T15:00:00.000Z') + }) + + it('dispatches direct message.updated payloads from the extension server', async () => { + const fetchMock = vi.fn().mockResolvedValue( + createFetchResponse( + createEventChunk({ + type: EventTypes.MESSAGE_UPDATED, + properties: { + id: 'message-1', + sessionID: 'session-1', + role: 'assistant', + time: { created: 1 }, + text: '', + }, + }), + ), + ) + vi.stubGlobal('fetch', fetchMock) + + const { subscribeToEvents } = await import('./events') + + const received = await new Promise((resolve, reject) => { + const unsubscribe = subscribeToEvents({ + onMessageUpdated(data) { + unsubscribe() + resolve(data) + }, + onError(error) { + unsubscribe() + reject(error) + }, + }) + }) + + expect(received).toMatchObject({ id: 'message-1', sessionID: 'session-1', role: 'assistant' }) + }) + + it('dispatches direct message.part.updated payloads from the extension server', async () => { + const fetchMock = vi.fn().mockResolvedValue( + createFetchResponse( + createEventChunk({ + type: EventTypes.MESSAGE_PART_UPDATED, + properties: { + id: 'message-1-text', + sessionID: 'session-1', + messageID: 'message-1', + type: 'text', + text: '', + }, + }), + ), + ) + vi.stubGlobal('fetch', fetchMock) + + const { subscribeToEvents } = await import('./events') + + const received = await new Promise((resolve, reject) => { + const unsubscribe = subscribeToEvents({ + onPartUpdated(data) { + unsubscribe() + resolve(data) + }, + onError(error) { + unsubscribe() + reject(error) + }, + }) + }) + + expect(received).toMatchObject({ id: 'message-1-text', sessionID: 'session-1', messageID: 'message-1' }) + }) + + it('ignores stale server.connected events from an old browser SSE generation after reconnect', async () => { + const firstFetch = createDeferred>() + const secondFetch = createDeferred>() + const fetchMock = vi + .fn() + .mockImplementationOnce(() => firstFetch.promise) + .mockImplementationOnce(() => secondFetch.promise) + vi.stubGlobal('fetch', fetchMock) + + const { subscribeToEvents, reconnectSSE } = await import('./events') + const received: string[] = [] + + const unsubscribe = subscribeToEvents({ + onServerConnected(data) { + if (typeof data.timestamp === 'string') { + received.push(data.timestamp) + } + }, + }) + + reconnectSSE() + + secondFetch.resolve( + createFetchResponse( + createEventChunk({ + type: EventTypes.SERVER_CONNECTED, + properties: { timestamp: 'new-server-time' }, + }), + ), + ) + + await vi.waitFor(() => { + expect(received).toEqual(['new-server-time']) + }) + + firstFetch.resolve( + createFetchResponse( + createEventChunk({ + type: EventTypes.SERVER_CONNECTED, + properties: { timestamp: 'stale-server-time' }, + }), + ), + ) + + await Promise.resolve() + await Promise.resolve() + + expect(received).toEqual(['new-server-time']) + unsubscribe() + }) + + it('ignores stale browser fetch failures from an old SSE generation after reconnect', async () => { + const firstFetch = createDeferred>() + const secondFetch = createDeferred>() + const fetchMock = vi + .fn() + .mockImplementationOnce(() => firstFetch.promise) + .mockImplementationOnce(() => secondFetch.promise) + vi.stubGlobal('fetch', fetchMock) + + const { subscribeToEvents, reconnectSSE, getConnectionInfo } = await import('./events') + const onError = vi.fn() + + const unsubscribe = subscribeToEvents({ + onError, + }) + + reconnectSSE() + + firstFetch.reject(new Error('stale failure')) + + await Promise.resolve() + await Promise.resolve() + + expect(onError).not.toHaveBeenCalled() + expect(getConnectionInfo().state).toBe('connecting') + + secondFetch.reject(Object.assign(new Error('aborted'), { name: 'AbortError' })) + unsubscribe() + }) +}) diff --git a/src/api/events.ts b/src/api/events.ts new file mode 100644 index 0000000..a9af34b --- /dev/null +++ b/src/api/events.ts @@ -0,0 +1,896 @@ +// ============================================ +// Global Event Subscription (SSE) - Singleton Pattern +// ============================================ + +import { getApiBaseUrl, getAuthHeader } from './http' +import { createSseTextParser } from './sse' +import { normalizeTodoItems } from './todo' +import { isTauri } from '../utils/tauri' +import type { + ApiMessage, + EventCallbacks, + EventType, + GlobalEvent, + ServerConnectedPayload, + SessionErrorPayload, + TodoUpdatedPayload, +} from './types' +import { EventTypes } from '../types/api/event' + +// ============================================ +// Connection State +// ============================================ + +export type ConnectionState = 'connecting' | 'connected' | 'disconnected' | 'error' + +export interface ConnectionInfo { + state: ConnectionState + lastEventTime: number + reconnectAttempt: number + error?: string +} + +// 全局连接状态(可以被外部订阅) +let connectionInfo: ConnectionInfo = { + state: 'disconnected', + lastEventTime: 0, + reconnectAttempt: 0, +} + +const connectionListeners = new Set<(info: ConnectionInfo) => void>() + +function updateConnectionState(update: Partial) { + connectionInfo = { ...connectionInfo, ...update } + connectionListeners.forEach(fn => { + fn(connectionInfo) + }) +} + +export function getConnectionInfo(): ConnectionInfo { + return connectionInfo +} + +export function subscribeToConnectionState(fn: (info: ConnectionInfo) => void): () => void { + connectionListeners.add(fn) + // 立即发送当前状态 + fn(connectionInfo) + return () => connectionListeners.delete(fn) +} + +// ============================================ +// Singleton SSE Connection +// ============================================ + +const RECONNECT_DELAYS = [1000, 2000, 3000, 5000, 10000, 30000] +/** 后台时使用更激进的重连延迟,确保尽快恢复连接 */ +const BACKGROUND_RECONNECT_DELAYS = [500, 1000, 2000, 3000, 5000, 10000] +const HEARTBEAT_TIMEOUT = 60000 +/** 后台时的心跳超时(更宽松,因为后台 timer 可能不准) */ +const BACKGROUND_HEARTBEAT_TIMEOUT = 120000 +/** 后台 keepalive 间隔:定期检查连接是否还活着 */ +const BACKGROUND_KEEPALIVE_INTERVAL = 30000 + +// 所有订阅者的 callbacks +const allSubscribers = new Set() + +const EVENT_TYPE_SET = new Set(Object.values(EventTypes)) + +// 单例连接状态 +let singletonController: AbortController | null = null +let heartbeatTimer: ReturnType | null = null +let reconnectTimer: ReturnType | null = null +let keepaliveTimer: ReturnType | null = null +let isConnecting = false +let lifecycleListenersRegistered = false +/** 连接代次,每次 reconnectSSE() 递增,旧代次的事件会被丢弃 */ +let connectionGeneration = 0 +/** 当前是否在后台 */ +let isInBackground = false +/** 是否因为切换服务器而触发的重连 */ +let isServerSwitch = false +/** 上一次 bridge_disconnect 的 Promise,用于串行化 Tauri 侧的 disconnect → connect */ +let pendingDisconnect: Promise = Promise.resolve() +/** Cooldown: 上一次 onReconnected 广播的时间戳 */ +let lastReconnectedBroadcast = 0 +const RECONNECTED_COOLDOWN = 2000 + +function finalizeConnectionAttempt(generation: number): boolean { + if (generation !== connectionGeneration) { + return false + } + isConnecting = false + return true +} + +/** + * 广播 onReconnected,带 cooldown 防止 SSE 快速重连时密集触发数据拉取 + */ +function broadcastReconnected(reason: 'network' | 'server-switch') { + const now = Date.now() + if (reason !== 'server-switch' && now - lastReconnectedBroadcast < RECONNECTED_COOLDOWN) { + if (import.meta.env.DEV) { + console.log('[SSE] onReconnected skipped (cooldown)') + } + return + } + lastReconnectedBroadcast = now + allSubscribers.forEach(cb => { + cb.onReconnected?.(reason) + }) +} + +/** + * 请求 Tauri 侧断开 SSE 连接 + * 返回 Promise,调用方可以 await 确保断开完成后再发起新连接 + * 多次并发调用会自动串行化 + */ +function disconnectTauri(): Promise { + if (!isTauri()) return Promise.resolve() + + const p = pendingDisconnect.then(() => + import('@tauri-apps/api/core') + .then(({ invoke }) => invoke('bridge_disconnect', { args: { bridgeId: 'sse' } }).then(() => undefined)) + .catch(() => {}), + ) + pendingDisconnect = p + return p +} + +function resetHeartbeat() { + if (heartbeatTimer) clearTimeout(heartbeatTimer) + + updateConnectionState({ lastEventTime: Date.now() }) + + // 后台时使用更宽松的超时,因为移动端后台 timer 可能被冻结/延迟 + const timeout = isInBackground ? BACKGROUND_HEARTBEAT_TIMEOUT : HEARTBEAT_TIMEOUT + + heartbeatTimer = setTimeout(() => { + console.warn(`[SSE] No events received for ${timeout / 1000}s, reconnecting...`) + updateConnectionState({ state: 'disconnected', error: 'Heartbeat timeout' }) + forceReconnectNow() + }, timeout) +} + +function scheduleReconnect() { + if (reconnectTimer) clearTimeout(reconnectTimer) + if (allSubscribers.size === 0) return // 没有订阅者就不重连 + + const attempt = connectionInfo.reconnectAttempt + // 后台时使用更激进的重连策略 + const delays = isInBackground ? BACKGROUND_RECONNECT_DELAYS : RECONNECT_DELAYS + const delay = delays[Math.min(attempt, delays.length - 1)] + + if (import.meta.env.DEV) { + console.log(`[SSE] Reconnecting in ${delay}ms (attempt ${attempt + 1}, background: ${isInBackground})...`) + } + + reconnectTimer = setTimeout(() => { + updateConnectionState({ reconnectAttempt: attempt + 1 }) + connectSingleton() + }, delay) +} + +function connectSingleton() { + if (isConnecting || allSubscribers.size === 0) return + + // 如果状态声称 connected,验证连接是否真的活着 + if (connectionInfo.state === 'connected') { + const timeSinceLastEvent = Date.now() - connectionInfo.lastEventTime + // 后台时使用更宽松的超时判断 + const staleTimeout = isInBackground ? BACKGROUND_HEARTBEAT_TIMEOUT : HEARTBEAT_TIMEOUT + if (timeSinceLastEvent > staleTimeout) { + // 太久没收到事件,连接可能已死,强制断开再重连 + if (import.meta.env.DEV) { + console.log( + `[SSE] connectSingleton: state=connected but stale (${Math.round(timeSinceLastEvent / 1000)}s), forcing disconnect`, + ) + } + connectionGeneration++ + disconnectTauri() + if (singletonController) { + singletonController.abort() + singletonController = null + } + updateConnectionState({ state: 'disconnected' }) + } else { + return // 连接确实还活着 + } + } + + isConnecting = true + + updateConnectionState({ state: 'connecting' }) + if (import.meta.env.DEV) { + console.log('[SSE] Connecting singleton...') + } + + // 注册生命周期监听器(首次连接时) + registerLifecycleListeners() + + if (isTauri()) { + connectViaTauri() + } else { + connectViaBrowser() + } +} + +// ============================================ +// Tauri SSE Bridge (via Rust reqwest + Channel) +// ============================================ + +/** Unified bridge event from Rust (transparent proxy) */ +interface BridgeEvent { + event: 'connected' | 'data' | 'disconnected' | 'error' + data?: { + data?: string + code?: number + reason?: string + message?: string + } +} + +async function connectViaTauri() { + const myGeneration = connectionGeneration + + try { + // 等待上一次 disconnect 完成,避免 Rust 侧 connect/disconnect 竞争 + await pendingDisconnect + + const { invoke, Channel } = await import('@tauri-apps/api/core') + + const url = `${getApiBaseUrl()}/global/event` + const authHeaders = getAuthHeader() + const authHeader = authHeaders['Authorization'] || null + + const sseParser = createSseTextParser() + + const onEvent = new Channel() + + onEvent.onmessage = (msg: BridgeEvent) => { + // 代次不匹配,说明已经 reconnect 过了,忽略旧连接的事件 + if (myGeneration !== connectionGeneration) return + + switch (msg.event) { + case 'connected': { + isConnecting = false + + updateConnectionState({ + state: 'connected', + reconnectAttempt: 0, + error: undefined, + }) + resetHeartbeat() + if (import.meta.env.DEV) { + console.log('[SSE/Tauri] Connected') + } + // 每次连接成功都通知订阅者刷新数据 + // 覆盖场景:首次连接(先开 UI 后开 server)、网络重连、服务器切换 + const reason = isServerSwitch ? ('server-switch' as const) : ('network' as const) + isServerSwitch = false + broadcastReconnected(reason) + break + } + case 'data': { + resetHeartbeat() + if (!msg.data?.data) break + + for (const eventData of sseParser.push(msg.data.data)) { + const globalEvent = parseGlobalEvent(eventData) + if (globalEvent) { + broadcastEvent(globalEvent) + } + } + break + } + case 'disconnected': { + isConnecting = false + if (import.meta.env.DEV) { + console.log('[SSE/Tauri] Disconnected:', msg.data?.reason) + } + updateConnectionState({ state: 'disconnected' }) + scheduleReconnect() + break + } + case 'error': { + isConnecting = false + const errorMsg = msg.data?.message || 'Unknown error' + if (import.meta.env.DEV) { + console.warn('[SSE/Tauri] Error:', errorMsg) + } + updateConnectionState({ + state: 'error', + error: errorMsg, + }) + allSubscribers.forEach(cb => { + cb.onError?.(new Error(errorMsg)) + }) + scheduleReconnect() + break + } + } + } + + // 调用统一桥接命令 + invoke('bridge_connect', { + args: { bridgeId: 'sse', url, authHeader }, + onEvent, + }).catch((error: unknown) => { + if (!finalizeConnectionAttempt(myGeneration)) return + const errorMsg = error instanceof Error ? error.message : String(error) + if (import.meta.env.DEV) { + console.warn('[SSE/Tauri] invoke error:', errorMsg) + } + updateConnectionState({ + state: 'error', + error: errorMsg, + }) + allSubscribers.forEach(cb => { + cb.onError?.(new Error(errorMsg)) + }) + scheduleReconnect() + }) + } catch (error) { + if (!finalizeConnectionAttempt(myGeneration)) return + const errorMsg = error instanceof Error ? error.message : String(error) + console.warn('[SSE/Tauri] Failed to initialize:', errorMsg) + updateConnectionState({ state: 'error', error: errorMsg }) + scheduleReconnect() + } +} + +// ============================================ +// Browser SSE (via fetch + ReadableStream) +// ============================================ + +function connectViaBrowser() { + singletonController = new AbortController() + + // 捕获当前连接代次 + const myGeneration = connectionGeneration + + fetch(`${getApiBaseUrl()}/global/event`, { + signal: singletonController.signal, + headers: { + Accept: 'text/event-stream', + ...getAuthHeader(), + }, + }) + .then(async response => { + if (myGeneration !== connectionGeneration) { + await response.body?.cancel?.().catch(() => {}) + return + } + + finalizeConnectionAttempt(myGeneration) + + if (!response.ok) { + throw new Error(`Failed to subscribe: ${response.status}`) + } + + updateConnectionState({ + state: 'connected', + reconnectAttempt: 0, + error: undefined, + }) + resetHeartbeat() + if (import.meta.env.DEV) { + console.log('[SSE] Singleton connected') + } + + // 每次连接成功都通知订阅者刷新数据 + // 覆盖场景:首次连接(先开 UI 后开 server)、网络重连、服务器切换 + const reason = isServerSwitch ? ('server-switch' as const) : ('network' as const) + isServerSwitch = false + broadcastReconnected(reason) + + const reader = response.body?.getReader() + if (!reader) { + throw new Error('No response body') + } + + const decoder = new TextDecoder() + const sseParser = createSseTextParser() + + while (true) { + // 代次不匹配,说明已经 reconnect 过了,停止读取旧流 + if (myGeneration !== connectionGeneration) { + reader.cancel().catch(() => {}) + break + } + + const { done, value } = await reader.read() + if (myGeneration !== connectionGeneration) { + reader.cancel().catch(() => {}) + break + } + + if (done) { + if (import.meta.env.DEV) { + console.log('[SSE] Stream ended, reconnecting...') + } + updateConnectionState({ state: 'disconnected' }) + scheduleReconnect() + break + } + + resetHeartbeat() + + for (const eventData of sseParser.push(decoder.decode(value, { stream: true }))) { + const globalEvent = parseGlobalEvent(eventData) + if (globalEvent) { + broadcastEvent(globalEvent) + } + } + } + }) + .catch(error => { + if (!finalizeConnectionAttempt(myGeneration)) { + return + } + + if (error.name === 'AbortError') { + return + } + // SSE stream error - logged for debugging + if (import.meta.env.DEV) { + console.warn('[SSE] Event stream error:', error) + } + updateConnectionState({ + state: 'error', + error: error.message || 'Connection failed', + }) + // 通知所有订阅者出错 + allSubscribers.forEach(cb => { + cb.onError?.(error) + }) + scheduleReconnect() + }) +} + +function parseGlobalEvent(raw: string): GlobalEvent | null { + try { + const parsed: unknown = JSON.parse(raw) + return isGlobalEvent(parsed) ? parsed : null + } catch (error) { + if (import.meta.env.DEV) { + console.warn('[SSE] Failed to parse event:', error, raw) + } + return null + } +} + +function isGlobalEvent(value: unknown): value is GlobalEvent { + if (!isRecord(value)) return false + if (typeof value.directory !== 'string') return false + if (!isRecord(value.payload)) return false + if (!isEventType(value.payload.type)) return false + return 'properties' in value.payload +} + +function isEventType(value: unknown): value is EventType { + return typeof value === 'string' && EVENT_TYPE_SET.has(value) +} + +function isRecord(value: unknown): value is Record { + return !!value && typeof value === 'object' +} + +function getMessageInfo(properties: unknown): ApiMessage | undefined { + if (!isRecord(properties)) return undefined + const message = properties.info ?? properties.message + return isRecord(message) ? (message as unknown as ApiMessage) : undefined +} + +// ============================================ +// Background Keepalive +// ============================================ + +/** + * 后台 keepalive:定期检查连接是否还活着 + * 移动端后台时 SSE 连接可能静默断开,timer 也可能被冻结 + * 这个轮询机制可以在 timer 恢复执行时及时发现连接已死 + */ +function startBackgroundKeepalive() { + stopBackgroundKeepalive() + + keepaliveTimer = setInterval(() => { + const now = Date.now() + const timeSinceLastEvent = now - connectionInfo.lastEventTime + const timeout = BACKGROUND_HEARTBEAT_TIMEOUT + + if (import.meta.env.DEV) { + console.log( + `[SSE] Background keepalive check: last event ${Math.round(timeSinceLastEvent / 1000)}s ago, state=${connectionInfo.state}`, + ) + } + + if (connectionInfo.state === 'connected' && timeSinceLastEvent > timeout) { + // 连接声称是 connected,但已经太久没收到事件了 — 连接可能已经静默断开 + console.warn('[SSE] Background keepalive: connection appears dead, forcing reconnect') + + // 断开旧连接 + disconnectTauri() + if (singletonController) { + singletonController.abort() + singletonController = null + } + isConnecting = false + connectionGeneration++ + + updateConnectionState({ state: 'disconnected', error: 'Background keepalive timeout' }) + scheduleReconnect() + } else if (connectionInfo.state === 'disconnected' || connectionInfo.state === 'error') { + // 已知断连状态,但可能 reconnectTimer 被后台冻结了 — 主动触发重连 + if (!reconnectTimer && !isConnecting) { + console.warn('[SSE] Background keepalive: detected stale disconnect, forcing reconnect') + updateConnectionState({ reconnectAttempt: 0 }) + connectSingleton() + } + } + }, BACKGROUND_KEEPALIVE_INTERVAL) +} + +function stopBackgroundKeepalive() { + if (keepaliveTimer) { + clearInterval(keepaliveTimer) + keepaliveTimer = null + } +} + +function disconnectSingleton() { + if (heartbeatTimer) clearTimeout(heartbeatTimer) + if (reconnectTimer) clearTimeout(reconnectTimer) + stopBackgroundKeepalive() + + // Tauri: 调用 Rust 侧断开命令 + disconnectTauri() + + // Browser: abort fetch + if (singletonController) { + singletonController.abort() + singletonController = null + } + + isConnecting = false + updateConnectionState({ state: 'disconnected' }) +} + +// ============================================ +// Lifecycle Listeners (Visibility + Network) +// ============================================ + +function handleVisibilityChange() { + if (document.visibilityState === 'visible') { + // 页面恢复前台 + isInBackground = false + stopBackgroundKeepalive() + + if (import.meta.env.DEV) { + console.log( + `[SSE] Page became visible, state=${connectionInfo.state}, lastEvent=${Math.round((Date.now() - connectionInfo.lastEventTime) / 1000)}s ago`, + ) + } + + if (allSubscribers.size === 0) return + + if (connectionInfo.state !== 'connected') { + // 明确断连,立即重连 + if (import.meta.env.DEV) { + console.log('[SSE] Page visible: not connected, forcing reconnect...') + } + forceReconnectNow() + } else { + // 状态是 connected,但连接可能已经在后台静默断开 + // 检查最后一次收到事件的时间 + const timeSinceLastEvent = Date.now() - connectionInfo.lastEventTime + if (timeSinceLastEvent > HEARTBEAT_TIMEOUT) { + // 太久没收到事件了,连接大概率已死 + console.warn( + `[SSE] Page visible: connection may be stale (last event ${Math.round(timeSinceLastEvent / 1000)}s ago), forcing reconnect`, + ) + forceReconnectNow() + } else { + // 连接看起来还活着,重置心跳为前台模式 + resetHeartbeat() + } + } + } else { + // 页面进入后台 + isInBackground = true + + if (import.meta.env.DEV) { + console.log('[SSE] Page entering background, switching to background mode') + } + + // 不再清除心跳!保持心跳运行,但切换为后台模式(更长超时) + // 心跳 timer 可能在后台被冻结,但 keepalive 轮询会在 timer 恢复时补上 + resetHeartbeat() + + // 启动后台 keepalive 轮询 + if (allSubscribers.size > 0) { + startBackgroundKeepalive() + } + } +} + +/** + * 强制立即重连:断开旧连接、重置计数器、立即发起新连接 + */ +function forceReconnectNow() { + if (reconnectTimer) clearTimeout(reconnectTimer) + reconnectTimer = null + updateConnectionState({ reconnectAttempt: 0 }) + + // 断开旧连接 + connectionGeneration++ + disconnectTauri() + if (singletonController) { + singletonController.abort() + singletonController = null + } + isConnecting = false + + connectSingleton() +} + +function handleOnline() { + if (import.meta.env.DEV) { + console.log('[SSE] Network online, forcing reconnect...') + } + if (connectionInfo.state !== 'connected' && allSubscribers.size > 0) { + forceReconnectNow() + } +} + +function handleOffline() { + if (import.meta.env.DEV) { + console.log('[SSE] Network offline') + } + // 标记为断连,但不尝试重连(没网重连也没用) + if (connectionInfo.state === 'connected' || connectionInfo.state === 'connecting') { + connectionGeneration++ + disconnectTauri() + if (singletonController) { + singletonController.abort() + singletonController = null + } + isConnecting = false + if (heartbeatTimer) clearTimeout(heartbeatTimer) + if (reconnectTimer) clearTimeout(reconnectTimer) + stopBackgroundKeepalive() + updateConnectionState({ state: 'disconnected', error: 'Network offline' }) + } +} + +function registerLifecycleListeners() { + if (lifecycleListenersRegistered) return + lifecycleListenersRegistered = true + + document.addEventListener('visibilitychange', handleVisibilityChange) + window.addEventListener('online', handleOnline) + window.addEventListener('offline', handleOffline) +} + +function unregisterLifecycleListeners() { + if (!lifecycleListenersRegistered) return + lifecycleListenersRegistered = false + + document.removeEventListener('visibilitychange', handleVisibilityChange) + window.removeEventListener('online', handleOnline) + window.removeEventListener('offline', handleOffline) +} + +function shouldLogSseEvents(): boolean { + if (typeof window === 'undefined') return false + return window.localStorage.getItem('piagentui.debug.sse') === '1' +} + +// 广播事件给所有订阅者 +function broadcastEvent(globalEvent: GlobalEvent) { + if (shouldLogSseEvents()) { + console.debug( + `%c[SSE Event] Received: ${globalEvent.payload.type}`, + 'color: #00bcd4; font-weight: bold; background-color: rgba(0, 188, 212, 0.1); padding: 2px 4px; border-radius: 3px;', + globalEvent.payload.properties, + ) + } + + // 广播给所有订阅者 + allSubscribers.forEach(callbacks => { + handleEventForSubscriber(globalEvent.payload, callbacks) + }) +} + +function handleEventForSubscriber(payload: GlobalEvent['payload'], callbacks: EventCallbacks) { + switch (payload.type) { + case EventTypes.MESSAGE_UPDATED: { + // Server sends message data directly in properties (no .info wrapper). + // Fall back to payload.properties directly if getMessageInfo returns nothing. + const message = + getMessageInfo(payload.properties) ?? (isRecord(payload.properties) ? payload.properties : undefined) + if (message) callbacks.onMessageUpdated?.(message as ApiMessage) + break + } + case EventTypes.MESSAGE_PART_UPDATED: { + // Server sends part data directly in properties (no .part wrapper). + // Use payload.properties directly instead of payload.properties.part. + callbacks.onPartUpdated?.(payload.properties) + break + } + case EventTypes.MESSAGE_PART_DELTA: { + callbacks.onPartDelta?.(payload.properties) + break + } + case EventTypes.MESSAGE_PART_REMOVED: + callbacks.onPartRemoved?.(payload.properties) + break + case EventTypes.SESSION_UPDATED: { + callbacks.onSessionUpdated?.(payload.properties.info) + break + } + case EventTypes.SESSION_CREATED: { + callbacks.onSessionCreated?.(payload.properties.info) + break + } + case EventTypes.SESSION_DELETED: { + callbacks.onSessionDeleted?.(payload.properties.sessionID) + break + } + case EventTypes.PROJECT_UPDATED: { + callbacks.onProjectUpdated?.(payload.properties) + break + } + case EventTypes.SESSION_ERROR: + callbacks.onSessionError?.(normalizeSessionError(payload.properties)) + break + case EventTypes.SESSION_IDLE: + callbacks.onSessionIdle?.(payload.properties) + break + case EventTypes.SESSION_STATUS: + callbacks.onSessionStatus?.(payload.properties) + break + case EventTypes.PERMISSION_ASKED: + callbacks.onPermissionAsked?.(payload.properties) + break + case EventTypes.PERMISSION_REPLIED: + callbacks.onPermissionReplied?.(payload.properties) + break + case EventTypes.QUESTION_ASKED: + callbacks.onQuestionAsked?.(payload.properties) + break + case EventTypes.QUESTION_REPLIED: + callbacks.onQuestionReplied?.(payload.properties) + break + case EventTypes.QUESTION_REJECTED: + callbacks.onQuestionRejected?.(payload.properties) + break + case EventTypes.WORKTREE_READY: + callbacks.onWorktreeReady?.(payload.properties) + break + case EventTypes.WORKTREE_FAILED: + callbacks.onWorktreeFailed?.(payload.properties) + break + case EventTypes.VCS_BRANCH_UPDATED: + callbacks.onVcsBranchUpdated?.(payload.properties) + break + case EventTypes.TODO_UPDATED: { + callbacks.onTodoUpdated?.({ + sessionID: payload.properties.sessionID, + todos: normalizeTodoItems(payload.properties.todos), + } satisfies TodoUpdatedPayload) + break + } + case EventTypes.SERVER_CONNECTED: + callbacks.onServerConnected?.(normalizeServerConnected(payload.properties)) + break + default: + // 忽略其他事件类型 + break + } +} + +function normalizeServerConnected(properties: unknown): ServerConnectedPayload { + if (!isRecord(properties)) return {} + return { + timestamp: properties.timestamp, + } +} + +function normalizeSessionError(properties: unknown): SessionErrorPayload { + if (!isRecord(properties)) { + return { sessionID: '', name: 'UnknownError', data: properties } + } + + const sessionID = typeof properties.sessionID === 'string' ? properties.sessionID : '' + + if (typeof properties.name === 'string') { + return { + sessionID, + name: properties.name, + data: properties.data, + } + } + + const sdkError = properties.error + if (isRecord(sdkError)) { + return { + sessionID, + name: typeof sdkError.name === 'string' ? sdkError.name : 'UnknownError', + data: 'data' in sdkError ? sdkError.data : sdkError, + } + } + + return { + sessionID, + name: 'UnknownError', + data: sdkError, + } +} + +// ============================================ +// Public API +// ============================================ + +/** + * 强制重连 SSE(用于切换服务器等场景) + * 断开当前连接 → 重置状态 → 立即重连(新 URL 由 getApiBaseUrl() 动态解析) + */ +export function reconnectSSE() { + if (allSubscribers.size === 0) return // 没有订阅者不需要重连 + + if (import.meta.env.DEV) { + console.log('[SSE] reconnectSSE() called, forcing reconnect to new server...') + } + + // 断开现有连接 + if (heartbeatTimer) clearTimeout(heartbeatTimer) + if (reconnectTimer) clearTimeout(reconnectTimer) + reconnectTimer = null + stopBackgroundKeepalive() + + // 标记为服务器切换,重连成功时 onReconnected 会携带 'server-switch' reason + isServerSwitch = true + + // 递增连接代次,使旧连接的事件回调自动失效 + connectionGeneration++ + + disconnectTauri() + if (singletonController) { + singletonController.abort() + singletonController = null + } + isConnecting = false + + // 重置重连计数 + updateConnectionState({ + state: 'disconnected', + reconnectAttempt: 0, + error: undefined, + }) + + // 立即重连(getApiBaseUrl() 会读取新的 activeServer) + connectSingleton() +} + +/** + * 订阅 SSE 事件(单例模式,多个订阅者共享一个连接) + */ +export function subscribeToEvents(callbacks: EventCallbacks): () => void { + allSubscribers.add(callbacks) + + // 如果是第一个订阅者,启动连接 + if (allSubscribers.size === 1) { + connectSingleton() + } + + // 返回取消订阅函数 + return () => { + allSubscribers.delete(callbacks) + + // 如果没有订阅者了,断开连接并清理监听器 + if (allSubscribers.size === 0) { + disconnectSingleton() + unregisterLifecycleListeners() + } + } +} diff --git a/src/api/extension.test.ts b/src/api/extension.test.ts new file mode 100644 index 0000000..34243c4 --- /dev/null +++ b/src/api/extension.test.ts @@ -0,0 +1,43 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { getExtensions, installExtension, removeExtensionPackage } from './extension' +import { piClient } from './piClient' + +vi.mock('./piClient', () => ({ + piClient: { + get: vi.fn(), + post: vi.fn(), + delete: vi.fn(), + }, +})) + +describe('extension api', () => { + beforeEach(() => { + vi.mocked(piClient.get).mockReset() + vi.mocked(piClient.post).mockReset() + vi.mocked(piClient.delete).mockReset() + }) + + it('loads extension catalog and sends safe package operations to backend', async () => { + vi.mocked(piClient.get).mockResolvedValue({ + packages: [], + summary: { total: 0, active: 0, inactive: 0, missing: 0, error: 0 }, + }) + vi.mocked(piClient.post).mockResolvedValue({ source: 'npm:pi-hud', scope: 'user', reloadRequired: true }) + vi.mocked(piClient.delete).mockResolvedValue({ source: 'npm:pi-hud', scope: 'user', reloadRequired: true }) + + await expect(getExtensions('/repo')).resolves.toMatchObject({ summary: { total: 0 } }) + await expect(installExtension('pi install npm:pi-hud', '/repo')).resolves.toMatchObject({ reloadRequired: true }) + await expect(removeExtensionPackage('npm:pi-hud', 'user', '/repo')).resolves.toMatchObject({ reloadRequired: true }) + + expect(piClient.get).toHaveBeenCalledWith('/api/extensions?directory=%2Frepo') + expect(piClient.post).toHaveBeenCalledWith('/api/extensions/install', { + command: 'pi install npm:pi-hud', + directory: '/repo', + }) + expect(piClient.delete).toHaveBeenCalledWith('/api/extensions/package', { + source: 'npm:pi-hud', + scope: 'user', + directory: '/repo', + }) + }) +}) diff --git a/src/api/extension.ts b/src/api/extension.ts new file mode 100644 index 0000000..b9efddc --- /dev/null +++ b/src/api/extension.ts @@ -0,0 +1,36 @@ +import { formatPathForApi } from '../utils/directoryUtils' +import { piClient } from './piClient' +import type { + ExtensionCatalog, + ExtensionInstallResult, + ExtensionPackageScope, + ExtensionRemoveResult, +} from '../types/api/extension' + +function withDirectoryQuery(path: string, directory?: string): string { + const formatted = formatPathForApi(directory) + return formatted ? `${path}?directory=${encodeURIComponent(formatted)}` : path +} + +export async function getExtensions(directory?: string): Promise { + return await piClient.get(withDirectoryQuery('/api/extensions', directory)) +} + +export async function installExtension(command: string, directory?: string): Promise { + return await piClient.post('/api/extensions/install', { + command, + directory: formatPathForApi(directory), + }) +} + +export async function removeExtensionPackage( + source: string, + scope: ExtensionPackageScope, + directory?: string, +): Promise { + return await piClient.delete('/api/extensions/package', { + source, + scope, + directory: formatPathForApi(directory), + }) +} diff --git a/src/api/file.ts b/src/api/file.ts new file mode 100644 index 0000000..885f614 --- /dev/null +++ b/src/api/file.ts @@ -0,0 +1,151 @@ +// ============================================ +// File Search API Functions - Decoupled from SDK +// ============================================ + +import { piClient } from './piClient' +import { formatPathForApi } from '../utils/directoryUtils' +import type { FileNode, FileContent, FileStatusItem, SymbolInfo } from './types' +import { serverStore } from '../store/serverStore' + +const ROOT_DIRECTORY_CACHE_TTL_MS = 10_000 + +const rootDirectoryCache = new Map() +const rootDirectoryInflight = new Map>() + +function isRootDirectoryPath(path: string): boolean { + return path === '' || path === '.' || path === './' +} + +function getRootDirectoryCacheKey(directory?: string): string { + return `${serverStore.getActiveServerId()}::${formatPathForApi(directory) ?? ''}` +} + +async function fetchDirectory(path: string, directory?: string): Promise { + const isAbsolute = /^[a-zA-Z]:/.test(path) || path.startsWith('/') + const targetDir = isAbsolute ? path : (directory || '') + const targetPath = isAbsolute ? '' : path + + try { + const query = `?path=${encodeURIComponent(targetPath)}&directory=${encodeURIComponent(targetDir)}` + const data = await piClient.get<{ files: FileNode[] }>(`/api/files/list${query}`) + return data.files || [] + } catch { + return [] + } +} + +/** + * 搜索文件或目录 + */ +export async function searchFiles( + query: string, + options: { + directory?: string + type?: 'file' | 'directory' + limit?: number + } = {}, +): Promise { + try { + const q = `?query=${encodeURIComponent(query)}&directory=${encodeURIComponent(options.directory || '')}&type=${options.type || ''}&limit=${options.limit || ''}` + const data = await piClient.get<{ files: string[] }>(`/api/find/files${q}`) + return data.files || [] + } catch { + return [] + } +} + +/** + * 列出目录内容 + */ +export async function listDirectory(path: string, directory?: string): Promise { + if (!isRootDirectoryPath(path)) { + return fetchDirectory(path, directory) + } + + const key = getRootDirectoryCacheKey(directory) + const now = Date.now() + const cached = rootDirectoryCache.get(key) + if (cached && cached.expiresAt > now) { + return cached.data + } + + const inflight = rootDirectoryInflight.get(key) + if (inflight) { + return inflight + } + + const request = fetchDirectory(path === '' ? '.' : path, directory) + .then(data => { + rootDirectoryCache.set(key, { data, expiresAt: Date.now() + ROOT_DIRECTORY_CACHE_TTL_MS }) + return data + }) + .finally(() => { + rootDirectoryInflight.delete(key) + }) + + rootDirectoryInflight.set(key, request) + return request +} + +export async function prefetchRootDirectory(directory?: string): Promise { + await listDirectory('.', directory) +} + +/** + * 读取文件内容 + */ +export async function getFileContent(path: string, directory?: string): Promise { + try { + const q = `?path=${encodeURIComponent(path)}&directory=${encodeURIComponent(directory || '')}` + const data = await piClient.get(`/api/files/read${q}`) + return { + ...data, + text: data.text ?? data.content ?? '', + content: data.content ?? data.text ?? '', + } + } catch (e) { + const errText = `Failed to load file content: ${e instanceof Error ? e.message : String(e)}` + return { + path, + text: errText, + content: errText, + } + } +} + +/** + * 获取文件 git 状态 + */ +export async function getFileStatus(directory?: string): Promise { + try { + const q = `?directory=${encodeURIComponent(directory || '')}` + const data = await piClient.get<{ status: FileStatusItem[] }>(`/api/files/status${q}`) + return data.status || [] + } catch { + return [] + } +} + +/** + * 搜索代码符号 + */ +export async function searchSymbols(query: string, directory?: string): Promise { + try { + const q = `?query=${encodeURIComponent(query)}&directory=${encodeURIComponent(directory || '')}` + const data = await piClient.get<{ symbols: SymbolInfo[] }>(`/api/find/symbols${q}`) + return data.symbols || [] + } catch { + return [] + } +} + +/** + * 搜索目录(便捷方法) + */ +export async function searchDirectories(query: string, baseDirectory?: string, limit: number = 50): Promise { + return searchFiles(query, { + directory: baseDirectory, + type: 'directory', + limit, + }) +} diff --git a/src/api/global.ts b/src/api/global.ts new file mode 100644 index 0000000..214809e --- /dev/null +++ b/src/api/global.ts @@ -0,0 +1,46 @@ +// ============================================ +// Global API - Decoupled from SDK +// ============================================ + +import { piClient } from './piClient' +import { formatPathForApi } from '../utils/directoryUtils' + +export interface HealthInfo { + status: string + version?: string +} + +/** + * 获取服务器健康状态 + */ +export async function getHealth(): Promise { + try { + return await piClient.get('/api/health') + } catch { + return { status: 'ok', version: '1.0.0-pi' } + } +} + +/** + * 释放所有资源 + */ +export async function disposeGlobal(): Promise { + try { + await piClient.post('/api/global/dispose') + return true + } catch { + return true + } +} + +/** + * 释放当前实例 + */ +export async function disposeInstance(directory?: string): Promise { + try { + await piClient.post('/api/instance/dispose', { directory: formatPathForApi(directory) }) + return true + } catch { + return true + } +} diff --git a/src/api/http.test.ts b/src/api/http.test.ts new file mode 100644 index 0000000..99ee10b --- /dev/null +++ b/src/api/http.test.ts @@ -0,0 +1,41 @@ +import { describe, expect, it } from 'vitest' +import { buildQueryString } from './http' + +// ============================================ +// buildQueryString 测试 +// ============================================ + +describe('buildQueryString', () => { + it('returns empty string for empty params', () => { + expect(buildQueryString({})).toBe('') + }) + + it('skips undefined values', () => { + expect(buildQueryString({ a: 'hello', b: undefined })).toBe('?a=hello') + }) + + it('handles string, number, boolean values', () => { + const result = buildQueryString({ name: 'test', page: 1, active: true }) + expect(result).toBe('?name=test&page=1&active=true') + }) + + it('encodes special characters in values', () => { + const result = buildQueryString({ directory: 'C:\\Program Files\\app' }) + expect(result).toBe('?directory=C%3A%5CProgram%20Files%5Capp') + }) + + it('encodes special characters in keys', () => { + const result = buildQueryString({ 'key with spaces': 'value' }) + expect(result).toBe('?key%20with%20spaces=value') + }) + + it('encodes ampersand and equals in values', () => { + const result = buildQueryString({ q: 'a=1&b=2' }) + expect(result).toBe('?q=a%3D1%26b%3D2') + }) + + it('encodes unicode characters', () => { + const result = buildQueryString({ path: '/home/用户/project' }) + expect(result).toBe('?path=%2Fhome%2F%E7%94%A8%E6%88%B7%2Fproject') + }) +}) diff --git a/src/api/http.ts b/src/api/http.ts new file mode 100644 index 0000000..09bc312 --- /dev/null +++ b/src/api/http.ts @@ -0,0 +1,47 @@ +// ============================================ +// HTTP Utilities +// 仅保留给 SSE / PTY WebSocket 使用的 URL 与 auth 辅助函数 +// ============================================ + +import { serverStore, makeBasicAuthHeader } from '../store/serverStore' + +/** + * 获取当前 API Base URL + * 优先使用 serverStore 中的活动服务器,回退到常量 + */ +export function getApiBaseUrl(): string { + return serverStore.getActiveBaseUrl() +} + +/** + * 获取当前活动服务器的 Authorization header + * 如果服务器配置了密码则返回 Basic Auth header,否则返回 undefined + */ +export function getAuthHeader(): Record { + const token = serverStore.getActiveToken() + if (token) { + return { Authorization: `Bearer ${token}` } + } + const auth = serverStore.getActiveAuth() + if (auth?.password) { + return { Authorization: makeBasicAuthHeader(auth) } + } + return {} +} + +type QueryValue = string | number | boolean | undefined + +/** + * 构建查询字符串 + * 值会进行 URL 编码以安全处理空格、特殊字符等 + * (Go 后端的 r.URL.Query().Get() 会自动解码) + */ +export function buildQueryString(params: Record): string { + const parts: string[] = [] + for (const [key, value] of Object.entries(params)) { + if (value !== undefined) { + parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`) + } + } + return parts.length > 0 ? '?' + parts.join('&') : '' +} diff --git a/src/api/index.ts b/src/api/index.ts new file mode 100644 index 0000000..3a38263 --- /dev/null +++ b/src/api/index.ts @@ -0,0 +1,3 @@ +// API 模块入口 +// 从 client.ts 统一导出所有内容(client.ts 会 re-export 其他子模块) +export * from './client' diff --git a/src/api/lsp.ts b/src/api/lsp.ts new file mode 100644 index 0000000..6b1f4d1 --- /dev/null +++ b/src/api/lsp.ts @@ -0,0 +1,29 @@ +// ============================================ +// LSP API Stub - Language Server Protocol +// Gracefully stubbed out for Pi Agent MVP +// ============================================ + +export interface LSPStatus { + running: boolean + language?: string + capabilities?: string[] +} + +/** + * 获取 LSP 服务状态 + */ +export async function getLspStatus(_directory?: string): Promise { + return { running: false } +} + +export interface FormatterStatus { + available: boolean + name?: string +} + +/** + * 获取格式化器状态 + */ +export async function getFormatterStatus(_directory?: string): Promise { + return { available: false } +} diff --git a/src/api/mcp.test.ts b/src/api/mcp.test.ts new file mode 100644 index 0000000..df98b66 --- /dev/null +++ b/src/api/mcp.test.ts @@ -0,0 +1,40 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { getMcpStatus } from './mcp' +import { piClient } from './piClient' + +vi.mock('./piClient', () => ({ + piClient: { + get: vi.fn(), + }, +})) + +describe('getMcpStatus', () => { + beforeEach(() => { + vi.mocked(piClient.get).mockReset() + }) + + it('loads real MCP status from the backend and preserves metadata', async () => { + vi.mocked(piClient.get).mockResolvedValue({ + servers: { + context7: { + status: 'configured', + transport: 'http', + source: 'global', + url: 'https://mcp.context7.com/mcp', + directTools: true, + }, + }, + configPaths: ['C:/Users/Evandro/.pi/agent/mcp.json'], + }) + + const status = await getMcpStatus('D:/repo') + + expect(piClient.get).toHaveBeenCalledWith('/api/mcp/status') + expect(status.servers.context7).toMatchObject({ + status: 'configured', + transport: 'http', + source: 'global', + directTools: true, + }) + }) +}) diff --git a/src/api/mcp.ts b/src/api/mcp.ts new file mode 100644 index 0000000..2b09047 --- /dev/null +++ b/src/api/mcp.ts @@ -0,0 +1,62 @@ +// ============================================ +// MCP API - Model Context Protocol +// ============================================ + +import type { MCPStatusResponse, McpServerConfig } from '../types/api/mcp' +import { piClient } from './piClient' + +/** + * 获取所有 MCP 服务器状态 + */ +export async function getMcpStatus(_directory?: string): Promise { + return piClient.get('/api/mcp/status') +} + +/** + * 添加 MCP 服务器 + */ +export async function addMcpServer(_name: string, _config: McpServerConfig, _directory?: string): Promise { + throw new Error('MCP is not supported in the Pi Agent MVP.') +} + +/** + * 连接到 MCP 服务器 + */ +export async function connectMcpServer(_name: string, _directory?: string): Promise { + throw new Error('MCP is not supported in the Pi Agent MVP.') +} + +/** + * 断开 MCP 服务器连接 + */ +export async function disconnectMcpServer(_name: string, _directory?: string): Promise { + throw new Error('MCP is not supported in the Pi Agent MVP.') +} + +/** + * 开始 MCP 认证流程 + */ +export function startMcpAuth(_name: string, _directory?: string): Promise<{ url: string }> { + return Promise.reject(new Error('MCP authentication is not supported yet.')) +} + +/** + * 移除 MCP 认证 + */ +export async function removeMcpAuth(_name: string, _directory?: string): Promise { + throw new Error('MCP is not supported in the Pi Agent MVP.') +} + +/** + * 完成 MCP OAuth 认证(使用授权码) + */ +export async function completeMcpAuth(_name: string, _code: string, _directory?: string): Promise { + throw new Error('MCP is not supported in the Pi Agent MVP.') +} + +/** + * 启动完整的 OAuth 认证流程 + */ +export async function authenticateMcp(_name: string, _directory?: string): Promise { + throw new Error('MCP is not supported in the Pi Agent MVP.') +} diff --git a/src/api/message.ts b/src/api/message.ts new file mode 100644 index 0000000..165c91a --- /dev/null +++ b/src/api/message.ts @@ -0,0 +1,156 @@ +// ============================================ +// Message API Functions +// ============================================ + +import { piClient } from './piClient' +import { formatPathForApi } from '../utils/directoryUtils' +import type { + ApiMessageWithParts, + ApiAgentPart, + ApiTextPart, + ApiFilePart, + Attachment, + RevertedMessage, + SendMessageParams, + SendMessageResponse, +} from './types' + +type UserContentSource = { + parts: Array< + | ApiTextPart + | ApiFilePart + | ApiAgentPart + | { + type: string + } + > +} + +function isTextUserContentPart(part: UserContentSource['parts'][number]): part is ApiTextPart { + return part.type === 'text' && 'text' in part +} + +function isFileUserContentPart(part: UserContentSource['parts'][number]): part is ApiFilePart { + return part.type === 'file' && 'mime' in part && 'url' in part +} + +function isAgentUserContentPart(part: UserContentSource['parts'][number]): part is ApiAgentPart { + return part.type === 'agent' && 'name' in part +} + +// ============================================ +// Message Query +// ============================================ + +/** + * 获取 session 的消息列表 + */ +export async function getSessionMessages( + sessionId: string, + limit?: number, + directory?: string, +): Promise { + try { + const data = await piClient.get<{ messages: ApiMessageWithParts[] }>( + `/api/sessions/${sessionId}/messages?directory=${formatPathForApi(directory)}&limit=${limit || ''}` + ) + return data.messages || [] + } catch { + return [] + } +} + +/** + * 获取 session 的消息数量 + */ +export async function getSessionMessageCount(sessionId: string): Promise { + const messages = await getSessionMessages(sessionId) + return messages.length +} + +// ============================================ +// Message Content Extraction +// ============================================ + +/** + * 从 API 消息中提取用户消息内容(文本+附件) + */ +export function extractUserMessageContent(message: UserContentSource): RevertedMessage { + const { parts } = message + + const textParts = parts.filter((part): part is ApiTextPart => isTextUserContentPart(part) && !part.synthetic) + const text = textParts.map(p => p.text).join('\n') + + const attachments: Attachment[] = [] + + const getSourcePath = (source: ApiFilePart['source']): string | undefined => { + if (!source || !('path' in source)) return undefined + return source.path + } + + for (const part of parts) { + if (isFileUserContentPart(part)) { + const isFolder = part.mime === 'application/x-directory' + const sourcePath = getSourcePath(part.source) + attachments.push({ + id: part.id || crypto.randomUUID(), + type: isFolder ? 'folder' : 'file', + displayName: part.filename || sourcePath || 'file', + url: part.url, + mime: part.mime, + relativePath: sourcePath, + textRange: part.source?.text + ? { + value: part.source.text.value, + start: part.source.text.start ?? 0, + end: part.source.text.end ?? 0, + } + : undefined, + }) + } else if (isAgentUserContentPart(part)) { + attachments.push({ + id: part.id || crypto.randomUUID(), + type: 'agent', + displayName: part.name, + agentName: part.name, + textRange: part.source + ? { + value: part.source.value, + start: part.source.start ?? 0, + end: part.source.end ?? 0, + } + : undefined, + }) + } + } + + return { text, attachments } +} + +// ============================================ +// Send Message +// ============================================ + +/** + * 同步发送消息(等待完成) + */ +export async function sendMessage(params: SendMessageParams): Promise { + return await piClient.post('/api/messages/send', { + sessionId: params.sessionId, + text: params.text, + model: params.model, + directory: params.directory, + }) +} + +/** + * 异步发送消息 — 立即返回, AI 响应通过 SSE/WS 推送 + */ +export async function sendMessageAsync(params: SendMessageParams): Promise { + await piClient.post('/api/messages/send', { + sessionId: params.sessionId, + text: params.text, + model: params.model, + directory: params.directory, + }) +} diff --git a/src/api/network.test.ts b/src/api/network.test.ts new file mode 100644 index 0000000..de6cd67 --- /dev/null +++ b/src/api/network.test.ts @@ -0,0 +1,47 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { getNetworkAccess, updateNetworkAccess } from './network' +import { piClient } from './piClient' + +vi.mock('./piClient', () => ({ + piClient: { + get: vi.fn(), + post: vi.fn(), + }, +})) + +describe('network api', () => { + beforeEach(() => { + vi.mocked(piClient.get).mockReset() + vi.mocked(piClient.post).mockReset() + }) + + it('loads LAN access info', async () => { + vi.mocked(piClient.get).mockResolvedValue({ + lanAccessEnabled: false, + port: 58785, + localUrl: 'http://127.0.0.1:58785', + lanUrls: ['http://192.168.1.25:58785'], + primaryLanUrl: 'http://192.168.1.25:58785', + }) + + const info = await getNetworkAccess() + + expect(piClient.get).toHaveBeenCalledWith('/api/network/access') + expect(info.primaryLanUrl).toBe('http://192.168.1.25:58785') + }) + + it('updates LAN access info', async () => { + vi.mocked(piClient.post).mockResolvedValue({ + lanAccessEnabled: true, + port: 58785, + localUrl: 'http://127.0.0.1:58785', + lanUrls: ['http://192.168.1.25:58785'], + primaryLanUrl: 'http://192.168.1.25:58785', + }) + + const info = await updateNetworkAccess(true) + + expect(piClient.post).toHaveBeenCalledWith('/api/network/access', { lanAccessEnabled: true }) + expect(info.lanAccessEnabled).toBe(true) + }) +}) diff --git a/src/api/network.ts b/src/api/network.ts new file mode 100644 index 0000000..652e5dc --- /dev/null +++ b/src/api/network.ts @@ -0,0 +1,10 @@ +import { piClient } from './piClient' +import type { NetworkAccessInfo } from '../types/api/network' + +export async function getNetworkAccess(): Promise { + return await piClient.get('/api/network/access') +} + +export async function updateNetworkAccess(lanAccessEnabled: boolean): Promise { + return await piClient.post('/api/network/access', { lanAccessEnabled }) +} diff --git a/src/api/permission.ts b/src/api/permission.ts new file mode 100644 index 0000000..b501f95 --- /dev/null +++ b/src/api/permission.ts @@ -0,0 +1,111 @@ +// ============================================ +// Permission & Question API Functions - Decoupled +// ============================================ + +import { piClient } from './piClient' +import { formatPathForApi } from '../utils/directoryUtils' +import type { ApiPermissionRequest, PermissionReply, ApiQuestionRequest, QuestionAnswer } from './types' + +// ============================================ +// Permission API +// ============================================ + +/** + * 获取待处理的权限请求列表 + */ +export async function getPendingPermissions(sessionId?: string, directory?: string): Promise { + try { + const q = `?directory=${encodeURIComponent(directory || '')}` + const data = await piClient.get<{ permissions: ApiPermissionRequest[] }>(`/api/permissions/list${q}`) + const permissions = data.permissions || [] + return sessionId ? permissions.filter(p => p.sessionID === sessionId) : permissions + } catch { + return [] + } +} + +/** + * 回复权限请求 + */ +export async function replyPermission( + requestId: string, + reply: PermissionReply, + message?: string, + directory?: string, + sessionId?: string, +): Promise { + try { + if (sessionId) { + await piClient.post('/api/permissions/respond', { + sessionID: sessionId, + permissionID: requestId, + directory: formatPathForApi(directory), + response: reply, + }) + return true + } + + await piClient.post('/api/permissions/reply', { + requestID: requestId, + directory: formatPathForApi(directory), + reply, + message, + }) + return true + } catch { + return true + } +} + +// ============================================ +// Question API +// ============================================ + +/** + * 获取待处理的问题请求列表 + */ +export async function getPendingQuestions(sessionId?: string, directory?: string): Promise { + try { + const q = `?directory=${encodeURIComponent(directory || '')}` + const data = await piClient.get<{ questions: ApiQuestionRequest[] }>(`/api/questions/list${q}`) + const questions = data.questions || [] + return sessionId ? questions.filter(q => q.sessionID === sessionId) : questions + } catch { + return [] + } +} + +/** + * 回复问题请求 + */ +export async function replyQuestion( + requestId: string, + answers: QuestionAnswer[], + directory?: string, +): Promise { + try { + await piClient.post('/api/questions/reply', { + requestID: requestId, + directory: formatPathForApi(directory), + answers, + }) + return true + } catch { + return true + } +} + +/** + * 拒绝问题请求 + */ +export async function rejectQuestion(requestId: string, directory?: string): Promise { + try { + await piClient.post('/api/questions/reject', { + requestID: requestId, + directory: formatPathForApi(directory), + }) + return true + } catch { + return true + } +} diff --git a/src/api/piClient.test.ts b/src/api/piClient.test.ts new file mode 100644 index 0000000..b3dccb5 --- /dev/null +++ b/src/api/piClient.test.ts @@ -0,0 +1,51 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest' +import { piClient } from './piClient' +import { serverStore } from '../store/serverStore' + +describe('piClient Authenticated Fetch Client', () => { + beforeEach(() => { + vi.restoreAllMocks() + vi.resetModules() + localStorage.clear() + sessionStorage.clear() + }) + + it('builds headers with Bearer token if running in Pi Mode', async () => { + vi.spyOn(serverStore, 'isPiMode').mockReturnValue(true) + vi.spyOn(serverStore, 'getActiveToken').mockReturnValue('my-test-bearer-token') + vi.spyOn(serverStore, 'getActiveBaseUrl').mockReturnValue('http://127.0.0.1:4000') + + const fetchSpy = vi + .spyOn(globalThis, 'fetch') + .mockImplementation(() => Promise.resolve(new Response(JSON.stringify({ ok: true })))) + + const result = await piClient.get<{ ok: boolean }>('/api/test') + expect(result.ok).toBe(true) + + expect(fetchSpy).toHaveBeenCalledWith( + 'http://127.0.0.1:4000/api/test', + expect.objectContaining({ + headers: expect.objectContaining({ + Authorization: 'Bearer my-test-bearer-token', + 'Content-Type': 'application/json', + }), + }), + ) + }) + + it('throws backend JSON error messages instead of generic HTTP status text', async () => { + vi.spyOn(serverStore, 'getActiveToken').mockReturnValue('my-test-bearer-token') + vi.spyOn(serverStore, 'getActiveBaseUrl').mockReturnValue('http://127.0.0.1:4000') + vi.spyOn(globalThis, 'fetch').mockImplementation(() => + Promise.resolve( + new Response(JSON.stringify({ error: 'fatal: not a git repository' }), { + status: 400, + statusText: 'Bad Request', + headers: { 'Content-Type': 'application/json' }, + }), + ), + ) + + await expect(piClient.get('/api/vcs/status')).rejects.toThrow('fatal: not a git repository') + }) +}) diff --git a/src/api/piClient.ts b/src/api/piClient.ts new file mode 100644 index 0000000..bc20e1c --- /dev/null +++ b/src/api/piClient.ts @@ -0,0 +1,115 @@ +import { serverStore } from '../store/serverStore' +import { isTauri } from '../utils/tauri' + +let _tauriFetch: typeof globalThis.fetch | null = null + +async function getTauriFetch(): Promise { + if (_tauriFetch) return _tauriFetch + const mod = await import('@tauri-apps/plugin-http') + _tauriFetch = mod.fetch as unknown as typeof globalThis.fetch + return _tauriFetch +} + +async function getFetch(): Promise { + if (isTauri()) { + try { + return await getTauriFetch() + } catch { + return globalThis.fetch + } + } + return globalThis.fetch +} + +function buildHeaders(): Record { + const headers: Record = { + 'Content-Type': 'application/json', + } + + const token = serverStore.getActiveToken() + if (token) { + headers['Authorization'] = `Bearer ${token}` + } else { + const auth = serverStore.getActiveAuth() + if (auth?.password) { + headers['Authorization'] = 'Basic ' + btoa(`${auth.username}:${auth.password}`) + } + } + + return headers +} + +async function getResponseErrorMessage(response: Response): Promise { + const fallback = `HTTP Error ${response.status}: ${response.statusText}` + + try { + const text = await response.text() + if (!text) return fallback + + try { + const data = JSON.parse(text) as { error?: unknown; message?: unknown } + if (typeof data.error === 'string' && data.error.trim()) return data.error + if (typeof data.message === 'string' && data.message.trim()) return data.message + } catch { + // Plain-text backend errors are still more useful than the generic status text. + } + + return text.trim() || fallback + } catch { + return fallback + } +} + +async function throwIfNotOk(response: Response): Promise { + if (response.ok) return + throw new Error(await getResponseErrorMessage(response)) +} + +export const piClient = { + async get(path: string): Promise { + const baseUrl = serverStore.getActiveBaseUrl() + const headers = buildHeaders() + const f = await getFetch() + + const response = await f(`${baseUrl}${path}`, { + method: 'GET', + headers, + }) + + await throwIfNotOk(response) + + return (await response.json()) as T + }, + + async post(path: string, body?: unknown): Promise { + const baseUrl = serverStore.getActiveBaseUrl() + const headers = buildHeaders() + const f = await getFetch() + + const response = await f(`${baseUrl}${path}`, { + method: 'POST', + headers, + body: body ? JSON.stringify(body) : undefined, + }) + + await throwIfNotOk(response) + + return (await response.json()) as T + }, + + async delete(path: string, body?: unknown): Promise { + const baseUrl = serverStore.getActiveBaseUrl() + const headers = buildHeaders() + const f = await getFetch() + + const response = await f(`${baseUrl}${path}`, { + method: 'DELETE', + headers, + body: body ? JSON.stringify(body) : undefined, + }) + + await throwIfNotOk(response) + + return (await response.json()) as T + }, +} diff --git a/src/api/piContract.ts b/src/api/piContract.ts new file mode 100644 index 0000000..838f8de --- /dev/null +++ b/src/api/piContract.ts @@ -0,0 +1,51 @@ +import type { Session, Model } from '../types/api/compat' + +export interface SessionListResponse { + sessions: Session[] +} + +export interface SessionCreateRequest { + title?: string + directory?: string +} + +export interface SessionUpdateRequest { + title?: string +} + +export interface SessionForkRequest { + messageID?: string + directory?: string +} + +export interface SendMessageRequest { + sessionId: string + text: string + model?: { providerID: string; modelID: string } + directory?: string +} + +export interface SendMessageResponse { + messageID: string + sessionID: string +} + +export interface ModelsResponse { + models: Model[] +} + +export interface PartDeltaPayload { + sessionID: string + messageID: string + partID: string + field: 'text' | 'reasoning' | 'tool' + delta: string +} + +export interface PiGlobalEvent { + directory?: string + payload: { + type: string + properties: unknown + } +} diff --git a/src/api/pty.ts b/src/api/pty.ts new file mode 100644 index 0000000..9e7d423 --- /dev/null +++ b/src/api/pty.ts @@ -0,0 +1,53 @@ +// ============================================ +// PTY API Stub - 终端管理 +// Gracefully stubbed out for Pi Agent MVP +// ============================================ + +import type { Pty, PtyCreateParams, PtyUpdateParams } from '../types/api/pty' + +interface PtyConnectUrlOptions { + includeAuthInUrl?: boolean + cursor?: number +} + +/** + * 获取所有 PTY 会话列表 + */ +export async function listPtySessions(_directory?: string): Promise { + return [] +} + +/** + * 创建新的 PTY 会话 + */ +export async function createPtySession(_params: PtyCreateParams, _directory?: string): Promise { + throw new Error('PTY terminals are not supported in the Pi Agent MVP.') +} + +/** + * 获取单个 PTY 会话信息 + */ +export async function getPtySession(_ptyId: string, _directory?: string): Promise { + throw new Error('PTY terminals are not supported in the Pi Agent MVP.') +} + +/** + * 更新 PTY 会话 + */ +export async function updatePtySession(_ptyId: string, _params: PtyUpdateParams, _directory?: string): Promise { + throw new Error('PTY terminals are not supported in the Pi Agent MVP.') +} + +/** + * 删除 PTY 会话 + */ +export async function removePtySession(_ptyId: string, _directory?: string): Promise { + return true +} + +/** + * 获取 PTY 连接 WebSocket URL + */ +export function getPtyConnectUrl(_ptyId: string, _directory?: string, _options?: PtyConnectUrlOptions): string { + return '' +} diff --git a/src/api/ptyBridge.ts b/src/api/ptyBridge.ts new file mode 100644 index 0000000..5b3ea18 --- /dev/null +++ b/src/api/ptyBridge.ts @@ -0,0 +1,25 @@ +interface ConnectTauriPtyParams { + ptyId: string + directory?: string + cursor?: number + onConnected: () => void + onMessage: (chunk: string) => void + onDisconnected: (info: { code?: number; reason?: string }) => void + onError: (message: string) => void +} + +export interface TauriPtyConnection { + send: (data: string) => void + close: () => void +} + +export async function connectTauriPty({ + onError, +}: ConnectTauriPtyParams): Promise { + const msg = 'PTY terminals are not supported in the Pi Agent MVP.' + setTimeout(() => onError(msg), 0) + return { + send(_data: string) {}, + close() {}, + } +} diff --git a/src/api/session.test.ts b/src/api/session.test.ts new file mode 100644 index 0000000..43304e7 --- /dev/null +++ b/src/api/session.test.ts @@ -0,0 +1,44 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { getSessionContextUsage } from './session' +import { piClient } from './piClient' + +vi.mock('./piClient', () => ({ + piClient: { + get: vi.fn(), + }, +})) + +describe('getSessionContextUsage', () => { + beforeEach(() => { + vi.mocked(piClient.get).mockReset() + }) + + it('fetches runtime context usage for the requested session', async () => { + vi.mocked(piClient.get).mockResolvedValue({ + available: true, + sessionId: 'session-1', + activeSessionId: 'session-1', + tokens: 42000, + contextWindow: 1000000, + percent: 4.2, + providerID: 'opencode-go', + modelID: 'deepseek-v4-flash', + modelName: 'DeepSeek V4 Flash', + outputLimit: 384000, + }) + + const usage = await getSessionContextUsage('session-1') + + expect(piClient.get).toHaveBeenCalledWith('/api/sessions/session-1/context') + expect(usage).toMatchObject({ + available: true, + tokens: 42000, + contextWindow: 1000000, + percent: 4.2, + providerID: 'opencode-go', + modelID: 'deepseek-v4-flash', + modelName: 'DeepSeek V4 Flash', + outputLimit: 384000, + }) + }) +}) diff --git a/src/api/session.ts b/src/api/session.ts new file mode 100644 index 0000000..45f7888 --- /dev/null +++ b/src/api/session.ts @@ -0,0 +1,215 @@ +// ============================================ +// Session API Functions +// ============================================ + +import { piClient } from './piClient' +import { formatPathForApi } from '../utils/directoryUtils' +import type { ApiSession, SessionListParams, FileDiff } from './types' +import type { SessionStatusMap } from '../types/api/session' + +export interface ApiSessionContextUsage { + available: boolean + sessionId?: string + activeSessionId?: string + tokens?: number | null + contextWindow?: number | null + percent?: number | null + providerID?: string + modelID?: string + modelName?: string + outputLimit?: number | null + reason?: 'runtime_unavailable' | 'session_not_active' | 'context_usage_unavailable' | string +} +import type { TodoItem } from '../types/api/event' + +function fallbackSessionTitle(sessionId?: string): string { + return sessionId ? `Session ${sessionId.slice(0, 8)}` : 'Untitled Session' +} + +// ============================================ +// Session Status & Diff +// ============================================ + +export async function getSessionStatus(_directory?: string): Promise { + return {} +} + +export async function getSessionDiff( + _sessionId: string, + _directory?: string, + _messageId?: string, +): Promise { + return [] +} + +export async function getLastTurnDiff(_sessionId: string, _directory?: string): Promise { + return [] +} + +export async function getSessionContextUsage(sessionId: string): Promise { + return await piClient.get(`/api/sessions/${encodeURIComponent(sessionId)}/context`) +} + +// ============================================ +// Session CRUD +// ============================================ + +export async function getSessions(params: SessionListParams = {}): Promise { + try { + const data = await piClient.get<{ sessions: ApiSession[] }>('/api/sessions') + return data.sessions || [] + } catch { + return [ + { + id: 'active-session', + title: fallbackSessionTitle('active-session'), + directory: formatPathForApi(params.directory) ?? '', + time: { created: Date.now(), updated: Date.now() }, + status: { type: 'idle' }, + summary: { deletions: 0, files: 0, additions: 0 }, + }, + ] + } +} + +export async function getSession(sessionId: string, directory?: string): Promise { + return { + id: sessionId, + title: fallbackSessionTitle(sessionId), + directory: formatPathForApi(directory) ?? '', + time: { created: Date.now(), updated: Date.now() }, + status: { type: 'idle' }, + summary: { deletions: 0, files: 0, additions: 0 }, + } +} + +export async function createSession( + params: { + directory?: string + title?: string + parentID?: string + } = {}, +): Promise { + try { + return await piClient.post('/api/sessions', params) + } catch { + return { + id: 'active-session', + title: params.title || fallbackSessionTitle('active-session'), + directory: formatPathForApi(params.directory) ?? '', + time: { created: Date.now(), updated: Date.now() }, + status: { type: 'idle' }, + summary: { deletions: 0, files: 0, additions: 0 }, + } + } +} + +export async function updateSession( + sessionId: string, + params: { title?: string; time?: { archived?: number } }, + directory?: string, +): Promise { + return { + id: sessionId, + title: params.title || fallbackSessionTitle(sessionId), + directory: formatPathForApi(directory) ?? '', + time: { created: Date.now(), updated: Date.now() }, + status: { type: 'idle' }, + summary: { deletions: 0, files: 0, additions: 0 }, + } +} + +export async function deleteSession(_sessionId: string, _directory?: string): Promise { + return true +} + +// ============================================ +// Session Actions +// ============================================ + +export async function abortSession(sessionId: string, directory?: string): Promise { + try { + await piClient.post('/api/sessions/abort', { sessionId, directory }) + return true + } catch { + return true + } +} + +export async function revertMessage( + sessionId: string, + _messageId: string, + _partId?: string, + directory?: string, +): Promise { + return { + id: sessionId, + title: fallbackSessionTitle(sessionId), + directory: formatPathForApi(directory) ?? '', + time: { created: Date.now(), updated: Date.now() }, + status: { type: 'idle' }, + summary: { deletions: 0, files: 0, additions: 0 }, + } +} + +export async function unrevertSession(sessionId: string, directory?: string): Promise { + return { + id: sessionId, + title: fallbackSessionTitle(sessionId), + directory: formatPathForApi(directory) ?? '', + time: { created: Date.now(), updated: Date.now() }, + status: { type: 'idle' }, + summary: { deletions: 0, files: 0, additions: 0 }, + } +} + +export async function shareSession(sessionId: string, directory?: string): Promise { + return { + id: sessionId, + title: fallbackSessionTitle(sessionId), + directory: formatPathForApi(directory) ?? '', + time: { created: Date.now(), updated: Date.now() }, + status: { type: 'idle' }, + summary: { deletions: 0, files: 0, additions: 0 }, + } +} + +export async function unshareSession(sessionId: string, directory?: string): Promise { + return { + id: sessionId, + title: fallbackSessionTitle(sessionId), + directory: formatPathForApi(directory) ?? '', + time: { created: Date.now(), updated: Date.now() }, + status: { type: 'idle' }, + summary: { deletions: 0, files: 0, additions: 0 }, + } +} + +export async function forkSession(sessionId: string, _messageId?: string, directory?: string): Promise { + return { + id: sessionId, + title: fallbackSessionTitle(sessionId), + directory: formatPathForApi(directory) ?? '', + time: { created: Date.now(), updated: Date.now() }, + status: { type: 'idle' }, + summary: { deletions: 0, files: 0, additions: 0 }, + } +} + +export async function summarizeSession( + _sessionId: string, + _params: { providerID: string; modelID: string; auto?: boolean }, + _directory?: string, +): Promise { + return true +} + +export async function getSessionChildren(_sessionId: string, _directory?: string): Promise { + return [] +} + +export type ApiTodo = TodoItem + +export async function getSessionTodos(_sessionId: string, _directory?: string): Promise { + return [] +} diff --git a/src/api/skill.test.ts b/src/api/skill.test.ts new file mode 100644 index 0000000..344bd0b --- /dev/null +++ b/src/api/skill.test.ts @@ -0,0 +1,35 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { getSkills } from './skill' +import { piClient } from './piClient' + +vi.mock('./piClient', () => ({ + piClient: { + get: vi.fn(), + }, +})) + +describe('getSkills', () => { + beforeEach(() => { + vi.mocked(piClient.get).mockReset() + }) + + it('preserves real skill source metadata from the backend', async () => { + vi.mocked(piClient.get).mockResolvedValue({ + skills: [ + { + name: 'global-skill', + description: 'Global skill', + location: '/home/user/.agents/skills/global-skill/SKILL.md', + source: 'global', + content: 'global content', + }, + ], + groups: { global: 1, project: 0, package: 0, other: 0 }, + }) + + const skills = await getSkills('/workspace/demo') + + expect(piClient.get).toHaveBeenCalledWith('/api/skills') + expect(skills[0]).toMatchObject({ name: 'global-skill', source: 'global' }) + }) +}) diff --git a/src/api/skill.ts b/src/api/skill.ts new file mode 100644 index 0000000..8d3e229 --- /dev/null +++ b/src/api/skill.ts @@ -0,0 +1,18 @@ +// ============================================ +// Skill API - Decoupled +// ============================================ + +import { piClient } from './piClient' +import type { SkillList } from '../types/api/skill' + +/** + * 获取所有可用 Skills + */ +export async function getSkills(_directory?: string): Promise { + try { + const data = await piClient.get<{ skills: SkillList }>('/api/skills') + return data.skills || [] + } catch { + return [] + } +} diff --git a/src/api/sse.test.ts b/src/api/sse.test.ts new file mode 100644 index 0000000..67c30ec --- /dev/null +++ b/src/api/sse.test.ts @@ -0,0 +1,19 @@ +import { describe, expect, it } from 'vitest' +import { createSseTextParser } from './sse' + +describe('createSseTextParser', () => { + it('keeps multiline event data across chunk boundaries', () => { + const parser = createSseTextParser() + + expect(parser.push('data: {"text":"中')).toEqual([]) + expect(parser.push('文"}\n')).toEqual([]) + expect(parser.push('data: 第二行\n\n')).toEqual(['{"text":"中文"}\n第二行']) + }) + + it('normalizes CRLF-delimited SSE blocks', () => { + const parser = createSseTextParser() + + expect(parser.push('data: 你好\r\n')).toEqual([]) + expect(parser.push('data: 世界\r\n\r\n')).toEqual(['你好\n世界']) + }) +}) diff --git a/src/api/sse.ts b/src/api/sse.ts new file mode 100644 index 0000000..9a7ff0f --- /dev/null +++ b/src/api/sse.ts @@ -0,0 +1,36 @@ +export interface SseTextParser { + push(chunk: string): string[] +} + +export function createSseTextParser(): SseTextParser { + let buffer = '' + + return { + push(chunk: string) { + if (!chunk) return [] + + buffer += chunk + buffer = buffer.replace(/\r\n/g, '\n').replace(/\r/g, '\n') + + const blocks = buffer.split('\n\n') + buffer = blocks.pop() ?? '' + + const events: string[] = [] + + for (const block of blocks) { + const dataLines: string[] = [] + + for (const line of block.split('\n')) { + if (!line.startsWith('data:')) continue + dataLines.push(line[5] === ' ' ? line.slice(6) : line.slice(5)) + } + + if (dataLines.length > 0) { + events.push(dataLines.join('\n')) + } + } + + return events + }, + } +} diff --git a/src/api/stt.test.ts b/src/api/stt.test.ts new file mode 100644 index 0000000..9e7fc80 --- /dev/null +++ b/src/api/stt.test.ts @@ -0,0 +1,93 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { getSttSettings, transcribeAudio, updateSttSettings } from './stt' +import { piClient } from './piClient' +import { serverStore } from '../store/serverStore' + +vi.mock('./piClient', () => ({ + piClient: { + get: vi.fn(), + post: vi.fn(), + }, +})) + +vi.mock('../store/serverStore', () => ({ + serverStore: { + getActiveBaseUrl: vi.fn(() => 'http://127.0.0.1:58785'), + getActiveToken: vi.fn(() => 'token-123'), + }, +})) + +describe('stt api', () => { + beforeEach(() => { + vi.mocked(piClient.get).mockReset() + vi.mocked(piClient.post).mockReset() + vi.mocked(serverStore.getActiveBaseUrl).mockReturnValue('http://127.0.0.1:58785') + vi.mocked(serverStore.getActiveToken).mockReturnValue('token-123') + }) + + it('loads and updates redacted STT settings', async () => { + vi.mocked(piClient.get).mockResolvedValue({ + enabled: true, + providerKind: 'openai-compatible', + mode: 'file', + baseUrl: 'https://api.openai.com/v1', + apiKeyConfigured: true, + apiKeyRequired: true, + transcriptionEndpoint: '/audio/transcriptions', + transcriptionModel: 'gpt-4o-mini-transcribe', + insertMode: 'append', + }) + vi.mocked(piClient.post).mockResolvedValue({ + enabled: true, + providerKind: 'openai-compatible', + mode: 'file', + baseUrl: 'https://api.openai.com/v1', + apiKeyConfigured: true, + apiKeyRequired: true, + transcriptionEndpoint: '/audio/transcriptions', + transcriptionModel: 'gpt-4o-mini-transcribe', + language: 'pt', + insertMode: 'append', + }) + + expect((await getSttSettings()).apiKeyConfigured).toBe(true) + const updated = await updateSttSettings({ language: 'pt' }) + + expect(piClient.get).toHaveBeenCalledWith('/api/settings/stt') + expect(piClient.post).toHaveBeenCalledWith('/api/settings/stt', { language: 'pt' }) + expect(updated.language).toBe('pt') + }) + + it('uploads audio as multipart form data with bearer auth', async () => { + const originalFetch = globalThis.fetch + const fetchMock = vi.fn( + async () => + new Response( + JSON.stringify({ + text: 'hello voice', + durationMs: 123, + provider: 'openai-compatible', + model: 'gpt-4o-mini-transcribe', + }), + { status: 200, headers: { 'Content-Type': 'application/json' } }, + ), + ) + globalThis.fetch = fetchMock as typeof fetch + try { + const file = new File(['audio'], 'voice.webm', { type: 'audio/webm' }) + const result = await transcribeAudio(file) + + expect(fetchMock).toHaveBeenCalledWith( + 'http://127.0.0.1:58785/api/stt/transcriptions', + expect.objectContaining({ + method: 'POST', + headers: { Authorization: 'Bearer token-123' }, + body: expect.any(FormData), + }), + ) + expect(result.text).toBe('hello voice') + } finally { + globalThis.fetch = originalFetch + } + }) +}) diff --git a/src/api/stt.ts b/src/api/stt.ts new file mode 100644 index 0000000..32a1b54 --- /dev/null +++ b/src/api/stt.ts @@ -0,0 +1,44 @@ +import { piClient } from './piClient' +import { serverStore } from '../store/serverStore' +import type { SttSettings, SttTranscriptionResponse, UpdateSttSettingsRequest } from '../types/api/stt' + +export async function getSttSettings(): Promise { + return await piClient.get('/api/settings/stt') +} + +export async function updateSttSettings(settings: UpdateSttSettingsRequest): Promise { + return await piClient.post('/api/settings/stt', settings) +} + +function buildUploadHeaders(): Record { + const headers: Record = {} + const token = serverStore.getActiveToken() + if (token) { + headers.Authorization = `Bearer ${token}` + return headers + } + + const auth = serverStore.getActiveAuth?.() + if (auth?.password) { + headers.Authorization = 'Basic ' + btoa(`${auth.username}:${auth.password}`) + } + return headers +} + +export async function transcribeAudio(file: Blob, filename = 'voice.webm'): Promise { + const baseUrl = serverStore.getActiveBaseUrl() + const form = new FormData() + form.set('file', file, filename) + + const response = await fetch(`${baseUrl}/api/stt/transcriptions`, { + method: 'POST', + headers: buildUploadHeaders(), + body: form, + }) + + if (!response.ok) { + throw new Error(`HTTP Error ${response.status}: ${response.statusText}`) + } + + return (await response.json()) as SttTranscriptionResponse +} diff --git a/src/api/todo.ts b/src/api/todo.ts new file mode 100644 index 0000000..0402b75 --- /dev/null +++ b/src/api/todo.ts @@ -0,0 +1,39 @@ +import type { TodoItem } from '../types/api/event' + +export interface SDKTodo { + content: string + status: string + priority: string +} + +function buildTodoId(todo: SDKTodo, index: number): string { + const content = String(todo.content ?? '').slice(0, 32) + const status = String(todo.status ?? '') + const priority = String(todo.priority ?? '') + return `todo-${index}-${content}-${status}-${priority}` +} + +function isTodoStatus(status: string): status is TodoItem['status'] { + return status === 'pending' || status === 'in_progress' || status === 'completed' || status === 'cancelled' +} + +function isTodoPriority(priority: string): priority is TodoItem['priority'] { + return priority === 'high' || priority === 'medium' || priority === 'low' +} + +function normalizeTodoStatus(status: string): TodoItem['status'] { + return isTodoStatus(status) ? status : 'pending' +} + +function normalizeTodoPriority(priority: string): TodoItem['priority'] { + return isTodoPriority(priority) ? priority : 'medium' +} + +export function normalizeTodoItems(todos: SDKTodo[] | null | undefined): TodoItem[] { + return (todos ?? []).map((todo, index) => ({ + id: buildTodoId(todo, index), + content: todo.content, + status: normalizeTodoStatus(todo.status), + priority: normalizeTodoPriority(todo.priority), + })) +} diff --git a/src/api/tool.ts b/src/api/tool.ts new file mode 100644 index 0000000..f1f3c58 --- /dev/null +++ b/src/api/tool.ts @@ -0,0 +1,32 @@ +// ============================================ +// Tool API - Decoupled +// ============================================ + +import { piClient } from './piClient' +import type { ToolIDs, ToolList } from '../types/api/tool' + +/** + * 获取工具 ID 列表 + */ +export async function getToolIds(directory?: string): Promise { + try { + const q = `?directory=${encodeURIComponent(directory || '')}` + const data = await piClient.get<{ ids: ToolIDs }>(`/api/tools/ids${q}`) + return data.ids || [] + } catch { + return [] + } +} + +/** + * 获取工具列表(带详细信息) + */ +export async function getTools(provider: string, model: string, directory?: string): Promise { + try { + const q = `?provider=${encodeURIComponent(provider)}&model=${encodeURIComponent(model)}&directory=${encodeURIComponent(directory || '')}` + const data = await piClient.get<{ tools: ToolList }>(`/api/tools/list${q}`) + return data.tools || [] + } catch { + return [] + } +} diff --git a/src/api/tts.ts b/src/api/tts.ts new file mode 100644 index 0000000..8d79fc9 --- /dev/null +++ b/src/api/tts.ts @@ -0,0 +1,38 @@ +import { piClient } from './piClient' +import { serverStore, makeBasicAuthHeader } from '../store/serverStore' +import type { TtsSettings, UpdateTtsSettingsRequest } from '../types/api/tts' + +export async function getTtsSettings(): Promise { + return await piClient.get('/api/settings/tts') +} + +export async function updateTtsSettings(settings: UpdateTtsSettingsRequest): Promise { + return await piClient.post('/api/settings/tts', settings) +} + +function buildSpeechHeaders(): Record { + const headers: Record = { 'Content-Type': 'application/json' } + const token = serverStore.getActiveToken() + if (token) { + headers.Authorization = `Bearer ${token}` + return headers + } + + const auth = serverStore.getActiveAuth?.() + if (auth?.password) headers.Authorization = makeBasicAuthHeader(auth) + return headers +} + +export async function synthesizeSpeech(input: string): Promise { + const response = await fetch(`${serverStore.getActiveBaseUrl()}/api/tts/speech`, { + method: 'POST', + headers: buildSpeechHeaders(), + body: JSON.stringify({ input }), + }) + + if (!response.ok) { + throw new Error(`HTTP Error ${response.status}: ${response.statusText}`) + } + + return await response.blob() +} diff --git a/src/api/types.ts b/src/api/types.ts new file mode 100644 index 0000000..efa6d6a --- /dev/null +++ b/src/api/types.ts @@ -0,0 +1,67 @@ +// API Types - 向后兼容层 + +export type * from '../types/api' + +export type { ModelInfo, FileCapabilities, Attachment, AttachmentType } from '../types/ui' + +export type { Model as ApiModel, Provider as ApiProvider, ProvidersResponse } from '../types/api/model' +export type { Project as ApiProject, PathResponse as ApiPath } from '../types/api/project' +export type { + Session as ApiSession, + SessionListParams, + SessionRevert as SessionRevertState, +} from '../types/api/session' +export type { + Message as ApiMessage, + UserMessage as ApiUserMessage, + AssistantMessage as ApiAssistantMessage, + MessageWithParts as ApiMessageWithParts, + Part as ApiPart, + TextPart as ApiTextPart, + ReasoningPart as ApiReasoningPart, + ToolPart as ApiToolPart, + FilePart as ApiFilePart, + AgentPart as ApiAgentPart, + StepStartPart as ApiStepStartPart, + StepFinishPart as ApiStepFinishPart, + SnapshotPart as ApiSnapshotPart, + PatchPart as ApiPatchPart, + RetryPart as ApiRetryPart, + CompactionPart as ApiCompactionPart, + SubtaskPart as ApiSubtaskPart, +} from '../types/api/message' +export type { + PermissionRequest as ApiPermissionRequest, + PermissionReply, + QuestionOption as ApiQuestionOption, + QuestionInfo as ApiQuestionInfo, + QuestionRequest as ApiQuestionRequest, + QuestionAnswer, +} from '../types/api/permission' +export type { Agent as ApiAgent, AgentPermission as ApiAgentPermission } from '../types/api/agent' +export type { Symbol as SymbolInfo } from '../types/api/file' + +import type { Attachment } from '../types/ui' + +export interface RevertedMessage { + text: string + attachments: Attachment[] +} + +export interface SendMessageParams { + sessionId: string + text: string + attachments: Attachment[] + model: { + providerID: string + modelID: string + } + agent?: string + variant?: string + directory?: string +} + +export interface SendMessageResponse { + info: import('../types/api/message').AssistantMessage + parts: import('../types/api/message').Part[] +} diff --git a/src/api/vcs.test.ts b/src/api/vcs.test.ts new file mode 100644 index 0000000..861ea24 --- /dev/null +++ b/src/api/vcs.test.ts @@ -0,0 +1,61 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { + checkoutGitBranch, + commitGitChanges, + createGitBranch, + getVcsBranches, + getVcsStatus, + pullGitBranch, + pushGitBranch, + stageGitPaths, + unstageGitPaths, +} from './vcs' +import { piClient } from './piClient' + +vi.mock('./piClient', () => ({ + piClient: { + get: vi.fn(), + post: vi.fn(), + }, +})) + +describe('vcs api', () => { + beforeEach(() => { + vi.mocked(piClient.get).mockReset() + vi.mocked(piClient.post).mockReset() + }) + + it('loads Git status and branches for a directory', async () => { + vi.mocked(piClient.get) + .mockResolvedValueOnce({ branch: 'main', dirty: true, ahead: 1, behind: 0, files: [] }) + .mockResolvedValueOnce({ current: 'main', branches: [] }) + + await getVcsStatus('/repo') + await getVcsBranches('/repo') + + expect(piClient.get).toHaveBeenNthCalledWith(1, '/api/vcs/status?directory=%2Frepo') + expect(piClient.get).toHaveBeenNthCalledWith(2, '/api/vcs/branches?directory=%2Frepo') + }) + + it('posts safe Git action bodies', async () => { + vi.mocked(piClient.post).mockResolvedValue({ ok: true }) + + await checkoutGitBranch({ branch: 'feature/ui' }, '/repo') + await createGitBranch({ name: 'feature/new' }, '/repo') + await stageGitPaths({ paths: ['src/app.tsx'] }, '/repo') + await unstageGitPaths({ paths: ['src/app.tsx'] }, '/repo') + await commitGitChanges({ message: 'feat: add git ui' }, '/repo') + await pullGitBranch('/repo') + await pushGitBranch('/repo') + + expect(piClient.post).toHaveBeenNthCalledWith(1, '/api/vcs/checkout?directory=%2Frepo', { branch: 'feature/ui' }) + expect(piClient.post).toHaveBeenNthCalledWith(2, '/api/vcs/branch?directory=%2Frepo', { name: 'feature/new' }) + expect(piClient.post).toHaveBeenNthCalledWith(3, '/api/vcs/stage?directory=%2Frepo', { paths: ['src/app.tsx'] }) + expect(piClient.post).toHaveBeenNthCalledWith(4, '/api/vcs/unstage?directory=%2Frepo', { paths: ['src/app.tsx'] }) + expect(piClient.post).toHaveBeenNthCalledWith(5, '/api/vcs/commit?directory=%2Frepo', { + message: 'feat: add git ui', + }) + expect(piClient.post).toHaveBeenNthCalledWith(6, '/api/vcs/pull?directory=%2Frepo', undefined) + expect(piClient.post).toHaveBeenNthCalledWith(7, '/api/vcs/push?directory=%2Frepo', undefined) + }) +}) diff --git a/src/api/vcs.ts b/src/api/vcs.ts new file mode 100644 index 0000000..53c08e2 --- /dev/null +++ b/src/api/vcs.ts @@ -0,0 +1,89 @@ +// ============================================ +// VCS API - Decoupled +// ============================================ + +import { piClient } from './piClient' +import type { FileDiff } from './types' +import type { + CheckoutGitBranchRequest, + CommitGitChangesRequest, + CreateGitBranchRequest, + GitActionResponse, + GitBranchesResponse, + GitPathsRequest, + GitStatusResponse, + VcsDiffMode, + VcsInfo, +} from '../types/api/vcs' +import { formatPathForApi } from '../utils/directoryUtils' + +function directoryQuery(directory?: string): string { + return `?directory=${encodeURIComponent(formatPathForApi(directory) || '')}` +} + +/** + * 获取 VCS 信息 + */ +export async function getVcsInfo(directory?: string): Promise { + try { + return await piClient.get(`/api/vcs/info${directoryQuery(directory)}`) + } catch { + // VCS 不可用时返回 null + return null + } +} + +/** + * 获取 Git 或分支维度的 diff + */ +export async function getVcsDiff(mode: VcsDiffMode, directory?: string): Promise { + try { + const q = `?mode=${mode}&directory=${encodeURIComponent(formatPathForApi(directory) || '')}` + const data = await piClient.get<{ diff: FileDiff[] }>(`/api/vcs/diff${q}`) + return data.diff || [] + } catch { + return [] + } +} + +export async function getVcsStatus(directory?: string): Promise { + return await piClient.get(`/api/vcs/status${directoryQuery(directory)}`) +} + +export async function getVcsBranches(directory?: string): Promise { + return await piClient.get(`/api/vcs/branches${directoryQuery(directory)}`) +} + +export async function checkoutGitBranch( + request: CheckoutGitBranchRequest, + directory?: string, +): Promise { + return await piClient.post(`/api/vcs/checkout${directoryQuery(directory)}`, request) +} + +export async function createGitBranch(request: CreateGitBranchRequest, directory?: string): Promise { + return await piClient.post(`/api/vcs/branch${directoryQuery(directory)}`, request) +} + +export async function stageGitPaths(request: GitPathsRequest, directory?: string): Promise { + return await piClient.post(`/api/vcs/stage${directoryQuery(directory)}`, request) +} + +export async function unstageGitPaths(request: GitPathsRequest, directory?: string): Promise { + return await piClient.post(`/api/vcs/unstage${directoryQuery(directory)}`, request) +} + +export async function commitGitChanges( + request: CommitGitChangesRequest, + directory?: string, +): Promise { + return await piClient.post(`/api/vcs/commit${directoryQuery(directory)}`, request) +} + +export async function pullGitBranch(directory?: string): Promise { + return await piClient.post(`/api/vcs/pull${directoryQuery(directory)}`, undefined) +} + +export async function pushGitBranch(directory?: string): Promise { + return await piClient.post(`/api/vcs/push${directoryQuery(directory)}`, undefined) +} diff --git a/src/api/worktree.ts b/src/api/worktree.ts new file mode 100644 index 0000000..564692a --- /dev/null +++ b/src/api/worktree.ts @@ -0,0 +1,34 @@ +// ============================================ +// Worktree API Stub - Git Worktree +// Gracefully stubbed out for Pi Agent MVP +// ============================================ + +import type { Worktree, WorktreeCreateInput, WorktreeRemoveInput, WorktreeResetInput } from '../types/api/worktree' + +/** + * 获取所有 worktree 列表 + */ +export async function listWorktrees(_directory?: string): Promise { + return [] +} + +/** + * 创建新的 worktree + */ +export async function createWorktree(_params: WorktreeCreateInput, _directory?: string): Promise { + throw new Error('Git worktrees are not supported in the Pi Agent MVP.') +} + +/** + * 删除 worktree + */ +export async function removeWorktree(_params: WorktreeRemoveInput, _directory?: string): Promise { + return true +} + +/** + * 重置 worktree + */ +export async function resetWorktree(_params: WorktreeResetInput, _directory?: string): Promise { + return true +} diff --git a/src/assets/icons/agent.svg b/src/assets/icons/agent.svg new file mode 100644 index 0000000..97c29d7 --- /dev/null +++ b/src/assets/icons/agent.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/alert-circle.svg b/src/assets/icons/alert-circle.svg new file mode 100644 index 0000000..fd10284 --- /dev/null +++ b/src/assets/icons/alert-circle.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icons/arrow-up.svg b/src/assets/icons/arrow-up.svg new file mode 100644 index 0000000..68658f3 --- /dev/null +++ b/src/assets/icons/arrow-up.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/at.svg b/src/assets/icons/at.svg new file mode 100644 index 0000000..fc6e90c --- /dev/null +++ b/src/assets/icons/at.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/bolt.svg b/src/assets/icons/bolt.svg new file mode 100644 index 0000000..c95f13b --- /dev/null +++ b/src/assets/icons/bolt.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icons/check.svg b/src/assets/icons/check.svg new file mode 100644 index 0000000..4745dbe --- /dev/null +++ b/src/assets/icons/check.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icons/checklist.svg b/src/assets/icons/checklist.svg new file mode 100644 index 0000000..c35ddb4 --- /dev/null +++ b/src/assets/icons/checklist.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/icons/chevron-down.svg b/src/assets/icons/chevron-down.svg new file mode 100644 index 0000000..91b6483 --- /dev/null +++ b/src/assets/icons/chevron-down.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icons/chevron-right.svg b/src/assets/icons/chevron-right.svg new file mode 100644 index 0000000..5a928b0 --- /dev/null +++ b/src/assets/icons/chevron-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icons/circle.svg b/src/assets/icons/circle.svg new file mode 100644 index 0000000..9232d59 --- /dev/null +++ b/src/assets/icons/circle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icons/clipboard-list.svg b/src/assets/icons/clipboard-list.svg new file mode 100644 index 0000000..3a2882e --- /dev/null +++ b/src/assets/icons/clipboard-list.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/assets/icons/clock.svg b/src/assets/icons/clock.svg new file mode 100644 index 0000000..5ec0d6b --- /dev/null +++ b/src/assets/icons/clock.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/close.svg b/src/assets/icons/close.svg new file mode 100644 index 0000000..b5ab99f --- /dev/null +++ b/src/assets/icons/close.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/compact.svg b/src/assets/icons/compact.svg new file mode 100644 index 0000000..669941f --- /dev/null +++ b/src/assets/icons/compact.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/assets/icons/copy.svg b/src/assets/icons/copy.svg new file mode 100644 index 0000000..af8f19b --- /dev/null +++ b/src/assets/icons/copy.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/cpu.svg b/src/assets/icons/cpu.svg new file mode 100644 index 0000000..dc0a62c --- /dev/null +++ b/src/assets/icons/cpu.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/icons/dollar-sign.svg b/src/assets/icons/dollar-sign.svg new file mode 100644 index 0000000..7e835bd --- /dev/null +++ b/src/assets/icons/dollar-sign.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/download.svg b/src/assets/icons/download.svg new file mode 100644 index 0000000..eec11a1 --- /dev/null +++ b/src/assets/icons/download.svg @@ -0,0 +1 @@ + diff --git a/src/assets/icons/expand.svg b/src/assets/icons/expand.svg new file mode 100644 index 0000000..49f740d --- /dev/null +++ b/src/assets/icons/expand.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icons/external-link.svg b/src/assets/icons/external-link.svg new file mode 100644 index 0000000..46e05dc --- /dev/null +++ b/src/assets/icons/external-link.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icons/eye.svg b/src/assets/icons/eye.svg new file mode 100644 index 0000000..b833a96 --- /dev/null +++ b/src/assets/icons/eye.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/file-read.svg b/src/assets/icons/file-read.svg new file mode 100644 index 0000000..566b2e1 --- /dev/null +++ b/src/assets/icons/file-read.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icons/file-write.svg b/src/assets/icons/file-write.svg new file mode 100644 index 0000000..f9ff8dc --- /dev/null +++ b/src/assets/icons/file-write.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/file.svg b/src/assets/icons/file.svg new file mode 100644 index 0000000..2bae4ca --- /dev/null +++ b/src/assets/icons/file.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/folder.svg b/src/assets/icons/folder.svg new file mode 100644 index 0000000..116b6f4 --- /dev/null +++ b/src/assets/icons/folder.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icons/globe.svg b/src/assets/icons/globe.svg new file mode 100644 index 0000000..de1c347 --- /dev/null +++ b/src/assets/icons/globe.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icons/grid.svg b/src/assets/icons/grid.svg new file mode 100644 index 0000000..435e93d --- /dev/null +++ b/src/assets/icons/grid.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icons/hand.svg b/src/assets/icons/hand.svg new file mode 100644 index 0000000..7f8d06f --- /dev/null +++ b/src/assets/icons/hand.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icons/image.svg b/src/assets/icons/image.svg new file mode 100644 index 0000000..ffc254d --- /dev/null +++ b/src/assets/icons/image.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icons/layers.svg b/src/assets/icons/layers.svg new file mode 100644 index 0000000..7bc1945 --- /dev/null +++ b/src/assets/icons/layers.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icons/lightbulb.svg b/src/assets/icons/lightbulb.svg new file mode 100644 index 0000000..df3983d --- /dev/null +++ b/src/assets/icons/lightbulb.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icons/link.svg b/src/assets/icons/link.svg new file mode 100644 index 0000000..95e0e2f --- /dev/null +++ b/src/assets/icons/link.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/maximize.svg b/src/assets/icons/maximize.svg new file mode 100644 index 0000000..3b2b74b --- /dev/null +++ b/src/assets/icons/maximize.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icons/menu-dots.svg b/src/assets/icons/menu-dots.svg new file mode 100644 index 0000000..bddb0c1 --- /dev/null +++ b/src/assets/icons/menu-dots.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icons/message-square.svg b/src/assets/icons/message-square.svg new file mode 100644 index 0000000..c92755b --- /dev/null +++ b/src/assets/icons/message-square.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icons/minimize.svg b/src/assets/icons/minimize.svg new file mode 100644 index 0000000..bc29862 --- /dev/null +++ b/src/assets/icons/minimize.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icons/moon.svg b/src/assets/icons/moon.svg new file mode 100644 index 0000000..0717178 --- /dev/null +++ b/src/assets/icons/moon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icons/new-chat.svg b/src/assets/icons/new-chat.svg new file mode 100644 index 0000000..91d0b9a --- /dev/null +++ b/src/assets/icons/new-chat.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/patch.svg b/src/assets/icons/patch.svg new file mode 100644 index 0000000..44e27d4 --- /dev/null +++ b/src/assets/icons/patch.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icons/path-auto.svg b/src/assets/icons/path-auto.svg new file mode 100644 index 0000000..179cdf2 --- /dev/null +++ b/src/assets/icons/path-auto.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/path-unix.svg b/src/assets/icons/path-unix.svg new file mode 100644 index 0000000..4cba418 --- /dev/null +++ b/src/assets/icons/path-unix.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icons/path-windows.svg b/src/assets/icons/path-windows.svg new file mode 100644 index 0000000..17ab77f --- /dev/null +++ b/src/assets/icons/path-windows.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icons/pencil.svg b/src/assets/icons/pencil.svg new file mode 100644 index 0000000..5ae9672 --- /dev/null +++ b/src/assets/icons/pencil.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/permission-list.svg b/src/assets/icons/permission-list.svg new file mode 100644 index 0000000..fb29ea9 --- /dev/null +++ b/src/assets/icons/permission-list.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/assets/icons/plus.svg b/src/assets/icons/plus.svg new file mode 100644 index 0000000..99e3188 --- /dev/null +++ b/src/assets/icons/plus.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/question.svg b/src/assets/icons/question.svg new file mode 100644 index 0000000..1bd546a --- /dev/null +++ b/src/assets/icons/question.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/redo.svg b/src/assets/icons/redo.svg new file mode 100644 index 0000000..ccfc470 --- /dev/null +++ b/src/assets/icons/redo.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/retry.svg b/src/assets/icons/retry.svg new file mode 100644 index 0000000..279ceeb --- /dev/null +++ b/src/assets/icons/retry.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icons/return.svg b/src/assets/icons/return.svg new file mode 100644 index 0000000..1028234 --- /dev/null +++ b/src/assets/icons/return.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/search.svg b/src/assets/icons/search.svg new file mode 100644 index 0000000..099a225 --- /dev/null +++ b/src/assets/icons/search.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/send.svg b/src/assets/icons/send.svg new file mode 100644 index 0000000..cc7cfcc --- /dev/null +++ b/src/assets/icons/send.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/settings.svg b/src/assets/icons/settings.svg new file mode 100644 index 0000000..e756040 --- /dev/null +++ b/src/assets/icons/settings.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/share.svg b/src/assets/icons/share.svg new file mode 100644 index 0000000..07c3231 --- /dev/null +++ b/src/assets/icons/share.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icons/sidebar.svg b/src/assets/icons/sidebar.svg new file mode 100644 index 0000000..744cb59 --- /dev/null +++ b/src/assets/icons/sidebar.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/spinner.svg b/src/assets/icons/spinner.svg new file mode 100644 index 0000000..d2f09b0 --- /dev/null +++ b/src/assets/icons/spinner.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/stop.svg b/src/assets/icons/stop.svg new file mode 100644 index 0000000..829464c --- /dev/null +++ b/src/assets/icons/stop.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/icons/sun.svg b/src/assets/icons/sun.svg new file mode 100644 index 0000000..7967094 --- /dev/null +++ b/src/assets/icons/sun.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/icons/system.svg b/src/assets/icons/system.svg new file mode 100644 index 0000000..be8333b --- /dev/null +++ b/src/assets/icons/system.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icons/task.svg b/src/assets/icons/task.svg new file mode 100644 index 0000000..3818a76 --- /dev/null +++ b/src/assets/icons/task.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/icons/teach.svg b/src/assets/icons/teach.svg new file mode 100644 index 0000000..b37bd85 --- /dev/null +++ b/src/assets/icons/teach.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icons/terminal.svg b/src/assets/icons/terminal.svg new file mode 100644 index 0000000..f513b33 --- /dev/null +++ b/src/assets/icons/terminal.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/thinking.svg b/src/assets/icons/thinking.svg new file mode 100644 index 0000000..97c29d7 --- /dev/null +++ b/src/assets/icons/thinking.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/trash.svg b/src/assets/icons/trash.svg new file mode 100644 index 0000000..60e1218 --- /dev/null +++ b/src/assets/icons/trash.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/assets/icons/undo.svg b/src/assets/icons/undo.svg new file mode 100644 index 0000000..870fef9 --- /dev/null +++ b/src/assets/icons/undo.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/assets/icons/users.svg b/src/assets/icons/users.svg new file mode 100644 index 0000000..1e7f323 --- /dev/null +++ b/src/assets/icons/users.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/assets/icons/wrench.svg b/src/assets/icons/wrench.svg new file mode 100644 index 0000000..9ccb4ab --- /dev/null +++ b/src/assets/icons/wrench.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/assets/images/img1.png b/src/assets/images/img1.png new file mode 100644 index 0000000..053b2aa Binary files /dev/null and b/src/assets/images/img1.png differ diff --git a/src/assets/images/img2.png b/src/assets/images/img2.png new file mode 100644 index 0000000..b090366 Binary files /dev/null and b/src/assets/images/img2.png differ diff --git a/src/assets/images/img3.png b/src/assets/images/img3.png new file mode 100644 index 0000000..e18ca87 Binary files /dev/null and b/src/assets/images/img3.png differ diff --git a/src/assets/images/logo/PiAgentUiBlack (1).png b/src/assets/images/logo/PiAgentUiBlack (1).png new file mode 100644 index 0000000..873a041 Binary files /dev/null and b/src/assets/images/logo/PiAgentUiBlack (1).png differ diff --git a/src/assets/images/logo/PiAgentUiBlack (2).png b/src/assets/images/logo/PiAgentUiBlack (2).png new file mode 100644 index 0000000..23d5f1f Binary files /dev/null and b/src/assets/images/logo/PiAgentUiBlack (2).png differ diff --git a/src/assets/images/logo/PiAgentUiBlack (3).png b/src/assets/images/logo/PiAgentUiBlack (3).png new file mode 100644 index 0000000..042efcc Binary files /dev/null and b/src/assets/images/logo/PiAgentUiBlack (3).png differ diff --git a/src/assets/images/logo/PiAgentUiBlack (4).png b/src/assets/images/logo/PiAgentUiBlack (4).png new file mode 100644 index 0000000..da1a5cf Binary files /dev/null and b/src/assets/images/logo/PiAgentUiBlack (4).png differ diff --git a/src/assets/images/logo/PiAgentUiBlack (5).png b/src/assets/images/logo/PiAgentUiBlack (5).png new file mode 100644 index 0000000..48f1106 Binary files /dev/null and b/src/assets/images/logo/PiAgentUiBlack (5).png differ diff --git a/src/assets/images/logo/PiAgentUiLogoBlackletterBGTransp.png b/src/assets/images/logo/PiAgentUiLogoBlackletterBGTransp.png new file mode 100644 index 0000000..73541c3 Binary files /dev/null and b/src/assets/images/logo/PiAgentUiLogoBlackletterBGTransp.png differ diff --git a/src/assets/images/logo/PiAgentUiLogoWhiteletterBGTransp.png b/src/assets/images/logo/PiAgentUiLogoWhiteletterBGTransp.png new file mode 100644 index 0000000..2121da7 Binary files /dev/null and b/src/assets/images/logo/PiAgentUiLogoWhiteletterBGTransp.png differ diff --git a/src/assets/images/logo/PiAgentUiWhite (1).png b/src/assets/images/logo/PiAgentUiWhite (1).png new file mode 100644 index 0000000..ec6d725 Binary files /dev/null and b/src/assets/images/logo/PiAgentUiWhite (1).png differ diff --git a/src/assets/images/logo/PiAgentUiWhite (2).png b/src/assets/images/logo/PiAgentUiWhite (2).png new file mode 100644 index 0000000..ac6d62d Binary files /dev/null and b/src/assets/images/logo/PiAgentUiWhite (2).png differ diff --git a/src/assets/images/logo/PiAgentUiWhite (3).png b/src/assets/images/logo/PiAgentUiWhite (3).png new file mode 100644 index 0000000..483362e Binary files /dev/null and b/src/assets/images/logo/PiAgentUiWhite (3).png differ diff --git a/src/assets/images/logo/PiAgentUiWhite (4).png b/src/assets/images/logo/PiAgentUiWhite (4).png new file mode 100644 index 0000000..32eb78d Binary files /dev/null and b/src/assets/images/logo/PiAgentUiWhite (4).png differ diff --git a/src/assets/images/logo/PiAgentUiWhite (5).png b/src/assets/images/logo/PiAgentUiWhite (5).png new file mode 100644 index 0000000..08b6c0a Binary files /dev/null and b/src/assets/images/logo/PiAgentUiWhite (5).png differ diff --git a/src/assets/models.json b/src/assets/models.json new file mode 100644 index 0000000..15b58d6 --- /dev/null +++ b/src/assets/models.json @@ -0,0 +1,19864 @@ +{ + "data": [ + { + "id": "stepfun/step-3.7-flash", + "canonical_slug": "stepfun/step-3.7-flash-20260528", + "hugging_face_id": null, + "name": "StepFun: Step 3.7 Flash", + "created": 1779985069, + "description": "Step 3.7 Flash is StepFun's latest high-efficiency multimodal Mixture-of-Experts model. It pairs a 196B-parameter language backbone with a vision encoder for native image and video understanding, activating roughly 11B parameters...", + "context_length": 256000, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "text", + "image", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000002", + "completion": "0.00000115", + "input_cache_read": "0.00000004" + }, + "top_provider": { + "context_length": 256000, + "max_completion_tokens": 256000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logprobs", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "temperature", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/stepfun/step-3.7-flash-20260528/endpoints" + } + }, + { + "id": "anthropic/claude-opus-4.8-fast", + "canonical_slug": "anthropic/claude-4.8-opus-fast-20260528", + "hugging_face_id": null, + "name": "Anthropic: Claude Opus 4.8 (Fast)", + "created": 1779913703, + "description": "Fast-mode variant of [Opus 4.8](/anthropic/claude-opus-4.8) - identical capabilities with higher output speed at 2x pricing relative to regular Opus 4.8.\n\nLearn more in Anthropic's docs: https://platform.claude.com/docs/en/build-with-claude/fast-mode", + "context_length": 1000000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Claude", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00001", + "completion": "0.00005", + "web_search": "0.01", + "input_cache_read": "0.000001", + "input_cache_write": "0.0000125" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "tool_choice", + "tools", + "verbosity" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/anthropic/claude-4.8-opus-fast-20260528/endpoints" + } + }, + { + "id": "anthropic/claude-opus-4.8", + "canonical_slug": "anthropic/claude-4.8-opus-20260528", + "hugging_face_id": null, + "name": "Anthropic: Claude Opus 4.8", + "created": 1779905091, + "description": "Claude Opus 4.8 is Anthropic's most capable generally available model in the Opus family. It supports text, image, and file inputs with text output, with reasoning support and a 1M-token...", + "context_length": 1000000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Claude", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000005", + "completion": "0.000025", + "web_search": "0.01", + "input_cache_read": "0.0000005", + "input_cache_write": "0.00000625" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 128000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "tool_choice", + "tools", + "verbosity" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/anthropic/claude-4.8-opus-20260528/endpoints" + } + }, + { + "id": "qwen/qwen3.7-max", + "canonical_slug": "qwen/qwen3.7-max-20260520", + "hugging_face_id": null, + "name": "Qwen: Qwen3.7 Max", + "created": 1779376861, + "description": "Qwen3.7-Max is the flagship model in Alibaba's Qwen3.7 series. It supports text input and output and is designed for agent-centric workloads, with particular strengths in coding, office and productivity tasks,...", + "context_length": 1000000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000125", + "completion": "0.00000375", + "input_cache_read": "0.00000025", + "input_cache_write": "0.0000015625" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "logprobs", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3.7-max-20260520/endpoints" + } + }, + { + "id": "x-ai/grok-build-0.1", + "canonical_slug": "x-ai/grok-build-0.1-20260520", + "hugging_face_id": null, + "name": "xAI: Grok Build 0.1", + "created": 1779298123, + "description": "Grok Build 0.1 is xAI’s fast coding model trained specifically for agentic software engineering workflows. It supports text and image inputs with text output, and is optimized for interactive coding...", + "context_length": 256000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Grok", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000001", + "completion": "0.000002", + "web_search": "0.005", + "input_cache_read": "0.0000002" + }, + "top_provider": { + "context_length": 256000, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logprobs", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/x-ai/grok-build-0.1-20260520/endpoints" + } + }, + { + "id": "google/gemini-3.5-flash", + "canonical_slug": "google/gemini-3.5-flash-20260519", + "hugging_face_id": null, + "name": "Google: Gemini 3.5 Flash", + "created": 1779193800, + "description": "Gemini 3.5 Flash is Google's high-efficiency multimodal model, bringing near-Pro level coding and reasoning at Flash-tier cost and speed. It is highly optimized for coding proficiency and parallel agentic execution...", + "context_length": 1048576, + "architecture": { + "modality": "text+image+file+audio+video->text", + "input_modalities": [ + "text", + "image", + "video", + "file", + "audio" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemini", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000015", + "completion": "0.000009", + "image": "0.0000015", + "audio": "0.000003", + "web_search": "0.014", + "internal_reasoning": "0.000009", + "input_cache_read": "0.00000015", + "input_cache_write": "0.00000008333333333333334" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-01-01", + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemini-3.5-flash-20260519/endpoints" + } + }, + { + "id": "anthropic/claude-opus-4.7-fast", + "canonical_slug": "anthropic/claude-4.7-opus-fast-20260512", + "hugging_face_id": null, + "name": "Anthropic: Claude Opus 4.7 (Fast)", + "created": 1778613011, + "description": "Fast-mode variant of [Opus 4.7](/anthropic/claude-opus-4.7) - identical capabilities with higher output speed at premium 6x pricing.\n\nLearn more in Anthropic's docs: https://platform.claude.com/docs/en/build-with-claude/fast-mode", + "context_length": 1000000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Claude", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00003", + "completion": "0.00015", + "web_search": "0.01", + "input_cache_read": "0.000003", + "input_cache_write": "0.0000375" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "tool_choice", + "tools", + "verbosity" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/anthropic/claude-4.7-opus-fast-20260512/endpoints" + } + }, + { + "id": "perceptron/perceptron-mk1", + "canonical_slug": "perceptron/perceptron-mk1-20260512", + "hugging_face_id": null, + "name": "Perceptron: Perceptron Mk1", + "created": 1778597029, + "description": "Perceptron Mk1 (Mark One) is Perceptron's highest-quality vision-language model for video and embodied reasoning.** It accepts image and video inputs paired with natural language queries, and produces detailed visual understanding...", + "context_length": 32768, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "text", + "image", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000015", + "completion": "0.0000015" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": 8192, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "structured_outputs", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/perceptron/perceptron-mk1-20260512/endpoints" + } + }, + { + "id": "inclusionai/ring-2.6-1t", + "canonical_slug": "inclusionai/ring-2.6-1t-20260508", + "hugging_face_id": null, + "name": "inclusionAI: Ring-2.6-1T", + "created": 1778247440, + "description": "Ring-2.6-1T is a 1T-parameter-scale thinking model with 63B active parameters, built for real-world agent workflows that require both strong capability and operational efficiency. It is optimized for coding agents, tool...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000075", + "completion": "0.000000625", + "input_cache_read": "0.000000015" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/inclusionai/ring-2.6-1t-20260508/endpoints" + } + }, + { + "id": "google/gemini-3.1-flash-lite", + "canonical_slug": "google/gemini-3.1-flash-lite-20260507", + "hugging_face_id": null, + "name": "Google: Gemini 3.1 Flash Lite", + "created": 1778168828, + "description": "Gemini 3.1 Flash Lite is Google’s GA high-efficiency multimodal model optimized for low-latency, high-volume workloads. It supports text, image, video, audio, and PDF inputs, and is designed for lightweight agentic...", + "context_length": 1048576, + "architecture": { + "modality": "text+image+file+audio+video->text", + "input_modalities": [ + "text", + "image", + "video", + "file", + "audio" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemini", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000025", + "completion": "0.0000015", + "image": "0.00000025", + "audio": "0.0000005", + "web_search": "0.014", + "internal_reasoning": "0.0000015", + "input_cache_read": "0.000000025", + "input_cache_write": "0.00000008333333333333334" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemini-3.1-flash-lite-20260507/endpoints" + } + }, + { + "id": "openai/gpt-chat-latest", + "canonical_slug": "openai/gpt-chat-latest-20260505", + "hugging_face_id": null, + "name": "OpenAI: GPT Chat Latest", + "created": 1778000212, + "description": "GPT Chat Latest points to OpenAI's stable API alias `chat-latest` that always resolves to the latest Instant chat model used in ChatGPT. As OpenAI rolls out new Instant model updates...", + "context_length": 400000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000005", + "completion": "0.00003", + "web_search": "0.01", + "input_cache_read": "0.0000005" + }, + "top_provider": { + "context_length": 400000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "tool_choice", + "tools", + "top_logprobs" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-chat-latest-20260505/endpoints" + } + }, + { + "id": "x-ai/grok-4.3", + "canonical_slug": "x-ai/grok-4.3-20260430", + "hugging_face_id": null, + "name": "xAI: Grok 4.3", + "created": 1777591821, + "description": "Grok 4.3 is a reasoning model from xAI. It accepts text and image inputs with text output, and is suited for agentic workflows, instruction-following tasks, and applications requiring high factual...", + "context_length": 1000000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Grok", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000125", + "completion": "0.0000025", + "web_search": "0.005", + "input_cache_read": "0.0000002" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logprobs", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/x-ai/grok-4.3-20260430/endpoints" + } + }, + { + "id": "ibm-granite/granite-4.1-8b", + "canonical_slug": "ibm-granite/granite-4.1-8b-20260429", + "hugging_face_id": "ibm-granite/granite-4.1-8b", + "name": "IBM: Granite 4.1 8B", + "created": 1777577071, + "description": "Granite 4.1 8B is a dense, decoder-only 8-billion-parameter language model from IBM, part of the Granite 4.1 family. It supports a 131K-token context window and is designed for enterprise tasks...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000005", + "completion": "0.0000001", + "input_cache_read": "0.00000005" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 131072, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/ibm-granite/granite-4.1-8b-20260429/endpoints" + } + }, + { + "id": "mistralai/mistral-medium-3-5", + "canonical_slug": "mistralai/mistral-medium-3.5-20260430", + "hugging_face_id": null, + "name": "Mistral: Mistral Medium 3.5", + "created": 1777570439, + "description": "Mistral Medium 3.5 is a dense 128B instruction-following model from Mistral AI. It supports text and image inputs with text output, and is designed for agentic workflows, coding, and complex...", + "context_length": 262144, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000015", + "completion": "0.0000075" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/mistral-medium-3.5-20260430/endpoints" + } + }, + { + "id": "openrouter/owl-alpha", + "canonical_slug": "openrouter/owl-alpha", + "hugging_face_id": null, + "name": "Owl Alpha", + "created": 1777398589, + "description": "Owl Alpha is a high-performance foundation model designed for agentic workloads. Natively supports tool use, and long-context tasks, with strong performance in code generation, automated workflows, and complex instruction execution....", + "context_length": 1048756, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 1048756, + "max_completion_tokens": 262144, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tools", + "top_k", + "top_p" + ], + "default_parameters": null, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openrouter/owl-alpha/endpoints" + } + }, + { + "id": "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free", + "canonical_slug": "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning-20260428", + "hugging_face_id": null, + "name": "NVIDIA: Nemotron 3 Nano Omni (free)", + "created": 1777393095, + "description": "NVIDIA Nemotron™ 3 Nano Omni is a 30B-A3B open multimodal model designed to function as a perception and context sub-agent in enterprise agent systems. It accepts text, image, video, and...", + "context_length": 256000, + "architecture": { + "modality": "text+image+audio+video->text", + "input_modalities": [ + "text", + "audio", + "image", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 256000, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "seed", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 0.6, + "top_p": 0.95, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/nvidia/nemotron-3-nano-omni-30b-a3b-reasoning-20260428/endpoints" + } + }, + { + "id": "poolside/laguna-xs.2:free", + "canonical_slug": "poolside/laguna-xs.2-20260421", + "hugging_face_id": "poolside/Laguna-XS.2", + "name": "Poolside: Laguna XS.2 (free)", + "created": 1777389604, + "description": "Laguna XS.2 is the second-generation model in the XS size class from [Poolside](https://poolside.ai), their efficient coding agent series. It combines tool calling and reasoning capabilities with a compact footprint, offering...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "temperature", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": 0.7, + "top_p": 0.9, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/poolside/laguna-xs.2-20260421/endpoints" + } + }, + { + "id": "poolside/laguna-m.1:free", + "canonical_slug": "poolside/laguna-m.1-20260312", + "hugging_face_id": null, + "name": "Poolside: Laguna M.1 (free)", + "created": 1777388504, + "description": "Laguna M.1 is the flagship coding agent model from [Poolside](https://poolside.ai), optimized for complex software engineering tasks. Designed for agentic coding workflows, it supports tool calling and reasoning, with a 128K...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "temperature", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/poolside/laguna-m.1-20260312/endpoints" + } + }, + { + "id": "~anthropic/claude-haiku-latest", + "canonical_slug": "~anthropic/claude-haiku-latest", + "hugging_face_id": null, + "name": "Anthropic Claude Haiku Latest", + "created": 1777318492, + "description": "This model always redirects to the latest model in the Anthropic Claude Haiku family.", + "context_length": 200000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Router", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000001", + "completion": "0.000005", + "web_search": "0.01", + "input_cache_read": "0.0000001", + "input_cache_write": "0.00000125" + }, + "top_provider": { + "context_length": 200000, + "max_completion_tokens": 64000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/~anthropic/claude-haiku-latest/endpoints" + } + }, + { + "id": "~openai/gpt-mini-latest", + "canonical_slug": "~openai/gpt-mini-latest", + "hugging_face_id": null, + "name": "OpenAI GPT Mini Latest", + "created": 1777318471, + "description": "This model always redirects to the latest model in the OpenAI GPT Mini family.", + "context_length": 400000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "file", + "image", + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Router", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000075", + "completion": "0.0000045", + "web_search": "0.01", + "input_cache_read": "0.000000075" + }, + "top_provider": { + "context_length": 400000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-08-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/~openai/gpt-mini-latest/endpoints" + } + }, + { + "id": "~google/gemini-pro-latest", + "canonical_slug": "~google/gemini-pro-latest", + "hugging_face_id": null, + "name": "Google Gemini Pro Latest", + "created": 1777318451, + "description": "This model always redirects to the latest model in the Google Gemini Pro family.", + "context_length": 1048576, + "architecture": { + "modality": "text+image+file+audio+video->text", + "input_modalities": [ + "audio", + "file", + "image", + "text", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Router", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000002", + "completion": "0.000012", + "image": "0.000002", + "audio": "0.000002", + "web_search": "0.014", + "internal_reasoning": "0.000012", + "input_cache_read": "0.0000002", + "input_cache_write": "0.000000375" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/~google/gemini-pro-latest/endpoints" + } + }, + { + "id": "~moonshotai/kimi-latest", + "canonical_slug": "~moonshotai/kimi-latest", + "hugging_face_id": null, + "name": "MoonshotAI Kimi Latest", + "created": 1777318428, + "description": "This model always redirects to the latest model in the MoonshotAI Kimi family.", + "context_length": 262144, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Router", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000684", + "completion": "0.00000342", + "input_cache_read": "0.000000144" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 262144, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "parallel_tool_calls", + "presence_penalty", + "reasoning", + "reasoning_effort", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/~moonshotai/kimi-latest/endpoints" + } + }, + { + "id": "~google/gemini-flash-latest", + "canonical_slug": "~google/gemini-flash-latest", + "hugging_face_id": null, + "name": "Google Gemini Flash Latest", + "created": 1777318398, + "description": "This model always redirects to the latest model in the Google Gemini Flash family.", + "context_length": 1048576, + "architecture": { + "modality": "text+image+file+audio+video->text", + "input_modalities": [ + "text", + "image", + "video", + "file", + "audio" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Router", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000015", + "completion": "0.000009", + "image": "0.0000015", + "audio": "0.000003", + "web_search": "0.014", + "internal_reasoning": "0.000009", + "input_cache_read": "0.00000015", + "input_cache_write": "0.00000008333333333333334" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-01-01", + "expiration_date": null, + "links": { + "details": "/api/v1/models/~google/gemini-flash-latest/endpoints" + } + }, + { + "id": "~anthropic/claude-sonnet-latest", + "canonical_slug": "~anthropic/claude-sonnet-latest", + "hugging_face_id": null, + "name": "Anthropic Claude Sonnet Latest", + "created": 1777318368, + "description": "This model always redirects to the latest model in the Anthropic Claude Sonnet family.", + "context_length": 1000000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Router", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000003", + "completion": "0.000015", + "web_search": "0.01", + "input_cache_read": "0.0000003", + "input_cache_write": "0.00000375" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p", + "verbosity" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/~anthropic/claude-sonnet-latest/endpoints" + } + }, + { + "id": "~openai/gpt-latest", + "canonical_slug": "~openai/gpt-latest", + "hugging_face_id": null, + "name": "OpenAI GPT Latest", + "created": 1777318334, + "description": "This model always redirects to the latest model in the OpenAI GPT family.", + "context_length": 1050000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "file", + "image", + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Router", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000005", + "completion": "0.00003", + "web_search": "0.01", + "input_cache_read": "0.0000005" + }, + "top_provider": { + "context_length": 1050000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-12-01", + "expiration_date": null, + "links": { + "details": "/api/v1/models/~openai/gpt-latest/endpoints" + } + }, + { + "id": "qwen/qwen3.5-plus-20260420", + "canonical_slug": "qwen/qwen3.5-plus-20260420", + "hugging_face_id": null, + "name": "Qwen: Qwen3.5 Plus 2026-04-20", + "created": 1777261368, + "description": "Qwen3.5 Plus (April 2026) is a large-scale multimodal language model from Alibaba. It accepts text, image, and video input and produces text output, with a 1M token context window. This...", + "context_length": 1000000, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "text", + "image", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000003", + "completion": "0.0000018", + "input_cache_write": "0.000000375" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3.5-plus-20260420/endpoints" + } + }, + { + "id": "qwen/qwen3.6-flash", + "canonical_slug": "qwen/qwen3.6-flash", + "hugging_face_id": null, + "name": "Qwen: Qwen3.6 Flash", + "created": 1777261362, + "description": "Qwen3.6 Flash is a fast, efficient language model from Alibaba's Qwen 3.6 series. It supports text, image, and video input with a 1M token context window. Tiered pricing kicks in...", + "context_length": 1000000, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "text", + "image", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000001875", + "completion": "0.000001125", + "input_cache_write": "0.000000234375" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3.6-flash/endpoints" + } + }, + { + "id": "qwen/qwen3.6-35b-a3b", + "canonical_slug": "qwen/qwen3.6-35b-a3b-20260415", + "hugging_face_id": "Qwen/Qwen3.6-35B-A3B", + "name": "Qwen: Qwen3.6 35B A3B", + "created": 1777260255, + "description": "Qwen3.6-35B-A3B is an open-weight multimodal model from Alibaba Cloud with 35 billion total parameters and 3 billion active parameters per token. It uses a hybrid sparse mixture-of-experts architecture combining Gated...", + "context_length": 262144, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "text", + "image", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000014", + "completion": "0.000001" + }, + "top_provider": { + "context_length": 262140, + "max_completion_tokens": 262140, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "top_k": 20 + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3.6-35b-a3b-20260415/endpoints" + } + }, + { + "id": "qwen/qwen3.6-max-preview", + "canonical_slug": "qwen/qwen3.6-max-preview-20260420", + "hugging_face_id": null, + "name": "Qwen: Qwen3.6 Max Preview", + "created": 1777260242, + "description": "Qwen3.6-Max-Preview is a proprietary frontier model from Alibaba Cloud built on a sparse mixture-of-experts architecture with approximately 1 trillion total parameters. It is optimized for agentic coding, tool use, and...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000104", + "completion": "0.00000624", + "input_cache_write": "0.0000013" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "logprobs", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3.6-max-preview-20260420/endpoints" + } + }, + { + "id": "qwen/qwen3.6-27b", + "canonical_slug": "qwen/qwen3.6-27b-20260422", + "hugging_face_id": "Qwen/Qwen3.6-27B", + "name": "Qwen: Qwen3.6 27B", + "created": 1777255064, + "description": "Qwen3.6 27B is a dense 27-billion-parameter language model from the Qwen Team at Alibaba, released in April 2026. It features hybrid multimodal capabilities — accepting text, image, and video inputs...", + "context_length": 262144, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "text", + "image", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000029", + "completion": "0.0000032" + }, + "top_provider": { + "context_length": 262140, + "max_completion_tokens": 262140, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3.6-27b-20260422/endpoints" + } + }, + { + "id": "openai/gpt-5.5-pro", + "canonical_slug": "openai/gpt-5.5-pro-20260423", + "hugging_face_id": "", + "name": "OpenAI: GPT-5.5 Pro", + "created": 1777051896, + "description": "GPT-5.5 Pro is OpenAI’s high-capability model optimized for deep reasoning and accuracy on complex, high-stakes workloads. It features a 1M+ token context window (922K input, 128K output) with support for...", + "context_length": 1050000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "file", + "image", + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00003", + "completion": "0.00018", + "web_search": "0.01" + }, + "top_provider": { + "context_length": 1050000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-12-01", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5.5-pro-20260423/endpoints" + } + }, + { + "id": "openai/gpt-5.5", + "canonical_slug": "openai/gpt-5.5-20260423", + "hugging_face_id": "", + "name": "OpenAI: GPT-5.5", + "created": 1777051893, + "description": "GPT-5.5 is OpenAI’s frontier model designed for complex professional workloads, building on GPT-5.4 with stronger reasoning, higher reliability, and improved token efficiency on hard tasks. It features a 1M+ token...", + "context_length": 1050000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "file", + "image", + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000005", + "completion": "0.00003", + "web_search": "0.01", + "input_cache_read": "0.0000005" + }, + "top_provider": { + "context_length": 1050000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-12-01", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5.5-20260423/endpoints" + } + }, + { + "id": "deepseek/deepseek-v4-pro", + "canonical_slug": "deepseek/deepseek-v4-pro-20260423", + "hugging_face_id": "deepseek-ai/DeepSeek-V4-Pro", + "name": "DeepSeek: DeepSeek V4 Pro", + "created": 1777000679, + "description": "DeepSeek V4 Pro is a large-scale Mixture-of-Experts model from DeepSeek with 1.6T total parameters and 49B activated parameters, supporting a 1M-token context window. It is designed for advanced reasoning, coding,...", + "context_length": 1048576, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "DeepSeek", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000435", + "completion": "0.00000087", + "input_cache_read": "0.000000003625" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 384000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 1, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/deepseek/deepseek-v4-pro-20260423/endpoints" + } + }, + { + "id": "deepseek/deepseek-v4-flash:free", + "canonical_slug": "deepseek/deepseek-v4-flash-20260423", + "hugging_face_id": "deepseek-ai/DeepSeek-V4-Flash", + "name": "DeepSeek: DeepSeek V4 Flash (free)", + "created": 1777000666, + "description": "DeepSeek V4 Flash is an efficiency-optimized Mixture-of-Experts model from DeepSeek with 284B total parameters and 13B activated parameters, supporting a 1M-token context window. It is designed for fast inference and...", + "context_length": 1048576, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "DeepSeek", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 384000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "reasoning", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/deepseek/deepseek-v4-flash-20260423/endpoints" + } + }, + { + "id": "deepseek/deepseek-v4-flash", + "canonical_slug": "deepseek/deepseek-v4-flash-20260423", + "hugging_face_id": "deepseek-ai/DeepSeek-V4-Flash", + "name": "DeepSeek: DeepSeek V4 Flash", + "created": 1777000666, + "description": "DeepSeek V4 Flash is an efficiency-optimized Mixture-of-Experts model from DeepSeek with 284B total parameters and 13B activated parameters, supporting a 1M-token context window. It is designed for fast inference and...", + "context_length": 1048576, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "DeepSeek", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000000983", + "completion": "0.0000001966", + "input_cache_read": "0.0000000197" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 131072, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/deepseek/deepseek-v4-flash-20260423/endpoints" + } + }, + { + "id": "inclusionai/ling-2.6-1t", + "canonical_slug": "inclusionai/ling-2.6-1t-20260423", + "hugging_face_id": null, + "name": "inclusionAI: Ling-2.6-1T", + "created": 1776948238, + "description": "Ling-2.6-1T is an instant (instruct) model from inclusionAI and the company’s trillion-parameter flagship, designed for real-world agents that require fast execution and high efficiency at scale. It uses a “fast...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000075", + "completion": "0.000000625", + "input_cache_read": "0.000000015" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/inclusionai/ling-2.6-1t-20260423/endpoints" + } + }, + { + "id": "tencent/hy3-preview", + "canonical_slug": "tencent/hy3-preview-20260421", + "hugging_face_id": "tencent/Hy3-preview", + "name": "Tencent: Hy3 preview", + "created": 1776878150, + "description": "Hy3 preview is a high-efficiency Mixture-of-Experts model from Tencent designed for agentic workflows and production use. It supports configurable reasoning levels across disabled, low, and high modes, allowing it to...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000063", + "completion": "0.00000021", + "input_cache_read": "0.000000021" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.9, + "top_p": 1, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/tencent/hy3-preview-20260421/endpoints" + } + }, + { + "id": "xiaomi/mimo-v2.5-pro", + "canonical_slug": "xiaomi/mimo-v2.5-pro-20260422", + "hugging_face_id": "XiaomiMiMo/MiMo-V2.5-Pro", + "name": "Xiaomi: MiMo-V2.5-Pro", + "created": 1776874273, + "description": "MiMo-V2.5-Pro is Xiaomi’s flagship model, delivering strong performance in general agentic capabilities, complex software engineering, and long-horizon tasks, with top rankings on benchmarks such as ClawEval, GDPVal, and SWE-bench Pro....", + "context_length": 1048576, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000435", + "completion": "0.00000087", + "input_cache_read": "0.0000000036" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 131072, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/xiaomi/mimo-v2.5-pro-20260422/endpoints" + } + }, + { + "id": "xiaomi/mimo-v2.5", + "canonical_slug": "xiaomi/mimo-v2.5-20260422", + "hugging_face_id": "XiaomiMiMo/MiMo-V2.5", + "name": "Xiaomi: MiMo-V2.5", + "created": 1776874269, + "description": "MiMo-V2.5 is a native omnimodal model by Xiaomi. It delivers Pro-level agentic performance at roughly half the inference cost, while surpassing MiMo-V2-Omni in multimodal perception across image and video understanding...", + "context_length": 1048576, + "architecture": { + "modality": "text+image+audio+video->text", + "input_modalities": [ + "text", + "audio", + "image", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000014", + "completion": "0.00000028", + "input_cache_read": "0.0000000028" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 131072, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "stop", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/xiaomi/mimo-v2.5-20260422/endpoints" + } + }, + { + "id": "openai/gpt-5.4-image-2", + "canonical_slug": "openai/gpt-5.4-image-2-20260421", + "hugging_face_id": "", + "name": "OpenAI: GPT-5.4 Image 2", + "created": 1776797528, + "description": "[GPT-5.4](https://openrouter.ai/openai/gpt-5.4) Image 2 combines OpenAI's GPT-5.4 model with state-of-the-art image generation capabilities from GPT Image 2. It enables rich multimodal workflows, allowing users to seamlessly move between reasoning, coding, and...", + "context_length": 272000, + "architecture": { + "modality": "text+image+file->text+image", + "input_modalities": [ + "image", + "text", + "file" + ], + "output_modalities": [ + "image", + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000008", + "completion": "0.000015", + "web_search": "0.01", + "input_cache_read": "0.000002" + }, + "top_provider": { + "context_length": 272000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "top_logprobs" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5.4-image-2-20260421/endpoints" + } + }, + { + "id": "inclusionai/ling-2.6-flash", + "canonical_slug": "inclusionai/ling-2.6-flash-20260421", + "hugging_face_id": "", + "name": "inclusionAI: Ling-2.6-flash", + "created": 1776795886, + "description": "Ling-2.6-flash is an instant (instruct) model from inclusionAI with 104B total parameters and 7.4B active parameters, designed for real-world agents that require fast responses, strong execution, and high token efficiency....", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000001", + "completion": "0.00000003", + "input_cache_read": "0.000000002" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/inclusionai/ling-2.6-flash-20260421/endpoints" + } + }, + { + "id": "~anthropic/claude-opus-latest", + "canonical_slug": "~anthropic/claude-opus-latest", + "hugging_face_id": "", + "name": "Anthropic: Claude Opus Latest", + "created": 1776795361, + "description": "This model always redirects to the latest model in the Claude Opus family.", + "context_length": 1000000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Router", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000005", + "completion": "0.000025", + "web_search": "0.01", + "input_cache_read": "0.0000005", + "input_cache_write": "0.00000625" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 128000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "tool_choice", + "tools", + "verbosity" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/~anthropic/claude-opus-latest/endpoints" + } + }, + { + "id": "openrouter/pareto-code", + "canonical_slug": "openrouter/pareto-code", + "hugging_face_id": "", + "name": "Pareto Code Router", + "created": 1776747900, + "description": "The Pareto Router maintains a tiered shortlist of strong coding models, ranked by [Artificial Analysis](https://artificialanalysis.ai/) coding percentiles. Set min_coding_score between 0 and 1 on the [pareto-router plugin](https://openrouter.ai/docs/guides/routing/routers/pareto-router#the-min_coding_score-parameter) to control how...", + "context_length": 2000000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Router", + "instruct_type": null + }, + "pricing": { + "prompt": "-1", + "completion": "-1" + }, + "top_provider": { + "context_length": null, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openrouter/pareto-code/endpoints" + } + }, + { + "id": "moonshotai/kimi-k2.6:free", + "canonical_slug": "moonshotai/kimi-k2.6-20260420", + "hugging_face_id": "moonshotai/Kimi-K2.6", + "name": "MoonshotAI: Kimi K2.6 (free)", + "created": 1776699402, + "description": "Kimi K2.6 is Moonshot AI's next-generation multimodal model, designed for long-horizon coding, coding-driven UI/UX generation, and multi-agent orchestration. It handles complex end-to-end coding tasks across Python, Rust, and Go, and...", + "context_length": 262144, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "reasoning", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/moonshotai/kimi-k2.6-20260420/endpoints" + } + }, + { + "id": "moonshotai/kimi-k2.6", + "canonical_slug": "moonshotai/kimi-k2.6-20260420", + "hugging_face_id": "moonshotai/Kimi-K2.6", + "name": "MoonshotAI: Kimi K2.6", + "created": 1776699402, + "description": "Kimi K2.6 is Moonshot AI's next-generation multimodal model, designed for long-horizon coding, coding-driven UI/UX generation, and multi-agent orchestration. It handles complex end-to-end coding tasks across Python, Rust, and Go, and...", + "context_length": 262144, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000684", + "completion": "0.00000342", + "input_cache_read": "0.000000144" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 262144, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "parallel_tool_calls", + "presence_penalty", + "reasoning", + "reasoning_effort", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/moonshotai/kimi-k2.6-20260420/endpoints" + } + }, + { + "id": "anthropic/claude-opus-4.7", + "canonical_slug": "anthropic/claude-4.7-opus-20260416", + "hugging_face_id": null, + "name": "Anthropic: Claude Opus 4.7", + "created": 1776351100, + "description": "Opus 4.7 is the next generation of Anthropic's Opus family, built for long-running, asynchronous agents. Building on the coding and agentic strengths of Opus 4.6, it delivers stronger performance on...", + "context_length": 1000000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Claude", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000005", + "completion": "0.000025", + "web_search": "0.01", + "input_cache_read": "0.0000005", + "input_cache_write": "0.00000625" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 128000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "tool_choice", + "tools", + "verbosity" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/anthropic/claude-4.7-opus-20260416/endpoints" + } + }, + { + "id": "anthropic/claude-opus-4.6-fast", + "canonical_slug": "anthropic/claude-4.6-opus-fast-20260407", + "hugging_face_id": null, + "name": "Anthropic: Claude Opus 4.6 (Fast)", + "created": 1775592472, + "description": "Fast-mode variant of [Opus 4.6](/anthropic/claude-opus-4.6) - identical capabilities with higher output speed at premium 6x pricing.\n\nLearn more in Anthropic's docs: https://platform.claude.com/docs/en/build-with-claude/fast-mode", + "context_length": 1000000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Claude", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00003", + "completion": "0.00015", + "web_search": "0.01", + "input_cache_read": "0.000003", + "input_cache_write": "0.0000375" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p", + "verbosity" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": "2026-06-29", + "links": { + "details": "/api/v1/models/anthropic/claude-4.6-opus-fast-20260407/endpoints" + } + }, + { + "id": "z-ai/glm-5.1", + "canonical_slug": "z-ai/glm-5.1-20260406", + "hugging_face_id": "zai-org/GLM-5.1", + "name": "Z.ai: GLM 5.1", + "created": 1775578025, + "description": "GLM-5.1 delivers a major leap in coding capability, with particularly significant gains in handling long-horizon tasks. Unlike previous models built around minute-level interactions, GLM-5.1 can work independently and continuously on...", + "context_length": 202752, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000098", + "completion": "0.00000308", + "input_cache_read": "0.000000182" + }, + "top_provider": { + "context_length": 202752, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "parallel_tool_calls", + "presence_penalty", + "reasoning", + "reasoning_effort", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/z-ai/glm-5.1-20260406/endpoints" + } + }, + { + "id": "google/gemma-4-26b-a4b-it:free", + "canonical_slug": "google/gemma-4-26b-a4b-it-20260403", + "hugging_face_id": "google/gemma-4-26B-A4B-it", + "name": "Google: Gemma 4 26B A4B (free)", + "created": 1775227989, + "description": "Gemma 4 26B A4B IT is an instruction-tuned Mixture-of-Experts (MoE) model from Google DeepMind. Despite 25.2B total parameters, only 3.8B activate per token during inference — delivering near-31B quality at...", + "context_length": 262144, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "image", + "text", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemma", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "top_k": 64 + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemma-4-26b-a4b-it-20260403/endpoints" + } + }, + { + "id": "google/gemma-4-26b-a4b-it", + "canonical_slug": "google/gemma-4-26b-a4b-it-20260403", + "hugging_face_id": "google/gemma-4-26B-A4B-it", + "name": "Google: Gemma 4 26B A4B ", + "created": 1775227989, + "description": "Gemma 4 26B A4B IT is an instruction-tuned Mixture-of-Experts (MoE) model from Google DeepMind. Despite 25.2B total parameters, only 3.8B activate per token during inference — delivering near-31B quality at...", + "context_length": 262144, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "image", + "text", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemma", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000006", + "completion": "0.00000033" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "top_k": 64 + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemma-4-26b-a4b-it-20260403/endpoints" + } + }, + { + "id": "google/gemma-4-31b-it:free", + "canonical_slug": "google/gemma-4-31b-it-20260402", + "hugging_face_id": "google/gemma-4-31B-it", + "name": "Google: Gemma 4 31B (free)", + "created": 1775148486, + "description": "Gemma 4 31B Instruct is Google DeepMind's 30.7B dense multimodal model supporting text and image input with text output. Features a 256K token context window, configurable thinking/reasoning mode, native function...", + "context_length": 262144, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "image", + "text", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemma", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "top_k": 64, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemma-4-31b-it-20260402/endpoints" + } + }, + { + "id": "google/gemma-4-31b-it", + "canonical_slug": "google/gemma-4-31b-it-20260402", + "hugging_face_id": "google/gemma-4-31B-it", + "name": "Google: Gemma 4 31B", + "created": 1775148486, + "description": "Gemma 4 31B Instruct is Google DeepMind's 30.7B dense multimodal model supporting text and image input with text output. Features a 256K token context window, configurable thinking/reasoning mode, native function...", + "context_length": 262144, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "image", + "text", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemma", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000012", + "completion": "0.00000037" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "top_k": 64, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemma-4-31b-it-20260402/endpoints" + } + }, + { + "id": "qwen/qwen3.6-plus", + "canonical_slug": "qwen/qwen3.6-plus-04-02", + "hugging_face_id": "", + "name": "Qwen: Qwen3.6 Plus", + "created": 1775133557, + "description": "Qwen 3.6 Plus builds on a hybrid architecture that combines efficient linear attention with sparse mixture-of-experts routing, enabling strong scalability and high-performance inference. Compared to the 3.5 series, it delivers...", + "context_length": 1000000, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "text", + "image", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000325", + "completion": "0.00000195", + "input_cache_write": "0.00000040625" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3.6-plus-04-02/endpoints" + } + }, + { + "id": "z-ai/glm-5v-turbo", + "canonical_slug": "z-ai/glm-5v-turbo-20260401", + "hugging_face_id": "", + "name": "Z.ai: GLM 5V Turbo", + "created": 1775061458, + "description": "GLM-5V-Turbo is Z.ai’s first native multimodal agent foundation model, built for vision-based coding and agent-driven tasks. It natively handles image, video, and text inputs, excels at long-horizon planning, complex coding,...", + "context_length": 202752, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "image", + "text", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000012", + "completion": "0.000004", + "input_cache_read": "0.00000024" + }, + "top_provider": { + "context_length": 202752, + "max_completion_tokens": 131072, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/z-ai/glm-5v-turbo-20260401/endpoints" + } + }, + { + "id": "arcee-ai/trinity-large-thinking", + "canonical_slug": "arcee-ai/trinity-large-thinking", + "hugging_face_id": "arcee-ai/Trinity-Large-Thinking", + "name": "Arcee AI: Trinity Large Thinking", + "created": 1775058318, + "description": "Trinity Large Thinking is a powerful open source reasoning model from the team at Arcee AI. It shows strong performance in PinchBench, agentic workloads, and reasoning tasks. Launch video: https://youtu.be/Gc82AXLa0Rg?si=4RLn6WBz33qT--B7...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000022", + "completion": "0.00000085", + "input_cache_read": "0.00000006" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 262144, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.3, + "top_p": 0.8, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/arcee-ai/trinity-large-thinking/endpoints" + } + }, + { + "id": "x-ai/grok-4.20-multi-agent", + "canonical_slug": "x-ai/grok-4.20-multi-agent-20260309", + "hugging_face_id": "", + "name": "xAI: Grok 4.20 Multi-Agent", + "created": 1774979158, + "description": "Grok 4.20 Multi-Agent is a variant of xAI’s Grok 4.20 designed for collaborative, agent-based workflows. Multiple agents operate in parallel to conduct deep research, coordinate tool use, and synthesize information...", + "context_length": 2000000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Grok", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000002", + "completion": "0.000006", + "web_search": "0.005", + "input_cache_read": "0.0000002" + }, + "top_provider": { + "context_length": 2000000, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "logprobs", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "temperature", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-09-01", + "expiration_date": null, + "links": { + "details": "/api/v1/models/x-ai/grok-4.20-multi-agent-20260309/endpoints" + } + }, + { + "id": "x-ai/grok-4.20", + "canonical_slug": "x-ai/grok-4.20-20260309", + "hugging_face_id": "", + "name": "xAI: Grok 4.20", + "created": 1774979019, + "description": "Grok 4.20 is a reasoning model from xAI with industry-leading speed and agentic tool calling capabilities. It combines the lowest hallucination rate on the market with strict prompt adherance, delivering...", + "context_length": 2000000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Grok", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000125", + "completion": "0.0000025", + "web_search": "0.005", + "input_cache_read": "0.0000002" + }, + "top_provider": { + "context_length": 2000000, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "logprobs", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-09-01", + "expiration_date": null, + "links": { + "details": "/api/v1/models/x-ai/grok-4.20-20260309/endpoints" + } + }, + { + "id": "google/lyria-3-pro-preview", + "canonical_slug": "google/lyria-3-pro-preview-20260330", + "hugging_face_id": null, + "name": "Google: Lyria 3 Pro Preview", + "created": 1774907286, + "description": "Full-length songs are priced at $0.08 per song. Lyria 3 is Google's family of music generation models, available through the Gemini API. With Lyria 3, you can generate high-quality, 48kHz...", + "context_length": 1048576, + "architecture": { + "modality": "text+image->text+audio", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text", + "audio" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "response_format", + "seed", + "temperature", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/lyria-3-pro-preview-20260330/endpoints" + } + }, + { + "id": "google/lyria-3-clip-preview", + "canonical_slug": "google/lyria-3-clip-preview-20260330", + "hugging_face_id": null, + "name": "Google: Lyria 3 Clip Preview", + "created": 1774907255, + "description": "30 second duration clips are priced at $0.04 per clip. Lyria 3 is Google's family of music generation models, available through the Gemini API. With Lyria 3, you can generate...", + "context_length": 1048576, + "architecture": { + "modality": "text+image->text+audio", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text", + "audio" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "response_format", + "seed", + "temperature", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/lyria-3-clip-preview-20260330/endpoints" + } + }, + { + "id": "kwaipilot/kat-coder-pro-v2", + "canonical_slug": "kwaipilot/kat-coder-pro-v2-20260327", + "hugging_face_id": "", + "name": "Kwaipilot: KAT-Coder-Pro V2", + "created": 1774649310, + "description": "KAT-Coder-Pro V2 is the latest high-performance model in KwaiKAT’s KAT-Coder series, designed for complex enterprise-grade software engineering and SaaS integration. It builds on the agentic coding strengths of earlier versions,...", + "context_length": 256000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000003", + "completion": "0.0000012", + "input_cache_read": "0.00000006" + }, + "top_provider": { + "context_length": 256000, + "max_completion_tokens": 80000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/kwaipilot/kat-coder-pro-v2-20260327/endpoints" + } + }, + { + "id": "rekaai/reka-edge", + "canonical_slug": "rekaai/reka-edge-2603", + "hugging_face_id": "RekaAI/reka-edge-2603", + "name": "Reka Edge", + "created": 1774026965, + "description": "Reka Edge is an extremely efficient 7B multimodal vision-language model that accepts image/video+text inputs and generates text outputs. This model is optimized specifically to deliver industry-leading performance in image understanding,...", + "context_length": 16384, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "image", + "text", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000001", + "completion": "0.0000001" + }, + "top_provider": { + "context_length": 16384, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/rekaai/reka-edge-2603/endpoints" + } + }, + { + "id": "xiaomi/mimo-v2-omni", + "canonical_slug": "xiaomi/mimo-v2-omni-20260318", + "hugging_face_id": "", + "name": "Xiaomi: MiMo-V2-Omni", + "created": 1773863703, + "description": "MiMo-V2-Omni is a frontier omni-modal model that natively processes image, video, and audio inputs within a unified architecture. It combines strong multimodal perception with agentic capability - visual grounding, multi-step...", + "context_length": 262144, + "architecture": { + "modality": "text+image+audio+video->text", + "input_modalities": [ + "text", + "audio", + "image", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000004", + "completion": "0.000002", + "input_cache_read": "0.00000008" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "stop", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": "2026-05-31", + "links": { + "details": "/api/v1/models/xiaomi/mimo-v2-omni-20260318/endpoints" + } + }, + { + "id": "xiaomi/mimo-v2-pro", + "canonical_slug": "xiaomi/mimo-v2-pro-20260318", + "hugging_face_id": "", + "name": "Xiaomi: MiMo-V2-Pro", + "created": 1773863643, + "description": "MiMo-V2-Pro is Xiaomi's flagship foundation model, featuring over 1T total parameters and a 1M context length, deeply optimized for agentic scenarios. It is highly adaptable to general agent frameworks like...", + "context_length": 1048576, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000001", + "completion": "0.000003", + "input_cache_read": "0.0000002" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 131072, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "stop", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": "2026-05-31", + "links": { + "details": "/api/v1/models/xiaomi/mimo-v2-pro-20260318/endpoints" + } + }, + { + "id": "minimax/minimax-m2.7", + "canonical_slug": "minimax/minimax-m2.7-20260318", + "hugging_face_id": "MiniMaxAI/MiniMax-M2.7", + "name": "MiniMax: MiniMax M2.7", + "created": 1773836697, + "description": "MiniMax-M2.7 is a next-generation large language model designed for autonomous, real-world productivity and continuous improvement. Built to actively participate in its own evolution, M2.7 integrates advanced agentic capabilities through multi-agent...", + "context_length": 204800, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000026", + "completion": "0.0000012" + }, + "top_provider": { + "context_length": 196608, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/minimax/minimax-m2.7-20260318/endpoints" + } + }, + { + "id": "openai/gpt-5.4-nano", + "canonical_slug": "openai/gpt-5.4-nano-20260317", + "hugging_face_id": "", + "name": "OpenAI: GPT-5.4 Nano", + "created": 1773748187, + "description": "GPT-5.4 nano is the most lightweight and cost-efficient variant of the GPT-5.4 family, optimized for speed-critical and high-volume tasks. It supports text and image inputs and is designed for low-latency...", + "context_length": 400000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "file", + "image", + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000002", + "completion": "0.00000125", + "web_search": "0.01", + "input_cache_read": "0.00000002" + }, + "top_provider": { + "context_length": 400000, + "max_completion_tokens": 128000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-08-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5.4-nano-20260317/endpoints" + } + }, + { + "id": "openai/gpt-5.4-mini", + "canonical_slug": "openai/gpt-5.4-mini-20260317", + "hugging_face_id": "", + "name": "OpenAI: GPT-5.4 Mini", + "created": 1773748178, + "description": "GPT-5.4 mini brings the core capabilities of GPT-5.4 to a faster, more efficient model optimized for high-throughput workloads. It supports text and image inputs with strong performance across reasoning, coding,...", + "context_length": 400000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "file", + "image", + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000075", + "completion": "0.0000045", + "web_search": "0.01", + "input_cache_read": "0.000000075" + }, + "top_provider": { + "context_length": 400000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-08-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5.4-mini-20260317/endpoints" + } + }, + { + "id": "mistralai/mistral-small-2603", + "canonical_slug": "mistralai/mistral-small-2603", + "hugging_face_id": "mistralai/Mistral-Small-4-119B-2603", + "name": "Mistral: Mistral Small 4", + "created": 1773695685, + "description": "Mistral Small 4 is the next major release in the Mistral Small family, unifying the capabilities of several flagship Mistral models into a single system. It combines strong reasoning from...", + "context_length": 262144, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000015", + "completion": "0.0000006", + "input_cache_read": "0.000000015" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/mistral-small-2603/endpoints" + } + }, + { + "id": "z-ai/glm-5-turbo", + "canonical_slug": "z-ai/glm-5-turbo-20260315", + "hugging_face_id": "", + "name": "Z.ai: GLM 5 Turbo", + "created": 1773583573, + "description": "GLM-5 Turbo is a new model from Z.ai designed for fast inference and strong performance in agent-driven environments such as OpenClaw scenarios. It is deeply optimized for real-world agent workflows...", + "context_length": 202752, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000012", + "completion": "0.000004", + "input_cache_read": "0.00000024" + }, + "top_provider": { + "context_length": 202752, + "max_completion_tokens": 131072, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/z-ai/glm-5-turbo-20260315/endpoints" + } + }, + { + "id": "nvidia/nemotron-3-super-120b-a12b:free", + "canonical_slug": "nvidia/nemotron-3-super-120b-a12b-20230311", + "hugging_face_id": "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-FP8", + "name": "NVIDIA: Nemotron 3 Super (free)", + "created": 1773245239, + "description": "NVIDIA Nemotron 3 Super is a 120B-parameter open hybrid MoE model, activating just 12B parameters for maximum compute efficiency and accuracy in complex multi-agent applications. Built on a hybrid Mamba-Transformer...", + "context_length": 1000000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 262144, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/nvidia/nemotron-3-super-120b-a12b-20230311/endpoints" + } + }, + { + "id": "nvidia/nemotron-3-super-120b-a12b", + "canonical_slug": "nvidia/nemotron-3-super-120b-a12b-20230311", + "hugging_face_id": "nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-FP8", + "name": "NVIDIA: Nemotron 3 Super", + "created": 1773245239, + "description": "NVIDIA Nemotron 3 Super is a 120B-parameter open hybrid MoE model, activating just 12B parameters for maximum compute efficiency and accuracy in complex multi-agent applications. Built on a hybrid Mamba-Transformer...", + "context_length": 1000000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000009", + "completion": "0.00000045" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/nvidia/nemotron-3-super-120b-a12b-20230311/endpoints" + } + }, + { + "id": "bytedance-seed/seed-2.0-lite", + "canonical_slug": "bytedance-seed/seed-2.0-lite-20260309", + "hugging_face_id": null, + "name": "ByteDance Seed: Seed-2.0-Lite", + "created": 1773157231, + "description": "Seed-2.0-Lite is a versatile, cost‑efficient enterprise workhorse that delivers strong multimodal and agent capabilities while offering noticeably lower latency, making it a practical default choice for most production workloads across...", + "context_length": 262144, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "text", + "image", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000025", + "completion": "0.000002" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 131072, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/bytedance-seed/seed-2.0-lite-20260309/endpoints" + } + }, + { + "id": "qwen/qwen3.5-9b", + "canonical_slug": "qwen/qwen3.5-9b-20260310", + "hugging_face_id": "Qwen/Qwen3.5-9B", + "name": "Qwen: Qwen3.5-9B", + "created": 1773152396, + "description": "Qwen3.5-9B is a multimodal foundation model from the Qwen3.5 family, designed to deliver strong reasoning, coding, and visual understanding in an efficient 9B-parameter architecture. It uses a unified vision-language design...", + "context_length": 262144, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "text", + "image", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000004", + "completion": "0.00000015" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 81920, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3.5-9b-20260310/endpoints" + } + }, + { + "id": "openai/gpt-5.4-pro", + "canonical_slug": "openai/gpt-5.4-pro-20260305", + "hugging_face_id": "", + "name": "OpenAI: GPT-5.4 Pro", + "created": 1772734366, + "description": "GPT-5.4 Pro is OpenAI's most advanced model, building on GPT-5.4's unified architecture with enhanced reasoning capabilities for complex, high-stakes tasks. It features a 1M+ token context window (922K input, 128K...", + "context_length": 1050000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00003", + "completion": "0.00018", + "web_search": "0.01" + }, + "top_provider": { + "context_length": 1050000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5.4-pro-20260305/endpoints" + } + }, + { + "id": "openai/gpt-5.4", + "canonical_slug": "openai/gpt-5.4-20260305", + "hugging_face_id": "", + "name": "OpenAI: GPT-5.4", + "created": 1772734352, + "description": "GPT-5.4 is OpenAI’s latest frontier model, unifying the Codex and GPT lines into a single system. It features a 1M+ token context window (922K input, 128K output) with support for...", + "context_length": 1050000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000025", + "completion": "0.000015", + "web_search": "0.01", + "input_cache_read": "0.00000025" + }, + "top_provider": { + "context_length": 1050000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5.4-20260305/endpoints" + } + }, + { + "id": "inception/mercury-2", + "canonical_slug": "inception/mercury-2-20260304", + "hugging_face_id": null, + "name": "Inception: Mercury 2", + "created": 1772636275, + "description": "Mercury 2 is an extremely fast reasoning LLM, and the first reasoning diffusion LLM (dLLM). Instead of generating tokens sequentially, Mercury 2 produces and refines multiple tokens in parallel, achieving...", + "context_length": 128000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000025", + "completion": "0.00000075", + "input_cache_read": "0.000000025" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 50000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": 0.75, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/inception/mercury-2-20260304/endpoints" + } + }, + { + "id": "openai/gpt-5.3-chat", + "canonical_slug": "openai/gpt-5.3-chat-20260303", + "hugging_face_id": "", + "name": "OpenAI: GPT-5.3 Chat", + "created": 1772564061, + "description": "GPT-5.3 Chat is an update to ChatGPT's most-used model that makes everyday conversations smoother, more useful, and more directly helpful. It delivers more accurate answers with better contextualization and significantly...", + "context_length": 128000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000175", + "completion": "0.000014", + "web_search": "0.01", + "input_cache_read": "0.000000175" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_completion_tokens", + "max_tokens", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5.3-chat-20260303/endpoints" + } + }, + { + "id": "google/gemini-3.1-flash-lite-preview", + "canonical_slug": "google/gemini-3.1-flash-lite-preview-20260303", + "hugging_face_id": "", + "name": "Google: Gemini 3.1 Flash Lite Preview", + "created": 1772512673, + "description": "Gemini 3.1 Flash Lite Preview is Google's high-efficiency model optimized for high-volume use cases. It outperforms Gemini 2.5 Flash Lite on overall quality and approaches Gemini 2.5 Flash performance across...", + "context_length": 1048576, + "architecture": { + "modality": "text+image+file+audio+video->text", + "input_modalities": [ + "text", + "image", + "video", + "file", + "audio" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemini", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000025", + "completion": "0.0000015", + "image": "0.00000025", + "audio": "0.0000005", + "web_search": "0.014", + "internal_reasoning": "0.0000015", + "input_cache_read": "0.000000025", + "input_cache_write": "0.00000008333333333333334" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemini-3.1-flash-lite-preview-20260303/endpoints" + } + }, + { + "id": "bytedance-seed/seed-2.0-mini", + "canonical_slug": "bytedance-seed/seed-2.0-mini-20260224", + "hugging_face_id": "", + "name": "ByteDance Seed: Seed-2.0-Mini", + "created": 1772131107, + "description": "Seed-2.0-mini targets latency-sensitive, high-concurrency, and cost-sensitive scenarios, emphasizing fast response and flexible inference deployment. It delivers performance comparable to ByteDance-Seed-1.6, supports 256k context, four reasoning effort modes (minimal/low/medium/high), multimodal understanding,...", + "context_length": 262144, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "text", + "image", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000001", + "completion": "0.0000004" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 131072, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/bytedance-seed/seed-2.0-mini-20260224/endpoints" + } + }, + { + "id": "google/gemini-3.1-flash-image-preview", + "canonical_slug": "google/gemini-3.1-flash-image-preview-20260226", + "hugging_face_id": "", + "name": "Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)", + "created": 1772119558, + "description": "Gemini 3.1 Flash Image Preview, a.k.a. \"Nano Banana 2,\" is Google’s latest state of the art image generation and editing model, delivering Pro-level visual quality at Flash speed. It combines...", + "context_length": 131072, + "architecture": { + "modality": "text+image->text+image", + "input_modalities": [ + "image", + "text" + ], + "output_modalities": [ + "image", + "text" + ], + "tokenizer": "Gemini", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000005", + "completion": "0.000003", + "web_search": "0.014" + }, + "top_provider": { + "context_length": 65536, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemini-3.1-flash-image-preview-20260226/endpoints" + } + }, + { + "id": "qwen/qwen3.5-35b-a3b", + "canonical_slug": "qwen/qwen3.5-35b-a3b-20260224", + "hugging_face_id": "Qwen/Qwen3.5-35B-A3B", + "name": "Qwen: Qwen3.5-35B-A3B", + "created": 1772053822, + "description": "The Qwen3.5 Series 35B-A3B is a native vision-language model designed with a hybrid architecture that integrates linear attention mechanisms and a sparse mixture-of-experts model, achieving higher inference efficiency. Its overall...", + "context_length": 262144, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "text", + "image", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000014", + "completion": "0.000001", + "input_cache_read": "0.00000005" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 262144, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "top_k": 20, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3.5-35b-a3b-20260224/endpoints" + } + }, + { + "id": "qwen/qwen3.5-27b", + "canonical_slug": "qwen/qwen3.5-27b-20260224", + "hugging_face_id": "Qwen/Qwen3.5-27B", + "name": "Qwen: Qwen3.5-27B", + "created": 1772053810, + "description": "The Qwen3.5 27B native vision-language Dense model incorporates a linear attention mechanism, delivering fast response times while balancing inference speed and performance. Its overall capabilities are comparable to those of...", + "context_length": 262144, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "text", + "image", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000195", + "completion": "0.00000156" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": 0.6, + "top_p": 0.95, + "top_k": 20, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3.5-27b-20260224/endpoints" + } + }, + { + "id": "qwen/qwen3.5-122b-a10b", + "canonical_slug": "qwen/qwen3.5-122b-a10b-20260224", + "hugging_face_id": "Qwen/Qwen3.5-122B-A10B", + "name": "Qwen: Qwen3.5-122B-A10B", + "created": 1772053789, + "description": "The Qwen3.5 122B-A10B native vision-language model is built on a hybrid architecture that integrates a linear attention mechanism with a sparse mixture-of-experts model, achieving higher inference efficiency. In terms of...", + "context_length": 262144, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "text", + "image", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000026", + "completion": "0.00000208" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 262144, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": 0.6, + "top_p": 0.95, + "top_k": 20, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3.5-122b-a10b-20260224/endpoints" + } + }, + { + "id": "qwen/qwen3.5-flash-02-23", + "canonical_slug": "qwen/qwen3.5-flash-20260224", + "hugging_face_id": null, + "name": "Qwen: Qwen3.5-Flash", + "created": 1772053776, + "description": "The Qwen3.5 native vision-language Flash models are built on a hybrid architecture that integrates a linear attention mechanism with a sparse mixture-of-experts model, achieving higher inference efficiency. Compared to the...", + "context_length": 1000000, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "text", + "image", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000065", + "completion": "0.00000026" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3.5-flash-20260224/endpoints" + } + }, + { + "id": "liquid/lfm-2-24b-a2b", + "canonical_slug": "liquid/lfm-2-24b-a2b-20260224", + "hugging_face_id": "LiquidAI/LFM2-24B-A2B", + "name": "LiquidAI: LFM2-24B-A2B", + "created": 1772048711, + "description": "LFM2-24B-A2B is the largest model in the LFM2 family of hybrid architectures designed for efficient on-device deployment. Built as a 24B parameter Mixture-of-Experts model with only 2B active parameters per...", + "context_length": 128000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000003", + "completion": "0.00000012" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.1, + "top_p": null, + "top_k": 50, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": 1.05 + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/liquid/lfm-2-24b-a2b-20260224/endpoints" + } + }, + { + "id": "google/gemini-3.1-pro-preview-customtools", + "canonical_slug": "google/gemini-3.1-pro-preview-customtools-20260219", + "hugging_face_id": null, + "name": "Google: Gemini 3.1 Pro Preview Custom Tools", + "created": 1772045923, + "description": "Gemini 3.1 Pro Preview Custom Tools is a variant of Gemini 3.1 Pro that improves tool selection behavior by preventing overuse of a general bash tool when more efficient third-party...", + "context_length": 1048756, + "architecture": { + "modality": "text+image+file+audio+video->text", + "input_modalities": [ + "text", + "audio", + "image", + "video", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemini", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000002", + "completion": "0.000012", + "image": "0.000002", + "audio": "0.000002", + "web_search": "0.014", + "internal_reasoning": "0.000012", + "input_cache_read": "0.0000002", + "input_cache_write": "0.000000375" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemini-3.1-pro-preview-customtools-20260219/endpoints" + } + }, + { + "id": "openai/gpt-5.3-codex", + "canonical_slug": "openai/gpt-5.3-codex-20260224", + "hugging_face_id": "", + "name": "OpenAI: GPT-5.3-Codex", + "created": 1771959164, + "description": "GPT-5.3-Codex is OpenAI’s most advanced agentic coding model, combining the frontier software engineering performance of GPT-5.2-Codex with the broader reasoning and professional knowledge capabilities of GPT-5.2. It achieves state-of-the-art results...", + "context_length": 400000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000175", + "completion": "0.000014", + "web_search": "0.01", + "input_cache_read": "0.000000175" + }, + "top_provider": { + "context_length": 400000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5.3-codex-20260224/endpoints" + } + }, + { + "id": "aion-labs/aion-2.0", + "canonical_slug": "aion-labs/aion-2.0-20260223", + "hugging_face_id": null, + "name": "AionLabs: Aion-2.0", + "created": 1771881306, + "description": "Aion-2.0 is a variant of DeepSeek V3.2 optimized for immersive roleplaying and storytelling. It is particularly strong at introducing tension, crises, and conflict into stories, making narratives feel more engaging....", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000008", + "completion": "0.0000016", + "input_cache_read": "0.0000002" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "temperature", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/aion-labs/aion-2.0-20260223/endpoints" + } + }, + { + "id": "google/gemini-3.1-pro-preview", + "canonical_slug": "google/gemini-3.1-pro-preview-20260219", + "hugging_face_id": "", + "name": "Google: Gemini 3.1 Pro Preview", + "created": 1771509627, + "description": "Gemini 3.1 Pro Preview is Google’s frontier reasoning model, delivering enhanced software engineering performance, improved agentic reliability, and more efficient token usage across complex workflows. Building on the multimodal foundation...", + "context_length": 1048576, + "architecture": { + "modality": "text+image+file+audio+video->text", + "input_modalities": [ + "audio", + "file", + "image", + "text", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemini", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000002", + "completion": "0.000012", + "image": "0.000002", + "audio": "0.000002", + "web_search": "0.014", + "internal_reasoning": "0.000012", + "input_cache_read": "0.0000002", + "input_cache_write": "0.000000375" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemini-3.1-pro-preview-20260219/endpoints" + } + }, + { + "id": "anthropic/claude-sonnet-4.6", + "canonical_slug": "anthropic/claude-4.6-sonnet-20260217", + "hugging_face_id": "", + "name": "Anthropic: Claude Sonnet 4.6", + "created": 1771342990, + "description": "Sonnet 4.6 is Anthropic's most capable Sonnet-class model yet, with frontier performance across coding, agents, and professional work. It excels at iterative development, complex codebase navigation, end-to-end project management with...", + "context_length": 1000000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Claude", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000003", + "completion": "0.000015", + "web_search": "0.01", + "input_cache_read": "0.0000003", + "input_cache_write": "0.00000375" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p", + "verbosity" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/anthropic/claude-4.6-sonnet-20260217/endpoints" + } + }, + { + "id": "qwen/qwen3.5-plus-02-15", + "canonical_slug": "qwen/qwen3.5-plus-20260216", + "hugging_face_id": "", + "name": "Qwen: Qwen3.5 Plus 2026-02-15", + "created": 1771229416, + "description": "The Qwen3.5 native vision-language series Plus models are built on a hybrid architecture that integrates linear attention mechanisms with sparse mixture-of-experts models, achieving higher inference efficiency. In a variety of...", + "context_length": 1000000, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "text", + "image", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000026", + "completion": "0.00000156" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3.5-plus-20260216/endpoints" + } + }, + { + "id": "qwen/qwen3.5-397b-a17b", + "canonical_slug": "qwen/qwen3.5-397b-a17b-20260216", + "hugging_face_id": "Qwen/Qwen3.5-397B-A17B", + "name": "Qwen: Qwen3.5 397B A17B", + "created": 1771223018, + "description": "The Qwen3.5 series 397B-A17B native vision-language model is built on a hybrid architecture that integrates a linear attention mechanism with a sparse mixture-of-experts model, achieving higher inference efficiency. It delivers...", + "context_length": 262144, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "text", + "image", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000039", + "completion": "0.00000234" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": 0.6, + "top_p": 0.95, + "top_k": 20, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3.5-397b-a17b-20260216/endpoints" + } + }, + { + "id": "minimax/minimax-m2.5:free", + "canonical_slug": "minimax/minimax-m2.5-20260211", + "hugging_face_id": "MiniMaxAI/MiniMax-M2.5", + "name": "MiniMax: MiniMax M2.5 (free)", + "created": 1770908502, + "description": "MiniMax-M2.5 is a SOTA large language model designed for real-world productivity. Trained in a diverse range of complex real-world digital working environments, M2.5 builds upon the coding expertise of M2.1...", + "context_length": 204800, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 196608, + "max_completion_tokens": 8192, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "stop", + "temperature", + "tools" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/minimax/minimax-m2.5-20260211/endpoints" + } + }, + { + "id": "minimax/minimax-m2.5", + "canonical_slug": "minimax/minimax-m2.5-20260211", + "hugging_face_id": "MiniMaxAI/MiniMax-M2.5", + "name": "MiniMax: MiniMax M2.5", + "created": 1770908502, + "description": "MiniMax-M2.5 is a SOTA large language model designed for real-world productivity. Trained in a diverse range of complex real-world digital working environments, M2.5 builds upon the coding expertise of M2.1...", + "context_length": 204800, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000015", + "completion": "0.00000115" + }, + "top_provider": { + "context_length": 196608, + "max_completion_tokens": 196608, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "parallel_tool_calls", + "presence_penalty", + "reasoning", + "reasoning_effort", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/minimax/minimax-m2.5-20260211/endpoints" + } + }, + { + "id": "z-ai/glm-5", + "canonical_slug": "z-ai/glm-5-20260211", + "hugging_face_id": "zai-org/GLM-5", + "name": "Z.ai: GLM 5", + "created": 1770829182, + "description": "GLM-5 is Z.ai’s flagship open-source foundation model engineered for complex systems design and long-horizon agent workflows. Built for expert developers, it delivers production-grade performance on large-scale programming tasks, rivaling leading...", + "context_length": 202752, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000006", + "completion": "0.00000192", + "input_cache_read": "0.00000012" + }, + "top_provider": { + "context_length": 202752, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/z-ai/glm-5-20260211/endpoints" + } + }, + { + "id": "qwen/qwen3-max-thinking", + "canonical_slug": "qwen/qwen3-max-thinking-20260123", + "hugging_face_id": null, + "name": "Qwen: Qwen3 Max Thinking", + "created": 1770671901, + "description": "Qwen3-Max-Thinking is the flagship reasoning model in the Qwen3 series, designed for high-stakes cognitive tasks that require deep, multi-step reasoning. By significantly scaling model capacity and reinforcement learning compute, it...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000078", + "completion": "0.0000039" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-max-thinking-20260123/endpoints" + } + }, + { + "id": "anthropic/claude-opus-4.6", + "canonical_slug": "anthropic/claude-4.6-opus-20260205", + "hugging_face_id": "", + "name": "Anthropic: Claude Opus 4.6", + "created": 1770219050, + "description": "Opus 4.6 is Anthropic’s strongest model for coding and long-running professional tasks. It is built for agents that operate across entire workflows rather than single prompts, making it especially effective...", + "context_length": 1000000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Claude", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000005", + "completion": "0.000025", + "web_search": "0.01", + "input_cache_read": "0.0000005", + "input_cache_write": "0.00000625" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 128000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p", + "verbosity" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/anthropic/claude-4.6-opus-20260205/endpoints" + } + }, + { + "id": "qwen/qwen3-coder-next", + "canonical_slug": "qwen/qwen3-coder-next-2025-02-03", + "hugging_face_id": "Qwen/Qwen3-Coder-Next", + "name": "Qwen: Qwen3 Coder Next", + "created": 1770164101, + "description": "Qwen3-Coder-Next is an open-weight causal language model optimized for coding agents and local development workflows. It uses a sparse MoE design with 80B total parameters and only 3B activated per...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000011", + "completion": "0.0000008", + "input_cache_read": "0.00000007" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 262144, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-coder-next-2025-02-03/endpoints" + } + }, + { + "id": "openrouter/free", + "canonical_slug": "openrouter/free", + "hugging_face_id": "", + "name": "Free Models Router", + "created": 1769917427, + "description": "The simplest way to get free inference. openrouter/free is a router that selects free models at random from the models available on OpenRouter. The router smartly filters for models that...", + "context_length": 200000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Router", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": null, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openrouter/free/endpoints" + } + }, + { + "id": "stepfun/step-3.5-flash", + "canonical_slug": "stepfun/step-3.5-flash", + "hugging_face_id": "stepfun-ai/Step-3.5-Flash", + "name": "StepFun: Step 3.5 Flash", + "created": 1769728337, + "description": "Step 3.5 Flash is StepFun's most capable open-source foundation model. Built on a sparse Mixture of Experts (MoE) architecture, it selectively activates only 11B of its 196B parameters per token....", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000009", + "completion": "0.0000003", + "input_cache_read": "0.00000002" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/stepfun/step-3.5-flash/endpoints" + } + }, + { + "id": "moonshotai/kimi-k2.5", + "canonical_slug": "moonshotai/kimi-k2.5-0127", + "hugging_face_id": "moonshotai/Kimi-K2.5", + "name": "MoonshotAI: Kimi K2.5", + "created": 1769487076, + "description": "Kimi K2.5 is Moonshot AI's native multimodal model, delivering state-of-the-art visual coding capability and a self-directed agent swarm paradigm. Built on Kimi K2 with continued pretraining over approximately 15T mixed...", + "context_length": 262144, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000004", + "completion": "0.0000019", + "input_cache_read": "0.00000009" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 262144, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/moonshotai/kimi-k2.5-0127/endpoints" + } + }, + { + "id": "minimax/minimax-m2-her", + "canonical_slug": "minimax/minimax-m2-her-20260123", + "hugging_face_id": "", + "name": "MiniMax: MiniMax M2-her", + "created": 1769177239, + "description": "MiniMax M2-her is a dialogue-first large language model built for immersive roleplay, character-driven chat, and expressive multi-turn conversations. Designed to stay consistent in tone and personality, it supports rich message...", + "context_length": 65536, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000003", + "completion": "0.0000012", + "input_cache_read": "0.00000003" + }, + "top_provider": { + "context_length": 65536, + "max_completion_tokens": 2048, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "temperature", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/minimax/minimax-m2-her-20260123/endpoints" + } + }, + { + "id": "writer/palmyra-x5", + "canonical_slug": "writer/palmyra-x5-20250428", + "hugging_face_id": "", + "name": "Writer: Palmyra X5", + "created": 1769003823, + "description": "Palmyra X5 is Writer's most advanced model, purpose-built for building and scaling AI agents across the enterprise. It delivers industry-leading speed and efficiency on context windows up to 1 million...", + "context_length": 1040000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000006", + "completion": "0.000006" + }, + "top_provider": { + "context_length": 1040000, + "max_completion_tokens": 8192, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/writer/palmyra-x5-20250428/endpoints" + } + }, + { + "id": "liquid/lfm-2.5-1.2b-thinking:free", + "canonical_slug": "liquid/lfm-2.5-1.2b-thinking-20260120", + "hugging_face_id": "LiquidAI/LFM2.5-1.2B-Thinking", + "name": "LiquidAI: LFM2.5-1.2B-Thinking (free)", + "created": 1768927527, + "description": "LFM2.5-1.2B-Thinking is a lightweight reasoning-focused model optimized for agentic tasks, data extraction, and RAG—while still running comfortably on edge devices. It supports long context (up to 32K tokens) and is...", + "context_length": 32768, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/liquid/lfm-2.5-1.2b-thinking-20260120/endpoints" + } + }, + { + "id": "liquid/lfm-2.5-1.2b-instruct:free", + "canonical_slug": "liquid/lfm-2.5-1.2b-instruct-20260120", + "hugging_face_id": "LiquidAI/LFM2.5-1.2B-Instruct", + "name": "LiquidAI: LFM2.5-1.2B-Instruct (free)", + "created": 1768927521, + "description": "LFM2.5-1.2B-Instruct is a compact, high-performance instruction-tuned model built for fast on-device AI. It delivers strong chat quality in a 1.2B parameter footprint, with efficient edge inference and broad runtime support.", + "context_length": 32768, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/liquid/lfm-2.5-1.2b-instruct-20260120/endpoints" + } + }, + { + "id": "openai/gpt-audio", + "canonical_slug": "openai/gpt-audio", + "hugging_face_id": "", + "name": "OpenAI: GPT Audio", + "created": 1768862569, + "description": "The gpt-audio model is OpenAI's first generally available audio model. The new snapshot features an upgraded decoder for more natural sounding voices and maintains better voice consistency. Audio is priced...", + "context_length": 128000, + "architecture": { + "modality": "text+audio->text+audio", + "input_modalities": [ + "text", + "audio" + ], + "output_modalities": [ + "text", + "audio" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000025", + "completion": "0.00001", + "audio": "0.000032" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 16384, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-audio/endpoints" + } + }, + { + "id": "openai/gpt-audio-mini", + "canonical_slug": "openai/gpt-audio-mini", + "hugging_face_id": "", + "name": "OpenAI: GPT Audio Mini", + "created": 1768859419, + "description": "A cost-efficient version of GPT Audio. The new snapshot features an upgraded decoder for more natural sounding voices and maintains better voice consistency. Input is priced at $0.60 per million...", + "context_length": 128000, + "architecture": { + "modality": "text+audio->text+audio", + "input_modalities": [ + "text", + "audio" + ], + "output_modalities": [ + "text", + "audio" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000006", + "completion": "0.0000024", + "audio": "0.0000006" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 16384, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-audio-mini/endpoints" + } + }, + { + "id": "z-ai/glm-4.7-flash", + "canonical_slug": "z-ai/glm-4.7-flash-20260119", + "hugging_face_id": "zai-org/GLM-4.7-Flash", + "name": "Z.ai: GLM 4.7 Flash", + "created": 1768833913, + "description": "As a 30B-class SOTA model, GLM-4.7-Flash offers a new option that balances performance and efficiency. It is further optimized for agentic coding use cases, strengthening coding capabilities, long-horizon task planning,...", + "context_length": 202752, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000006", + "completion": "0.0000004", + "input_cache_read": "0.00000001" + }, + "top_provider": { + "context_length": 202752, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/z-ai/glm-4.7-flash-20260119/endpoints" + } + }, + { + "id": "openai/gpt-5.2-codex", + "canonical_slug": "openai/gpt-5.2-codex-20260114", + "hugging_face_id": "", + "name": "OpenAI: GPT-5.2-Codex", + "created": 1768409315, + "description": "GPT-5.2-Codex is an upgraded version of GPT-5.1-Codex optimized for software engineering and coding workflows. It is designed for both interactive development sessions and long, independent execution of complex engineering tasks....", + "context_length": 400000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000175", + "completion": "0.000014", + "web_search": "0.01", + "input_cache_read": "0.000000175" + }, + "top_provider": { + "context_length": 400000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5.2-codex-20260114/endpoints" + } + }, + { + "id": "bytedance-seed/seed-1.6-flash", + "canonical_slug": "bytedance-seed/seed-1.6-flash-20250625", + "hugging_face_id": "", + "name": "ByteDance Seed: Seed 1.6 Flash", + "created": 1766505011, + "description": "Seed 1.6 Flash is an ultra-fast multimodal deep thinking model by ByteDance Seed, supporting both text and visual understanding. It features a 256k context window and can generate outputs of...", + "context_length": 262144, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "image", + "text", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000075", + "completion": "0.0000003" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/bytedance-seed/seed-1.6-flash-20250625/endpoints" + } + }, + { + "id": "bytedance-seed/seed-1.6", + "canonical_slug": "bytedance-seed/seed-1.6-20250625", + "hugging_face_id": "", + "name": "ByteDance Seed: Seed 1.6", + "created": 1766504997, + "description": "Seed 1.6 is a general-purpose model released by the ByteDance Seed team. It incorporates multimodal capabilities and adaptive deep thinking with a 256K context window.", + "context_length": 262144, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "image", + "text", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000025", + "completion": "0.000002" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/bytedance-seed/seed-1.6-20250625/endpoints" + } + }, + { + "id": "minimax/minimax-m2.1", + "canonical_slug": "minimax/minimax-m2.1", + "hugging_face_id": "MiniMaxAI/MiniMax-M2.1", + "name": "MiniMax: MiniMax M2.1", + "created": 1766454997, + "description": "MiniMax-M2.1 is a lightweight, state-of-the-art large language model optimized for coding, agentic workflows, and modern application development. With only 10 billion activated parameters, it delivers a major jump in real-world...", + "context_length": 204800, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000029", + "completion": "0.00000095", + "input_cache_read": "0.00000003" + }, + "top_provider": { + "context_length": 196608, + "max_completion_tokens": 196608, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.9, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/minimax/minimax-m2.1/endpoints" + } + }, + { + "id": "z-ai/glm-4.7", + "canonical_slug": "z-ai/glm-4.7-20251222", + "hugging_face_id": "zai-org/GLM-4.7", + "name": "Z.ai: GLM 4.7", + "created": 1766378014, + "description": "GLM-4.7 is Z.ai’s latest flagship model, featuring upgrades in two key areas: enhanced programming capabilities and more stable multi-step reasoning/execution. It demonstrates significant improvements in executing complex agent tasks while...", + "context_length": 202752, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000004", + "completion": "0.00000175", + "input_cache_read": "0.00000008" + }, + "top_provider": { + "context_length": 202752, + "max_completion_tokens": 131072, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/z-ai/glm-4.7-20251222/endpoints" + } + }, + { + "id": "google/gemini-3-flash-preview", + "canonical_slug": "google/gemini-3-flash-preview-20251217", + "hugging_face_id": "", + "name": "Google: Gemini 3 Flash Preview", + "created": 1765987078, + "description": "Gemini 3 Flash Preview is a high speed, high value thinking model designed for agentic workflows, multi turn chat, and coding assistance. It delivers near Pro level reasoning and tool...", + "context_length": 1048576, + "architecture": { + "modality": "text+image+file+audio+video->text", + "input_modalities": [ + "text", + "image", + "file", + "audio", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemini", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000005", + "completion": "0.000003", + "image": "0.0000005", + "audio": "0.000001", + "web_search": "0.014", + "internal_reasoning": "0.000003", + "input_cache_read": "0.00000005", + "input_cache_write": "0.00000008333333333333334" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemini-3-flash-preview-20251217/endpoints" + } + }, + { + "id": "xiaomi/mimo-v2-flash", + "canonical_slug": "xiaomi/mimo-v2-flash-20251210", + "hugging_face_id": "XiaomiMiMo/MiMo-V2-Flash", + "name": "Xiaomi: MiMo-V2-Flash", + "created": 1765731308, + "description": "MiMo-V2-Flash is an open-source foundation language model developed by Xiaomi. It is a Mixture-of-Experts model with 309B total parameters and 15B active parameters, adopting hybrid attention architecture. MiMo-V2-Flash supports a...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000001", + "completion": "0.0000003", + "input_cache_read": "0.00000001" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": 0.95, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/xiaomi/mimo-v2-flash-20251210/endpoints" + } + }, + { + "id": "nvidia/nemotron-3-nano-30b-a3b:free", + "canonical_slug": "nvidia/nemotron-3-nano-30b-a3b", + "hugging_face_id": "nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16", + "name": "NVIDIA: Nemotron 3 Nano 30B A3B (free)", + "created": 1765731275, + "description": "NVIDIA Nemotron 3 Nano 30B A3B is a small language MoE model with highest compute efficiency and accuracy for developers to build specialized agentic AI systems. The model is fully...", + "context_length": 256000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 256000, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "seed", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/nvidia/nemotron-3-nano-30b-a3b/endpoints" + } + }, + { + "id": "nvidia/nemotron-3-nano-30b-a3b", + "canonical_slug": "nvidia/nemotron-3-nano-30b-a3b", + "hugging_face_id": "nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16", + "name": "NVIDIA: Nemotron 3 Nano 30B A3B", + "created": 1765731275, + "description": "NVIDIA Nemotron 3 Nano 30B A3B is a small language MoE model with highest compute efficiency and accuracy for developers to build specialized agentic AI systems. The model is fully...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000005", + "completion": "0.0000002" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 228000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/nvidia/nemotron-3-nano-30b-a3b/endpoints" + } + }, + { + "id": "openai/gpt-5.2-chat", + "canonical_slug": "openai/gpt-5.2-chat-20251211", + "hugging_face_id": "", + "name": "OpenAI: GPT-5.2 Chat", + "created": 1765389783, + "description": "GPT-5.2 Chat (AKA Instant) is the fast, lightweight member of the 5.2 family, optimized for low-latency chat while retaining strong general intelligence. It uses adaptive reasoning to selectively “think” on...", + "context_length": 128000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "file", + "image", + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000175", + "completion": "0.000014", + "web_search": "0.01", + "input_cache_read": "0.000000175" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 16384, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "max_completion_tokens", + "max_tokens", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": "2026-08-10", + "links": { + "details": "/api/v1/models/openai/gpt-5.2-chat-20251211/endpoints" + } + }, + { + "id": "openai/gpt-5.2-pro", + "canonical_slug": "openai/gpt-5.2-pro-20251211", + "hugging_face_id": "", + "name": "OpenAI: GPT-5.2 Pro", + "created": 1765389780, + "description": "GPT-5.2 Pro is OpenAI’s most advanced model, offering major improvements in agentic coding and long context performance over GPT-5 Pro. It is optimized for complex tasks that require step-by-step reasoning,...", + "context_length": 400000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "image", + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000021", + "completion": "0.000168", + "web_search": "0.01" + }, + "top_provider": { + "context_length": 400000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5.2-pro-20251211/endpoints" + } + }, + { + "id": "openai/gpt-5.2", + "canonical_slug": "openai/gpt-5.2-20251211", + "hugging_face_id": "", + "name": "OpenAI: GPT-5.2", + "created": 1765389775, + "description": "GPT-5.2 is the latest frontier-grade model in the GPT-5 series, offering stronger agentic and long context perfomance compared to GPT-5.1. It uses adaptive reasoning to allocate computation dynamically, responding quickly...", + "context_length": 400000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "file", + "image", + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000175", + "completion": "0.000014", + "web_search": "0.01", + "input_cache_read": "0.000000175" + }, + "top_provider": { + "context_length": 400000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5.2-20251211/endpoints" + } + }, + { + "id": "mistralai/devstral-2512", + "canonical_slug": "mistralai/devstral-2512", + "hugging_face_id": "mistralai/Devstral-2-123B-Instruct-2512", + "name": "Mistral: Devstral 2 2512", + "created": 1765285419, + "description": "Devstral 2 is a state-of-the-art open-source model by Mistral AI specializing in agentic coding. It is a 123B-parameter dense transformer model supporting a 256K context window. Devstral 2 supports exploring...", + "context_length": 262144, + "architecture": { + "modality": "text+file->text", + "input_modalities": [ + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000004", + "completion": "0.000002", + "input_cache_read": "0.00000004" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 0.3, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/devstral-2512/endpoints" + } + }, + { + "id": "relace/relace-search", + "canonical_slug": "relace/relace-search-20251208", + "hugging_face_id": null, + "name": "Relace: Relace Search", + "created": 1765213560, + "description": "The relace-search model uses 4-12 `view_file` and `grep` tools in parallel to explore a codebase and return relevant files to the user request. In contrast to RAG, relace-search performs agentic...", + "context_length": 256000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000001", + "completion": "0.000003" + }, + "top_provider": { + "context_length": 256000, + "max_completion_tokens": 128000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/relace/relace-search-20251208/endpoints" + } + }, + { + "id": "z-ai/glm-4.6v", + "canonical_slug": "z-ai/glm-4.6-20251208", + "hugging_face_id": "zai-org/GLM-4.6V", + "name": "Z.ai: GLM 4.6V", + "created": 1765207462, + "description": "GLM-4.6V is a large multimodal model designed for high-fidelity visual understanding and long-context reasoning across images, documents, and mixed media. It supports up to 128K tokens, processes complex page layouts...", + "context_length": 131072, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "image", + "text", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000003", + "completion": "0.0000009", + "input_cache_read": "0.00000005" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 24000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.8, + "top_p": 0.6, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/z-ai/glm-4.6-20251208/endpoints" + } + }, + { + "id": "nex-agi/deepseek-v3.1-nex-n1", + "canonical_slug": "nex-agi/deepseek-v3.1-nex-n1", + "hugging_face_id": "nex-agi/DeepSeek-V3.1-Nex-N1", + "name": "Nex AGI: DeepSeek V3.1 Nex N1", + "created": 1765204393, + "description": "DeepSeek V3.1 Nex-N1 is the flagship release of the Nex-N1 series — a post-trained model designed to highlight agent autonomy, tool use, and real-world productivity. Nex-N1 demonstrates competitive performance across...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "DeepSeek", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000135", + "completion": "0.0000005" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 163840, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "response_format", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/nex-agi/deepseek-v3.1-nex-n1/endpoints" + } + }, + { + "id": "essentialai/rnj-1-instruct", + "canonical_slug": "essentialai/rnj-1-instruct", + "hugging_face_id": "EssentialAI/rnj-1-instruct", + "name": "EssentialAI: Rnj 1 Instruct", + "created": 1765094847, + "description": "Rnj-1 is an 8B-parameter, dense, open-weight model family developed by Essential AI and trained from scratch with a focus on programming, math, and scientific reasoning. The model demonstrates strong performance...", + "context_length": 32768, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000015", + "completion": "0.00000015" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/essentialai/rnj-1-instruct/endpoints" + } + }, + { + "id": "openrouter/bodybuilder", + "canonical_slug": "openrouter/bodybuilder", + "hugging_face_id": "", + "name": "Body Builder (beta)", + "created": 1764903653, + "description": "Transform your natural language requests into structured OpenRouter API request objects. Describe what you want to accomplish with AI models, and Body Builder will construct the appropriate API calls. Example:...", + "context_length": 128000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Router", + "instruct_type": null + }, + "pricing": { + "prompt": "-1", + "completion": "-1" + }, + "top_provider": { + "context_length": null, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openrouter/bodybuilder/endpoints" + } + }, + { + "id": "openai/gpt-5.1-codex-max", + "canonical_slug": "openai/gpt-5.1-codex-max-20251204", + "hugging_face_id": "", + "name": "OpenAI: GPT-5.1-Codex-Max", + "created": 1764878934, + "description": "GPT-5.1-Codex-Max is OpenAI’s latest agentic coding model, designed for long-running, high-context software development tasks. It is based on an updated version of the 5.1 reasoning stack and trained on agentic...", + "context_length": 400000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000125", + "completion": "0.00001", + "web_search": "0.01", + "input_cache_read": "0.000000125" + }, + "top_provider": { + "context_length": 400000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5.1-codex-max-20251204/endpoints" + } + }, + { + "id": "amazon/nova-2-lite-v1", + "canonical_slug": "amazon/nova-2-lite-v1", + "hugging_face_id": "", + "name": "Amazon: Nova 2 Lite", + "created": 1764696672, + "description": "Nova 2 Lite is a fast, cost-effective reasoning model for everyday workloads that can process text, images, and videos to generate text. Nova 2 Lite demonstrates standout capabilities in processing...", + "context_length": 1000000, + "architecture": { + "modality": "text+image+file+video->text", + "input_modalities": [ + "text", + "image", + "video", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Nova", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000003", + "completion": "0.0000025" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 65535, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/amazon/nova-2-lite-v1/endpoints" + } + }, + { + "id": "mistralai/ministral-14b-2512", + "canonical_slug": "mistralai/ministral-14b-2512", + "hugging_face_id": "mistralai/Ministral-3-14B-Instruct-2512", + "name": "Mistral: Ministral 3 14B 2512", + "created": 1764681735, + "description": "The largest model in the Ministral 3 family, Ministral 3 14B offers frontier capabilities and performance comparable to its larger Mistral Small 3.2 24B counterpart. A powerful and efficient language...", + "context_length": 262144, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000002", + "completion": "0.0000002", + "input_cache_read": "0.00000002" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logprobs", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": 0.3, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/ministral-14b-2512/endpoints" + } + }, + { + "id": "mistralai/ministral-8b-2512", + "canonical_slug": "mistralai/ministral-8b-2512", + "hugging_face_id": "mistralai/Ministral-3-8B-Instruct-2512", + "name": "Mistral: Ministral 3 8B 2512", + "created": 1764681654, + "description": "A balanced model in the Ministral 3 family, Ministral 3 8B is a powerful, efficient tiny language model with vision capabilities.", + "context_length": 262144, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000015", + "completion": "0.00000015", + "input_cache_read": "0.000000015" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logprobs", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": 0.3, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/ministral-8b-2512/endpoints" + } + }, + { + "id": "mistralai/ministral-3b-2512", + "canonical_slug": "mistralai/ministral-3b-2512", + "hugging_face_id": "mistralai/Ministral-3-3B-Instruct-2512", + "name": "Mistral: Ministral 3 3B 2512", + "created": 1764681560, + "description": "The smallest model in the Ministral 3 family, Ministral 3 3B is a powerful, efficient tiny language model with vision capabilities.", + "context_length": 131072, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000001", + "completion": "0.0000001", + "input_cache_read": "0.00000001" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logprobs", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": 0.3, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/ministral-3b-2512/endpoints" + } + }, + { + "id": "mistralai/mistral-large-2512", + "canonical_slug": "mistralai/mistral-large-2512", + "hugging_face_id": "", + "name": "Mistral: Mistral Large 3 2512", + "created": 1764624472, + "description": "Mistral Large 3 2512 is Mistral’s most capable model to date, featuring a sparse mixture-of-experts architecture with 41B active parameters (675B total), and released under the Apache 2.0 license.", + "context_length": 262144, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000005", + "completion": "0.0000015", + "input_cache_read": "0.00000005" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 0.0645, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/mistral-large-2512/endpoints" + } + }, + { + "id": "arcee-ai/trinity-mini", + "canonical_slug": "arcee-ai/trinity-mini-20251201", + "hugging_face_id": "arcee-ai/Trinity-Mini", + "name": "Arcee AI: Trinity Mini", + "created": 1764601720, + "description": "Trinity Mini is a 26B-parameter (3B active) sparse mixture-of-experts language model featuring 128 experts with 8 active per token. Engineered for efficient reasoning over long contexts (131k) with robust function...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000045", + "completion": "0.00000015" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 131072, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 0.15, + "top_p": 0.75, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/arcee-ai/trinity-mini-20251201/endpoints" + } + }, + { + "id": "deepseek/deepseek-v3.2", + "canonical_slug": "deepseek/deepseek-v3.2-20251201", + "hugging_face_id": "deepseek-ai/DeepSeek-V3.2", + "name": "DeepSeek: DeepSeek V3.2", + "created": 1764594642, + "description": "DeepSeek-V3.2 is a large language model designed to harmonize high computational efficiency with strong reasoning and agentic tool-use performance. It introduces DeepSeek Sparse Attention (DSA), a fine-grained sparse attention mechanism...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "DeepSeek", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000252", + "completion": "0.000000378", + "input_cache_read": "0.0000000252" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/deepseek/deepseek-v3.2-20251201/endpoints" + } + }, + { + "id": "prime-intellect/intellect-3", + "canonical_slug": "prime-intellect/intellect-3-20251126", + "hugging_face_id": "PrimeIntellect/INTELLECT-3-FP8", + "name": "Prime Intellect: INTELLECT-3", + "created": 1764212534, + "description": "INTELLECT-3 is a 106B-parameter Mixture-of-Experts model (12B active) post-trained from GLM-4.5-Air-Base using supervised fine-tuning (SFT) followed by large-scale reinforcement learning (RL). It offers state-of-the-art performance for its size across math,...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000002", + "completion": "0.0000011" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 131072, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.6, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/prime-intellect/intellect-3-20251126/endpoints" + } + }, + { + "id": "anthropic/claude-opus-4.5", + "canonical_slug": "anthropic/claude-4.5-opus-20251124", + "hugging_face_id": "", + "name": "Anthropic: Claude Opus 4.5", + "created": 1764010580, + "description": "Claude Opus 4.5 is Anthropic’s frontier reasoning model optimized for complex software engineering, agentic workflows, and long-horizon computer use. It offers strong multimodal capabilities, competitive performance across real-world coding and...", + "context_length": 200000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "file", + "image", + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Claude", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000005", + "completion": "0.000025", + "web_search": "0.01", + "input_cache_read": "0.0000005", + "input_cache_write": "0.00000625" + }, + "top_provider": { + "context_length": 200000, + "max_completion_tokens": 64000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "verbosity" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/anthropic/claude-4.5-opus-20251124/endpoints" + } + }, + { + "id": "allenai/olmo-3-32b-think", + "canonical_slug": "allenai/olmo-3-32b-think-20251121", + "hugging_face_id": "allenai/Olmo-3-32B-Think", + "name": "AllenAI: Olmo 3 32B Think", + "created": 1763758276, + "description": "Olmo 3 32B Think is a large-scale, 32-billion-parameter model purpose-built for deep reasoning, complex logic chains and advanced instruction-following scenarios. Its capacity enables strong performance on demanding evaluation tasks and...", + "context_length": 65536, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000015", + "completion": "0.0000005" + }, + "top_provider": { + "context_length": 65536, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.6, + "top_p": 0.95, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/allenai/olmo-3-32b-think-20251121/endpoints" + } + }, + { + "id": "google/gemini-3-pro-image-preview", + "canonical_slug": "google/gemini-3-pro-image-preview-20251120", + "hugging_face_id": "", + "name": "Google: Nano Banana Pro (Gemini 3 Pro Image Preview)", + "created": 1763653797, + "description": "Nano Banana Pro is Google’s most advanced image-generation and editing model, built on Gemini 3 Pro. It extends the original Nano Banana with significantly improved multimodal reasoning, real-world grounding, and...", + "context_length": 65536, + "architecture": { + "modality": "text+image->text+image", + "input_modalities": [ + "image", + "text" + ], + "output_modalities": [ + "image", + "text" + ], + "tokenizer": "Gemini", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000002", + "completion": "0.000012", + "image": "0.000002", + "audio": "0.000002", + "web_search": "0.014", + "internal_reasoning": "0.000012", + "input_cache_read": "0.0000002", + "input_cache_write": "0.000000375" + }, + "top_provider": { + "context_length": 65536, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemini-3-pro-image-preview-20251120/endpoints" + } + }, + { + "id": "deepcogito/cogito-v2.1-671b", + "canonical_slug": "deepcogito/cogito-v2.1-671b-20251118", + "hugging_face_id": "", + "name": "Deep Cogito: Cogito v2.1 671B", + "created": 1763071233, + "description": "Cogito v2.1 671B MoE represents one of the strongest open models globally, matching performance of frontier closed and open models. This model is trained using self play with reinforcement learning...", + "context_length": 128000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000125", + "completion": "0.00000125" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "stop", + "structured_outputs", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/deepcogito/cogito-v2.1-671b-20251118/endpoints" + } + }, + { + "id": "openai/gpt-5.1", + "canonical_slug": "openai/gpt-5.1-20251113", + "hugging_face_id": "", + "name": "OpenAI: GPT-5.1", + "created": 1763060305, + "description": "GPT-5.1 is the latest frontier-grade model in the GPT-5 series, offering stronger general-purpose reasoning, improved instruction adherence, and a more natural conversational style compared to GPT-5. It uses adaptive reasoning...", + "context_length": 400000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "image", + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000125", + "completion": "0.00001", + "web_search": "0.01", + "input_cache_read": "0.00000013" + }, + "top_provider": { + "context_length": 400000, + "max_completion_tokens": 128000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5.1-20251113/endpoints" + } + }, + { + "id": "openai/gpt-5.1-chat", + "canonical_slug": "openai/gpt-5.1-chat-20251113", + "hugging_face_id": "", + "name": "OpenAI: GPT-5.1 Chat", + "created": 1763060302, + "description": "GPT-5.1 Chat (AKA Instant is the fast, lightweight member of the 5.1 family, optimized for low-latency chat while retaining strong general intelligence. It uses adaptive reasoning to selectively “think” on...", + "context_length": 128000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "file", + "image", + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000125", + "completion": "0.00001", + "web_search": "0.01", + "input_cache_read": "0.00000013" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 32000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_completion_tokens", + "max_tokens", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5.1-chat-20251113/endpoints" + } + }, + { + "id": "openai/gpt-5.1-codex", + "canonical_slug": "openai/gpt-5.1-codex-20251113", + "hugging_face_id": "", + "name": "OpenAI: GPT-5.1-Codex", + "created": 1763060298, + "description": "GPT-5.1-Codex is a specialized version of GPT-5.1 optimized for software engineering and coding workflows. It is designed for both interactive development sessions and long, independent execution of complex engineering tasks....", + "context_length": 400000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000125", + "completion": "0.00001", + "web_search": "0.01", + "input_cache_read": "0.00000013" + }, + "top_provider": { + "context_length": 400000, + "max_completion_tokens": 128000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5.1-codex-20251113/endpoints" + } + }, + { + "id": "openai/gpt-5.1-codex-mini", + "canonical_slug": "openai/gpt-5.1-codex-mini-20251113", + "hugging_face_id": "", + "name": "OpenAI: GPT-5.1-Codex-Mini", + "created": 1763057820, + "description": "GPT-5.1-Codex-Mini is a smaller and faster version of GPT-5.1-Codex", + "context_length": 400000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "image", + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000025", + "completion": "0.000002", + "web_search": "0.01", + "input_cache_read": "0.000000025" + }, + "top_provider": { + "context_length": 400000, + "max_completion_tokens": 100000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5.1-codex-mini-20251113/endpoints" + } + }, + { + "id": "moonshotai/kimi-k2-thinking", + "canonical_slug": "moonshotai/kimi-k2-thinking-20251106", + "hugging_face_id": "moonshotai/Kimi-K2-Thinking", + "name": "MoonshotAI: Kimi K2 Thinking", + "created": 1762440622, + "description": "Kimi K2 Thinking is Moonshot AI’s most advanced open reasoning model to date, extending the K2 series into agentic, long-horizon reasoning. Built on the trillion-parameter Mixture-of-Experts (MoE) architecture introduced in...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000006", + "completion": "0.0000025" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 262144, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/moonshotai/kimi-k2-thinking-20251106/endpoints" + } + }, + { + "id": "amazon/nova-premier-v1", + "canonical_slug": "amazon/nova-premier-v1", + "hugging_face_id": "", + "name": "Amazon: Nova Premier 1.0", + "created": 1761950332, + "description": "Amazon Nova Premier is the most capable of Amazon’s multimodal models for complex reasoning tasks and for use as the best teacher for distilling custom models.", + "context_length": 1000000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Nova", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000025", + "completion": "0.0000125", + "input_cache_read": "0.000000625" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 32000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "stop", + "temperature", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/amazon/nova-premier-v1/endpoints" + } + }, + { + "id": "perplexity/sonar-pro-search", + "canonical_slug": "perplexity/sonar-pro-search", + "hugging_face_id": "", + "name": "Perplexity: Sonar Pro Search", + "created": 1761854366, + "description": "Exclusively available on the OpenRouter API, Sonar Pro's new Pro Search mode is Perplexity's most advanced agentic search system. It is designed for deeper reasoning and analysis. Pricing is based...", + "context_length": 200000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000003", + "completion": "0.000015", + "web_search": "0.018" + }, + "top_provider": { + "context_length": 200000, + "max_completion_tokens": 8000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "structured_outputs", + "temperature", + "top_k", + "top_p", + "web_search_options" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/perplexity/sonar-pro-search/endpoints" + } + }, + { + "id": "mistralai/voxtral-small-24b-2507", + "canonical_slug": "mistralai/voxtral-small-24b-2507", + "hugging_face_id": "mistralai/Voxtral-Small-24B-2507", + "name": "Mistral: Voxtral Small 24B 2507", + "created": 1761835144, + "description": "Voxtral Small is an enhancement of Mistral Small 3, incorporating state-of-the-art audio input capabilities while retaining best-in-class text performance. It excels at speech transcription, translation and audio understanding. Input audio...", + "context_length": 32000, + "architecture": { + "modality": "text+file+audio->text", + "input_modalities": [ + "text", + "audio", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000001", + "completion": "0.0000003", + "audio": "0.0001", + "input_cache_read": "0.00000001" + }, + "top_provider": { + "context_length": 32000, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 0.2, + "top_p": 0.95, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/voxtral-small-24b-2507/endpoints" + } + }, + { + "id": "openai/gpt-oss-safeguard-20b", + "canonical_slug": "openai/gpt-oss-safeguard-20b", + "hugging_face_id": "openai/gpt-oss-safeguard-20b", + "name": "OpenAI: gpt-oss-safeguard-20b", + "created": 1761752836, + "description": "gpt-oss-safeguard-20b is a safety reasoning model from OpenAI built upon gpt-oss-20b. This open-weight, 21B-parameter Mixture-of-Experts (MoE) model offers lower latency for safety tasks like content classification, LLM filtering, and trust...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000075", + "completion": "0.0000003", + "input_cache_read": "0.000000037" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-oss-safeguard-20b/endpoints" + } + }, + { + "id": "nvidia/nemotron-nano-12b-v2-vl:free", + "canonical_slug": "nvidia/nemotron-nano-12b-v2-vl", + "hugging_face_id": "nvidia/NVIDIA-Nemotron-Nano-12B-v2-VL-BF16", + "name": "NVIDIA: Nemotron Nano 12B 2 VL (free)", + "created": 1761675565, + "description": "NVIDIA Nemotron Nano 2 VL is a 12-billion-parameter open multimodal reasoning model designed for video understanding and document intelligence. It introduces a hybrid Transformer-Mamba architecture, combining transformer-level accuracy with Mamba’s...", + "context_length": 128000, + "architecture": { + "modality": "text+image+video->text", + "input_modalities": [ + "image", + "text", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 128000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "seed", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/nvidia/nemotron-nano-12b-v2-vl/endpoints" + } + }, + { + "id": "minimax/minimax-m2", + "canonical_slug": "minimax/minimax-m2", + "hugging_face_id": "MiniMaxAI/MiniMax-M2", + "name": "MiniMax: MiniMax M2", + "created": 1761252093, + "description": "MiniMax-M2 is a compact, high-efficiency large language model optimized for end-to-end coding and agentic workflows. With 10 billion activated parameters (230 billion total), it delivers near-frontier intelligence across general reasoning,...", + "context_length": 204800, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000255", + "completion": "0.000001", + "input_cache_read": "0.00000003" + }, + "top_provider": { + "context_length": 196608, + "max_completion_tokens": 196608, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/minimax/minimax-m2/endpoints" + } + }, + { + "id": "qwen/qwen3-vl-32b-instruct", + "canonical_slug": "qwen/qwen3-vl-32b-instruct", + "hugging_face_id": "Qwen/Qwen3-VL-32B-Instruct", + "name": "Qwen: Qwen3 VL 32B Instruct", + "created": 1761231332, + "description": "Qwen3-VL-32B-Instruct is a large-scale multimodal vision-language model designed for high-precision understanding and reasoning across text, images, and video. With 32 billion parameters, it combines deep visual perception with advanced text...", + "context_length": 262144, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000104", + "completion": "0.000000416" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 0.7, + "top_p": 0.8, + "top_k": 20, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": 1 + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-vl-32b-instruct/endpoints" + } + }, + { + "id": "ibm-granite/granite-4.0-h-micro", + "canonical_slug": "ibm-granite/granite-4.0-h-micro", + "hugging_face_id": "ibm-granite/granite-4.0-h-micro", + "name": "IBM: Granite 4.0 Micro", + "created": 1760927695, + "description": "Granite-4.0-H-Micro is a 3B parameter from the Granite 4 family of models. These models are the latest in a series of models released by IBM. They are fine-tuned for long...", + "context_length": 131000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000017", + "completion": "0.000000112" + }, + "top_provider": { + "context_length": 131000, + "max_completion_tokens": 131000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/ibm-granite/granite-4.0-h-micro/endpoints" + } + }, + { + "id": "microsoft/phi-4-mini-instruct", + "canonical_slug": "microsoft/phi-4-mini-instruct", + "hugging_face_id": "microsoft/Phi-4-mini-instruct", + "name": "Microsoft: Phi 4 Mini Instruct", + "created": 1760726049, + "description": "Phi-4-mini-instruct is a lightweight open model built upon synthetic data and filtered publicly available websites - with a focus on high-quality, reasoning dense data. The model belongs to the Phi-4...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000008", + "completion": "0.00000035", + "input_cache_read": "0.00000008" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 128000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/microsoft/phi-4-mini-instruct/endpoints" + } + }, + { + "id": "openai/gpt-5-image-mini", + "canonical_slug": "openai/gpt-5-image-mini", + "hugging_face_id": "", + "name": "OpenAI: GPT-5 Image Mini", + "created": 1760624583, + "description": "GPT-5 Image Mini combines OpenAI's advanced language capabilities, powered by [GPT-5 Mini](https://openrouter.ai/openai/gpt-5-mini), with GPT Image 1 Mini for efficient image generation. This natively multimodal model features superior instruction following, text...", + "context_length": 400000, + "architecture": { + "modality": "text+image+file->text+image", + "input_modalities": [ + "file", + "image", + "text" + ], + "output_modalities": [ + "image", + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000025", + "completion": "0.000002", + "web_search": "0.01", + "input_cache_read": "0.00000025" + }, + "top_provider": { + "context_length": 400000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5-image-mini/endpoints" + } + }, + { + "id": "anthropic/claude-haiku-4.5", + "canonical_slug": "anthropic/claude-4.5-haiku-20251001", + "hugging_face_id": "", + "name": "Anthropic: Claude Haiku 4.5", + "created": 1760547638, + "description": "Claude Haiku 4.5 is Anthropic’s fastest and most efficient model, delivering near-frontier intelligence at a fraction of the cost and latency of larger Claude models. Matching Claude Sonnet 4’s performance...", + "context_length": 200000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Claude", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000001", + "completion": "0.000005", + "web_search": "0.01", + "input_cache_read": "0.0000001", + "input_cache_write": "0.00000125" + }, + "top_provider": { + "context_length": 200000, + "max_completion_tokens": 64000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/anthropic/claude-4.5-haiku-20251001/endpoints" + } + }, + { + "id": "qwen/qwen3-vl-8b-thinking", + "canonical_slug": "qwen/qwen3-vl-8b-thinking", + "hugging_face_id": "Qwen/Qwen3-VL-8B-Thinking", + "name": "Qwen: Qwen3 VL 8B Thinking", + "created": 1760463746, + "description": "Qwen3-VL-8B-Thinking is the reasoning-optimized variant of the Qwen3-VL-8B multimodal model, designed for advanced visual and textual reasoning across complex scenes, documents, and temporal sequences. It integrates enhanced multimodal alignment and...", + "context_length": 256000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "image", + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000117", + "completion": "0.000001365" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 0.95 + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-vl-8b-thinking/endpoints" + } + }, + { + "id": "qwen/qwen3-vl-8b-instruct", + "canonical_slug": "qwen/qwen3-vl-8b-instruct", + "hugging_face_id": "Qwen/Qwen3-VL-8B-Instruct", + "name": "Qwen: Qwen3 VL 8B Instruct", + "created": 1760463308, + "description": "Qwen3-VL-8B-Instruct is a multimodal vision-language model from the Qwen3-VL series, built for high-fidelity understanding and reasoning across text, images, and video. It features improved multimodal fusion with Interleaved-MRoPE for long-horizon...", + "context_length": 256000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "image", + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000008", + "completion": "0.0000005" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.7, + "top_p": 0.8, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-vl-8b-instruct/endpoints" + } + }, + { + "id": "openai/gpt-5-image", + "canonical_slug": "openai/gpt-5-image", + "hugging_face_id": "", + "name": "OpenAI: GPT-5 Image", + "created": 1760447986, + "description": "[GPT-5](https://openrouter.ai/openai/gpt-5) Image combines OpenAI's GPT-5 model with state-of-the-art image generation capabilities. It offers major improvements in reasoning, code quality, and user experience while incorporating GPT Image 1's superior instruction following,...", + "context_length": 400000, + "architecture": { + "modality": "text+image+file->text+image", + "input_modalities": [ + "image", + "text", + "file" + ], + "output_modalities": [ + "image", + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00001", + "completion": "0.00001", + "web_search": "0.01", + "input_cache_read": "0.00000125" + }, + "top_provider": { + "context_length": 400000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5-image/endpoints" + } + }, + { + "id": "openai/o3-deep-research", + "canonical_slug": "openai/o3-deep-research-2025-06-26", + "hugging_face_id": "", + "name": "OpenAI: o3 Deep Research", + "created": 1760129661, + "description": "o3-deep-research is OpenAI's advanced model for deep research, designed to tackle complex, multi-step research tasks.\n\nNote: This model always uses the 'web_search' tool which adds additional cost.", + "context_length": 200000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "image", + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00001", + "completion": "0.00004", + "web_search": "0.01", + "input_cache_read": "0.0000025" + }, + "top_provider": { + "context_length": 200000, + "max_completion_tokens": 100000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/o3-deep-research-2025-06-26/endpoints" + } + }, + { + "id": "openai/o4-mini-deep-research", + "canonical_slug": "openai/o4-mini-deep-research-2025-06-26", + "hugging_face_id": "", + "name": "OpenAI: o4 Mini Deep Research", + "created": 1760129642, + "description": "o4-mini-deep-research is OpenAI's faster, more affordable deep research model—ideal for tackling complex, multi-step research tasks.\n\nNote: This model always uses the 'web_search' tool which adds additional cost.", + "context_length": 200000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "file", + "image", + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000002", + "completion": "0.000008", + "web_search": "0.01", + "input_cache_read": "0.0000005" + }, + "top_provider": { + "context_length": 200000, + "max_completion_tokens": 100000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/o4-mini-deep-research-2025-06-26/endpoints" + } + }, + { + "id": "nvidia/llama-3.3-nemotron-super-49b-v1.5", + "canonical_slug": "nvidia/llama-3.3-nemotron-super-49b-v1.5", + "hugging_face_id": "nvidia/Llama-3_3-Nemotron-Super-49B-v1_5", + "name": "NVIDIA: Llama 3.3 Nemotron Super 49B V1.5", + "created": 1760101395, + "description": "Llama-3.3-Nemotron-Super-49B-v1.5 is a 49B-parameter, English-centric reasoning/chat model derived from Meta’s Llama-3.3-70B-Instruct with a 128K context. It’s post-trained for agentic workflows (RAG, tool calling) via SFT across math, code, science, and...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000001", + "completion": "0.0000004" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.6, + "top_p": 0.95, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/nvidia/llama-3.3-nemotron-super-49b-v1.5/endpoints" + } + }, + { + "id": "baidu/ernie-4.5-21b-a3b-thinking", + "canonical_slug": "baidu/ernie-4.5-21b-a3b-thinking", + "hugging_face_id": "baidu/ERNIE-4.5-21B-A3B-Thinking", + "name": "Baidu: ERNIE 4.5 21B A3B Thinking", + "created": 1760048887, + "description": "ERNIE-4.5-21B-A3B-Thinking is Baidu's upgraded lightweight MoE model, refined to boost reasoning depth and quality for top-tier performance in logical puzzles, math, science, coding, text generation, and expert-level academic benchmarks.", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000007", + "completion": "0.00000028" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "repetition_penalty", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.6, + "top_p": 0.95, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/baidu/ernie-4.5-21b-a3b-thinking/endpoints" + } + }, + { + "id": "google/gemini-2.5-flash-image", + "canonical_slug": "google/gemini-2.5-flash-image", + "hugging_face_id": "", + "name": "Google: Nano Banana (Gemini 2.5 Flash Image)", + "created": 1759870431, + "description": "Gemini 2.5 Flash Image, a.k.a. \"Nano Banana,\" is now generally available. It is a state of the art image generation model with contextual understanding. It is capable of image generation,...", + "context_length": 32768, + "architecture": { + "modality": "text+image->text+image", + "input_modalities": [ + "image", + "text" + ], + "output_modalities": [ + "image", + "text" + ], + "tokenizer": "Gemini", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000003", + "completion": "0.0000025", + "image": "0.0000003", + "audio": "0.000001", + "web_search": "0.014", + "internal_reasoning": "0.0000025", + "input_cache_read": "0.00000003", + "input_cache_write": "0.00000008333333333333334" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-01-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemini-2.5-flash-image/endpoints" + } + }, + { + "id": "qwen/qwen3-vl-30b-a3b-thinking", + "canonical_slug": "qwen/qwen3-vl-30b-a3b-thinking", + "hugging_face_id": "Qwen/Qwen3-VL-30B-A3B-Thinking", + "name": "Qwen: Qwen3 VL 30B A3B Thinking", + "created": 1759794479, + "description": "Qwen3-VL-30B-A3B-Thinking is a multimodal model that unifies strong text generation with visual understanding for images and videos. Its Thinking variant enhances reasoning in STEM, math, and complex tasks. It excels...", + "context_length": 131072, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000013", + "completion": "0.00000156" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.8, + "top_p": 0.95, + "top_k": 20, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": 1 + }, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-vl-30b-a3b-thinking/endpoints" + } + }, + { + "id": "qwen/qwen3-vl-30b-a3b-instruct", + "canonical_slug": "qwen/qwen3-vl-30b-a3b-instruct", + "hugging_face_id": "Qwen/Qwen3-VL-30B-A3B-Instruct", + "name": "Qwen: Qwen3 VL 30B A3B Instruct", + "created": 1759794476, + "description": "Qwen3-VL-30B-A3B-Instruct is a multimodal model that unifies strong text generation with visual understanding for images and videos. Its Instruct variant optimizes instruction-following for general multimodal tasks. It excels in perception...", + "context_length": 262144, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000013", + "completion": "0.00000052" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.7, + "top_p": 0.8, + "top_k": 20, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": 1 + }, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-vl-30b-a3b-instruct/endpoints" + } + }, + { + "id": "openai/gpt-5-pro", + "canonical_slug": "openai/gpt-5-pro-2025-10-06", + "hugging_face_id": "", + "name": "OpenAI: GPT-5 Pro", + "created": 1759776663, + "description": "GPT-5 Pro is OpenAI’s most advanced model, offering major improvements in reasoning, code quality, and user experience. It is optimized for complex tasks that require step-by-step reasoning, instruction following, and...", + "context_length": 400000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "image", + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000015", + "completion": "0.00012", + "web_search": "0.01" + }, + "top_provider": { + "context_length": 400000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-09-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5-pro-2025-10-06/endpoints" + } + }, + { + "id": "z-ai/glm-4.6", + "canonical_slug": "z-ai/glm-4.6", + "hugging_face_id": "zai-org/GLM-4.6", + "name": "Z.ai: GLM 4.6", + "created": 1759235576, + "description": "Compared with GLM-4.5, this generation brings several key improvements: Longer context window: The context window has been expanded from 128K to 200K tokens, enabling the model to handle more complex...", + "context_length": 202752, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000043", + "completion": "0.00000174", + "input_cache_read": "0.00000008" + }, + "top_provider": { + "context_length": 202752, + "max_completion_tokens": 131072, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.6, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/z-ai/glm-4.6/endpoints" + } + }, + { + "id": "anthropic/claude-sonnet-4.5", + "canonical_slug": "anthropic/claude-4.5-sonnet-20250929", + "hugging_face_id": "", + "name": "Anthropic: Claude Sonnet 4.5", + "created": 1759161676, + "description": "Claude Sonnet 4.5 is Anthropic’s most advanced Sonnet model to date, optimized for real-world agents and coding workflows. It delivers state-of-the-art performance on coding benchmarks such as SWE-bench Verified, with...", + "context_length": 1000000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Claude", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000003", + "completion": "0.000015", + "web_search": "0.01", + "input_cache_read": "0.0000003", + "input_cache_write": "0.00000375" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 64000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 1, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-01-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/anthropic/claude-4.5-sonnet-20250929/endpoints" + } + }, + { + "id": "deepseek/deepseek-v3.2-exp", + "canonical_slug": "deepseek/deepseek-v3.2-exp", + "hugging_face_id": "deepseek-ai/DeepSeek-V3.2-Exp", + "name": "DeepSeek: DeepSeek V3.2 Exp", + "created": 1759150481, + "description": "DeepSeek-V3.2-Exp is an experimental large language model released by DeepSeek as an intermediate step between V3.1 and future architectures. It introduces DeepSeek Sparse Attention (DSA), a fine-grained sparse attention mechanism...", + "context_length": 163840, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "DeepSeek", + "instruct_type": "deepseek-v3.1" + }, + "pricing": { + "prompt": "0.00000027", + "completion": "0.00000041" + }, + "top_provider": { + "context_length": 163840, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.6, + "top_p": 0.95, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-07-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/deepseek/deepseek-v3.2-exp/endpoints" + } + }, + { + "id": "thedrummer/cydonia-24b-v4.1", + "canonical_slug": "thedrummer/cydonia-24b-v4.1", + "hugging_face_id": "thedrummer/cydonia-24b-v4.1", + "name": "TheDrummer: Cydonia 24B V4.1", + "created": 1758931878, + "description": "Uncensored and creative writing model based on Mistral Small 3.2 24B with good recall, prompt adherence, and intelligence.", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000003", + "completion": "0.0000005", + "input_cache_read": "0.00000015" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 131072, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-04-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/thedrummer/cydonia-24b-v4.1/endpoints" + } + }, + { + "id": "relace/relace-apply-3", + "canonical_slug": "relace/relace-apply-3", + "hugging_face_id": "", + "name": "Relace: Relace Apply 3", + "created": 1758891572, + "description": "Relace Apply 3 is a specialized code-patching LLM that merges AI-suggested edits straight into your source files. It can apply updates from GPT-4o, Claude, and others into your files at...", + "context_length": 256000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000085", + "completion": "0.00000125" + }, + "top_provider": { + "context_length": 256000, + "max_completion_tokens": 128000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "seed", + "stop" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/relace/relace-apply-3/endpoints" + } + }, + { + "id": "google/gemini-2.5-flash-lite-preview-09-2025", + "canonical_slug": "google/gemini-2.5-flash-lite-preview-09-2025", + "hugging_face_id": "", + "name": "Google: Gemini 2.5 Flash Lite Preview 09-2025", + "created": 1758819686, + "description": "Gemini 2.5 Flash-Lite is a lightweight reasoning model in the Gemini 2.5 family, optimized for ultra-low latency and cost efficiency. It offers improved throughput, faster token generation, and better performance...", + "context_length": 1048576, + "architecture": { + "modality": "text+image+file+audio+video->text", + "input_modalities": [ + "text", + "image", + "file", + "audio", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemini", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000001", + "completion": "0.0000004", + "image": "0.0000001", + "audio": "0.0000003", + "web_search": "0.014", + "internal_reasoning": "0.0000004", + "input_cache_read": "0.00000001", + "input_cache_write": "0.00000008333333333333334" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 65535, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-01-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemini-2.5-flash-lite-preview-09-2025/endpoints" + } + }, + { + "id": "qwen/qwen3-vl-235b-a22b-thinking", + "canonical_slug": "qwen/qwen3-vl-235b-a22b-thinking", + "hugging_face_id": "Qwen/Qwen3-VL-235B-A22B-Thinking", + "name": "Qwen: Qwen3 VL 235B A22B Thinking", + "created": 1758668690, + "description": "Qwen3-VL-235B-A22B Thinking is a multimodal model that unifies strong text generation with visual understanding across images and video. The Thinking model is optimized for multimodal reasoning in STEM and math....", + "context_length": 131072, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000026", + "completion": "0.0000026" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.8, + "top_p": 0.95, + "top_k": 20, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": 1 + }, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-vl-235b-a22b-thinking/endpoints" + } + }, + { + "id": "qwen/qwen3-vl-235b-a22b-instruct", + "canonical_slug": "qwen/qwen3-vl-235b-a22b-instruct", + "hugging_face_id": "Qwen/Qwen3-VL-235B-A22B-Instruct", + "name": "Qwen: Qwen3 VL 235B A22B Instruct", + "created": 1758668687, + "description": "Qwen3-VL-235B-A22B Instruct is an open-weight multimodal model that unifies strong text generation with visual understanding across images and video. The Instruct model targets general vision-language use (VQA, document parsing, chart/table...", + "context_length": 262144, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000002", + "completion": "0.00000088", + "input_cache_read": "0.00000011" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.7, + "top_p": 0.8, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-vl-235b-a22b-instruct/endpoints" + } + }, + { + "id": "qwen/qwen3-max", + "canonical_slug": "qwen/qwen3-max", + "hugging_face_id": "", + "name": "Qwen: Qwen3 Max", + "created": 1758662808, + "description": "Qwen3-Max is an updated release built on the Qwen3 series, offering major improvements in reasoning, instruction following, multilingual support, and long-tail knowledge coverage compared to the January 2025 version. It...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000078", + "completion": "0.0000039", + "input_cache_read": "0.000000156", + "input_cache_write": "0.000000975" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 1, + "top_p": 1, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-max/endpoints" + } + }, + { + "id": "qwen/qwen3-coder-plus", + "canonical_slug": "qwen/qwen3-coder-plus", + "hugging_face_id": "", + "name": "Qwen: Qwen3 Coder Plus", + "created": 1758662707, + "description": "Qwen3 Coder Plus is Alibaba's proprietary version of the Open Source Qwen3 Coder 480B A35B. It is a powerful coding agent model specializing in autonomous programming via tool calling and...", + "context_length": 1000000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000065", + "completion": "0.00000325", + "input_cache_read": "0.00000013", + "input_cache_write": "0.0000008125" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-coder-plus/endpoints" + } + }, + { + "id": "openai/gpt-5-codex", + "canonical_slug": "openai/gpt-5-codex", + "hugging_face_id": "", + "name": "OpenAI: GPT-5 Codex", + "created": 1758643403, + "description": "GPT-5-Codex is a specialized version of GPT-5 optimized for software engineering and coding workflows. It is designed for both interactive development sessions and long, independent execution of complex engineering tasks....", + "context_length": 400000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000125", + "completion": "0.00001", + "web_search": "0.01", + "input_cache_read": "0.000000125" + }, + "top_provider": { + "context_length": 400000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-09-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5-codex/endpoints" + } + }, + { + "id": "deepseek/deepseek-v3.1-terminus", + "canonical_slug": "deepseek/deepseek-v3.1-terminus", + "hugging_face_id": "deepseek-ai/DeepSeek-V3.1-Terminus", + "name": "DeepSeek: DeepSeek V3.1 Terminus", + "created": 1758548275, + "description": "DeepSeek-V3.1 Terminus is an update to [DeepSeek V3.1](/deepseek/deepseek-chat-v3.1) that maintains the model's original capabilities while addressing issues reported by users, including language consistency and agent capabilities, further optimizing the model's...", + "context_length": 163840, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "DeepSeek", + "instruct_type": "deepseek-v3.1" + }, + "pricing": { + "prompt": "0.00000027", + "completion": "0.00000095", + "input_cache_read": "0.00000013" + }, + "top_provider": { + "context_length": 163840, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/deepseek/deepseek-v3.1-terminus/endpoints" + } + }, + { + "id": "qwen/qwen3-coder-flash", + "canonical_slug": "qwen/qwen3-coder-flash", + "hugging_face_id": "", + "name": "Qwen: Qwen3 Coder Flash", + "created": 1758115536, + "description": "Qwen3 Coder Flash is Alibaba's fast and cost efficient version of their proprietary Qwen3 Coder Plus. It is a powerful coding agent model specializing in autonomous programming via tool calling...", + "context_length": 1000000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000195", + "completion": "0.000000975", + "input_cache_read": "0.000000039", + "input_cache_write": "0.00000024375" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-coder-flash/endpoints" + } + }, + { + "id": "qwen/qwen3-next-80b-a3b-thinking", + "canonical_slug": "qwen/qwen3-next-80b-a3b-thinking-2509", + "hugging_face_id": "Qwen/Qwen3-Next-80B-A3B-Thinking", + "name": "Qwen: Qwen3 Next 80B A3B Thinking", + "created": 1757612284, + "description": "Qwen3-Next-80B-A3B-Thinking is a reasoning-first chat model in the Qwen3-Next line that outputs structured “thinking” traces by default. It’s designed for hard multi-step problems; math proofs, code synthesis/debugging, logic, and agentic...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000000975", + "completion": "0.00000078" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-09-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-next-80b-a3b-thinking-2509/endpoints" + } + }, + { + "id": "qwen/qwen3-next-80b-a3b-instruct:free", + "canonical_slug": "qwen/qwen3-next-80b-a3b-instruct-2509", + "hugging_face_id": "Qwen/Qwen3-Next-80B-A3B-Instruct", + "name": "Qwen: Qwen3 Next 80B A3B Instruct (free)", + "created": 1757612213, + "description": "Qwen3-Next-80B-A3B-Instruct is an instruction-tuned chat model in the Qwen3-Next series optimized for fast, stable responses without “thinking” traces. It targets complex tasks across reasoning, code generation, knowledge QA, and multilingual...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "response_format", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-09-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-next-80b-a3b-instruct-2509/endpoints" + } + }, + { + "id": "qwen/qwen3-next-80b-a3b-instruct", + "canonical_slug": "qwen/qwen3-next-80b-a3b-instruct-2509", + "hugging_face_id": "Qwen/Qwen3-Next-80B-A3B-Instruct", + "name": "Qwen: Qwen3 Next 80B A3B Instruct", + "created": 1757612213, + "description": "Qwen3-Next-80B-A3B-Instruct is an instruction-tuned chat model in the Qwen3-Next series optimized for fast, stable responses without “thinking” traces. It targets complex tasks across reasoning, code generation, knowledge QA, and multilingual...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000009", + "completion": "0.0000011" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-09-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-next-80b-a3b-instruct-2509/endpoints" + } + }, + { + "id": "qwen/qwen-plus-2025-07-28:thinking", + "canonical_slug": "qwen/qwen-plus-2025-07-28", + "hugging_face_id": "", + "name": "Qwen: Qwen Plus 0728 (thinking)", + "created": 1757347599, + "description": "Qwen Plus 0728, based on the Qwen3 foundation model, is a 1 million context hybrid reasoning model with a balanced performance, speed, and cost combination.", + "context_length": 1000000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000026", + "completion": "0.00000078", + "input_cache_write": "0.000000325" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen-plus-2025-07-28/endpoints" + } + }, + { + "id": "qwen/qwen-plus-2025-07-28", + "canonical_slug": "qwen/qwen-plus-2025-07-28", + "hugging_face_id": "", + "name": "Qwen: Qwen Plus 0728", + "created": 1757347599, + "description": "Qwen Plus 0728, based on the Qwen3 foundation model, is a 1 million context hybrid reasoning model with a balanced performance, speed, and cost combination.", + "context_length": 1000000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000026", + "completion": "0.00000078" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen-plus-2025-07-28/endpoints" + } + }, + { + "id": "nvidia/nemotron-nano-9b-v2:free", + "canonical_slug": "nvidia/nemotron-nano-9b-v2", + "hugging_face_id": "nvidia/NVIDIA-Nemotron-Nano-9B-v2", + "name": "NVIDIA: Nemotron Nano 9B V2 (free)", + "created": 1757106807, + "description": "NVIDIA-Nemotron-Nano-9B-v2 is a large language model (LLM) trained from scratch by NVIDIA, and designed as a unified model for both reasoning and non-reasoning tasks. It responds to user queries and...", + "context_length": 128000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/nvidia/nemotron-nano-9b-v2/endpoints" + } + }, + { + "id": "nvidia/nemotron-nano-9b-v2", + "canonical_slug": "nvidia/nemotron-nano-9b-v2", + "hugging_face_id": "nvidia/NVIDIA-Nemotron-Nano-9B-v2", + "name": "NVIDIA: Nemotron Nano 9B V2", + "created": 1757106807, + "description": "NVIDIA-Nemotron-Nano-9B-v2 is a large language model (LLM) trained from scratch by NVIDIA, and designed as a unified model for both reasoning and non-reasoning tasks. It responds to user queries and...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000004", + "completion": "0.00000016" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/nvidia/nemotron-nano-9b-v2/endpoints" + } + }, + { + "id": "moonshotai/kimi-k2-0905", + "canonical_slug": "moonshotai/kimi-k2-0905", + "hugging_face_id": "moonshotai/Kimi-K2-Instruct-0905", + "name": "MoonshotAI: Kimi K2 0905", + "created": 1757021147, + "description": "Kimi K2 0905 is the September update of [Kimi K2 0711](moonshotai/kimi-k2). It is a large-scale Mixture-of-Experts (MoE) language model developed by Moonshot AI, featuring 1 trillion total parameters with 32...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000006", + "completion": "0.0000025" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 262144, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/moonshotai/kimi-k2-0905/endpoints" + } + }, + { + "id": "qwen/qwen3-30b-a3b-thinking-2507", + "canonical_slug": "qwen/qwen3-30b-a3b-thinking-2507", + "hugging_face_id": "Qwen/Qwen3-30B-A3B-Thinking-2507", + "name": "Qwen: Qwen3 30B A3B Thinking 2507", + "created": 1756399192, + "description": "Qwen3-30B-A3B-Thinking-2507 is a 30B parameter Mixture-of-Experts reasoning model optimized for complex tasks requiring extended multi-step thinking. The model is designed specifically for “thinking mode,” where internal reasoning traces are separated...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000008", + "completion": "0.0000004", + "input_cache_read": "0.00000008" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 131072, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-30b-a3b-thinking-2507/endpoints" + } + }, + { + "id": "nousresearch/hermes-4-70b", + "canonical_slug": "nousresearch/hermes-4-70b", + "hugging_face_id": "NousResearch/Hermes-4-70B", + "name": "Nous: Hermes 4 70B", + "created": 1756236182, + "description": "Hermes 4 70B is a hybrid reasoning model from Nous Research, built on Meta-Llama-3.1-70B. It introduces the same hybrid mode as the larger 405B release, allowing the model to either...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000013", + "completion": "0.0000004" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-08-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/nousresearch/hermes-4-70b/endpoints" + } + }, + { + "id": "nousresearch/hermes-4-405b", + "canonical_slug": "nousresearch/hermes-4-405b", + "hugging_face_id": "NousResearch/Hermes-4-405B", + "name": "Nous: Hermes 4 405B", + "created": 1756235463, + "description": "Hermes 4 is a large-scale reasoning model built on Meta-Llama-3.1-405B and released by Nous Research. It introduces a hybrid reasoning mode, where the model can choose to deliberate internally with...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000001", + "completion": "0.000003" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-08-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/nousresearch/hermes-4-405b/endpoints" + } + }, + { + "id": "deepseek/deepseek-chat-v3.1", + "canonical_slug": "deepseek/deepseek-chat-v3.1", + "hugging_face_id": "deepseek-ai/DeepSeek-V3.1", + "name": "DeepSeek: DeepSeek V3.1", + "created": 1755779628, + "description": "DeepSeek-V3.1 is a large hybrid reasoning model (671B parameters, 37B active) that supports both thinking and non-thinking modes via prompt templates. It extends the DeepSeek-V3 base with a two-phase long-context...", + "context_length": 163840, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "DeepSeek", + "instruct_type": "deepseek-v3.1" + }, + "pricing": { + "prompt": "0.00000021", + "completion": "0.00000079", + "input_cache_read": "0.00000013" + }, + "top_provider": { + "context_length": 163840, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/deepseek/deepseek-chat-v3.1/endpoints" + } + }, + { + "id": "mistralai/mistral-medium-3.1", + "canonical_slug": "mistralai/mistral-medium-3.1", + "hugging_face_id": "", + "name": "Mistral: Mistral Medium 3.1", + "created": 1755095639, + "description": "Mistral Medium 3.1 is an updated version of Mistral Medium 3, which is a high-performance enterprise-grade language model designed to deliver frontier-level capabilities at significantly reduced operational cost. It balances...", + "context_length": 131072, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000004", + "completion": "0.000002", + "input_cache_read": "0.00000004" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 0.3 + }, + "supported_voices": null, + "knowledge_cutoff": "2025-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/mistral-medium-3.1/endpoints" + } + }, + { + "id": "baidu/ernie-4.5-21b-a3b", + "canonical_slug": "baidu/ernie-4.5-21b-a3b", + "hugging_face_id": "baidu/ERNIE-4.5-21B-A3B-PT", + "name": "Baidu: ERNIE 4.5 21B A3B", + "created": 1755034167, + "description": "A sophisticated text-based Mixture-of-Experts (MoE) model featuring 21B total parameters with 3B activated per token, delivering exceptional multimodal understanding and generation through heterogeneous MoE structures and modality-isolated routing. Supporting an...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000007", + "completion": "0.00000028" + }, + "top_provider": { + "context_length": 120000, + "max_completion_tokens": 8000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.8, + "top_p": 0.8, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/baidu/ernie-4.5-21b-a3b/endpoints" + } + }, + { + "id": "baidu/ernie-4.5-vl-28b-a3b", + "canonical_slug": "baidu/ernie-4.5-vl-28b-a3b", + "hugging_face_id": "baidu/ERNIE-4.5-VL-28B-A3B-PT", + "name": "Baidu: ERNIE 4.5 VL 28B A3B", + "created": 1755032836, + "description": "A powerful multimodal Mixture-of-Experts chat model featuring 28B total parameters with 3B activated per token, delivering exceptional text and vision understanding through its innovative heterogeneous MoE structure with modality-isolated routing....", + "context_length": 131072, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000014", + "completion": "0.00000056" + }, + "top_provider": { + "context_length": 30000, + "max_completion_tokens": 8000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "repetition_penalty", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/baidu/ernie-4.5-vl-28b-a3b/endpoints" + } + }, + { + "id": "z-ai/glm-4.5v", + "canonical_slug": "z-ai/glm-4.5v", + "hugging_face_id": "zai-org/GLM-4.5V", + "name": "Z.ai: GLM 4.5V", + "created": 1754922288, + "description": "GLM-4.5V is a vision-language foundation model for multimodal agent applications. Built on a Mixture-of-Experts (MoE) architecture with 106B parameters and 12B activated parameters, it achieves state-of-the-art results in video understanding,...", + "context_length": 65536, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000006", + "completion": "0.0000018", + "input_cache_read": "0.00000011" + }, + "top_provider": { + "context_length": 65536, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.75, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/z-ai/glm-4.5v/endpoints" + } + }, + { + "id": "ai21/jamba-large-1.7", + "canonical_slug": "ai21/jamba-large-1.7", + "hugging_face_id": "ai21labs/AI21-Jamba-Large-1.7", + "name": "AI21: Jamba Large 1.7", + "created": 1754669020, + "description": "Jamba Large 1.7 is the latest model in the Jamba open family, offering improvements in grounding, instruction-following, and overall efficiency. Built on a hybrid SSM-Transformer architecture with a 256K context...", + "context_length": 256000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000002", + "completion": "0.000008" + }, + "top_provider": { + "context_length": 256000, + "max_completion_tokens": 4096, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "response_format", + "stop", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-08-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/ai21/jamba-large-1.7/endpoints" + } + }, + { + "id": "openai/gpt-5-chat", + "canonical_slug": "openai/gpt-5-chat-2025-08-07", + "hugging_face_id": "", + "name": "OpenAI: GPT-5 Chat", + "created": 1754587837, + "description": "GPT-5 Chat is designed for advanced, natural, multimodal, and context-aware conversations for enterprise applications.", + "context_length": 128000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "file", + "image", + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000125", + "completion": "0.00001", + "web_search": "0.01", + "input_cache_read": "0.000000125" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 16384, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "response_format", + "seed", + "structured_outputs" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-09-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5-chat-2025-08-07/endpoints" + } + }, + { + "id": "openai/gpt-5", + "canonical_slug": "openai/gpt-5-2025-08-07", + "hugging_face_id": "", + "name": "OpenAI: GPT-5", + "created": 1754587413, + "description": "GPT-5 is OpenAI’s most advanced model, offering major improvements in reasoning, code quality, and user experience. It is optimized for complex tasks that require step-by-step reasoning, instruction following, and accuracy...", + "context_length": 400000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000125", + "completion": "0.00001", + "web_search": "0.01", + "input_cache_read": "0.000000125" + }, + "top_provider": { + "context_length": 400000, + "max_completion_tokens": 128000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-09-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5-2025-08-07/endpoints" + } + }, + { + "id": "openai/gpt-5-mini", + "canonical_slug": "openai/gpt-5-mini-2025-08-07", + "hugging_face_id": "", + "name": "OpenAI: GPT-5 Mini", + "created": 1754587407, + "description": "GPT-5 Mini is a compact version of GPT-5, designed to handle lighter-weight reasoning tasks. It provides the same instruction-following and safety-tuning benefits as GPT-5, but with reduced latency and cost....", + "context_length": 400000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000025", + "completion": "0.000002", + "web_search": "0.01", + "input_cache_read": "0.000000025" + }, + "top_provider": { + "context_length": 400000, + "max_completion_tokens": 128000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-05-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5-mini-2025-08-07/endpoints" + } + }, + { + "id": "openai/gpt-5-nano", + "canonical_slug": "openai/gpt-5-nano-2025-08-07", + "hugging_face_id": "", + "name": "OpenAI: GPT-5 Nano", + "created": 1754587402, + "description": "GPT-5-Nano is the smallest and fastest variant in the GPT-5 system, optimized for developer tools, rapid interactions, and ultra-low latency environments. While limited in reasoning depth compared to its larger...", + "context_length": 400000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000005", + "completion": "0.0000004", + "web_search": "0.01", + "input_cache_read": "0.00000001" + }, + "top_provider": { + "context_length": 400000, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-05-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-5-nano-2025-08-07/endpoints" + } + }, + { + "id": "openai/gpt-oss-120b:free", + "canonical_slug": "openai/gpt-oss-120b", + "hugging_face_id": "openai/gpt-oss-120b", + "name": "OpenAI: gpt-oss-120b (free)", + "created": 1754414231, + "description": "gpt-oss-120b is an open-weight, 117B-parameter Mixture-of-Experts (MoE) language model from OpenAI designed for high-reasoning, agentic, and general-purpose production use cases. It activates 5.1B parameters per forward pass and is optimized...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 131072, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "seed", + "stop", + "temperature", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-oss-120b/endpoints" + } + }, + { + "id": "openai/gpt-oss-120b", + "canonical_slug": "openai/gpt-oss-120b", + "hugging_face_id": "openai/gpt-oss-120b", + "name": "OpenAI: gpt-oss-120b", + "created": 1754414231, + "description": "gpt-oss-120b is an open-weight, 117B-parameter Mixture-of-Experts (MoE) language model from OpenAI designed for high-reasoning, agentic, and general-purpose production use cases. It activates 5.1B parameters per forward pass and is optimized...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000039", + "completion": "0.00000018" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-oss-120b/endpoints" + } + }, + { + "id": "openai/gpt-oss-20b:free", + "canonical_slug": "openai/gpt-oss-20b", + "hugging_face_id": "openai/gpt-oss-20b", + "name": "OpenAI: gpt-oss-20b (free)", + "created": 1754414229, + "description": "gpt-oss-20b is an open-weight 21B parameter model released by OpenAI under the Apache 2.0 license. It uses a Mixture-of-Experts (MoE) architecture with 3.6B active parameters per forward pass, optimized for...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 8192, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "seed", + "stop", + "temperature", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-oss-20b/endpoints" + } + }, + { + "id": "openai/gpt-oss-20b", + "canonical_slug": "openai/gpt-oss-20b", + "hugging_face_id": "openai/gpt-oss-20b", + "name": "OpenAI: gpt-oss-20b", + "created": 1754414229, + "description": "gpt-oss-20b is an open-weight 21B parameter model released by OpenAI under the Apache 2.0 license. It uses a Mixture-of-Experts (MoE) architecture with 3.6B active parameters per forward pass, optimized for...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000029", + "completion": "0.00000014" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-oss-20b/endpoints" + } + }, + { + "id": "anthropic/claude-opus-4.1", + "canonical_slug": "anthropic/claude-4.1-opus-20250805", + "hugging_face_id": "", + "name": "Anthropic: Claude Opus 4.1", + "created": 1754411591, + "description": "Claude Opus 4.1 is an updated version of Anthropic’s flagship model, offering improved performance in coding, reasoning, and agentic tasks. It achieves 74.5% on SWE-bench Verified and shows notable gains...", + "context_length": 200000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "image", + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Claude", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000015", + "completion": "0.000075", + "web_search": "0.01", + "input_cache_read": "0.0000015", + "input_cache_write": "0.00001875" + }, + "top_provider": { + "context_length": 200000, + "max_completion_tokens": 32000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-01-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/anthropic/claude-4.1-opus-20250805/endpoints" + } + }, + { + "id": "mistralai/codestral-2508", + "canonical_slug": "mistralai/codestral-2508", + "hugging_face_id": "", + "name": "Mistral: Codestral 2508", + "created": 1754079630, + "description": "Mistral's cutting-edge language model for coding released end of July 2025. Codestral specializes in low-latency, high-frequency tasks such as fill-in-the-middle (FIM), code correction and test generation.\n\n[Blog Post](https://mistral.ai/news/codestral-25-08)", + "context_length": 256000, + "architecture": { + "modality": "text+file->text", + "input_modalities": [ + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000003", + "completion": "0.0000009", + "input_cache_read": "0.00000003" + }, + "top_provider": { + "context_length": 256000, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 0.3 + }, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/codestral-2508/endpoints" + } + }, + { + "id": "qwen/qwen3-coder-30b-a3b-instruct", + "canonical_slug": "qwen/qwen3-coder-30b-a3b-instruct", + "hugging_face_id": "Qwen/Qwen3-Coder-30B-A3B-Instruct", + "name": "Qwen: Qwen3 Coder 30B A3B Instruct", + "created": 1753972379, + "description": "Qwen3-Coder-30B-A3B-Instruct is a 30.5B parameter Mixture-of-Experts (MoE) model with 128 experts (8 active per forward pass), designed for advanced code generation, repository-scale understanding, and agentic tool use. Built on the...", + "context_length": 160000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000007", + "completion": "0.00000027" + }, + "top_provider": { + "context_length": 160000, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-coder-30b-a3b-instruct/endpoints" + } + }, + { + "id": "qwen/qwen3-30b-a3b-instruct-2507", + "canonical_slug": "qwen/qwen3-30b-a3b-instruct-2507", + "hugging_face_id": "Qwen/Qwen3-30B-A3B-Instruct-2507", + "name": "Qwen: Qwen3 30B A3B Instruct 2507", + "created": 1753806965, + "description": "Qwen3-30B-A3B-Instruct-2507 is a 30.5B-parameter mixture-of-experts language model from Qwen, with 3.3B active parameters per inference. It operates in non-thinking mode and is designed for high-quality instruction following, multilingual understanding, and...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000009", + "completion": "0.0000003" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 262144, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-30b-a3b-instruct-2507/endpoints" + } + }, + { + "id": "z-ai/glm-4.5", + "canonical_slug": "z-ai/glm-4.5", + "hugging_face_id": "zai-org/GLM-4.5", + "name": "Z.ai: GLM 4.5", + "created": 1753471347, + "description": "GLM-4.5 is our latest flagship foundation model, purpose-built for agent-based applications. It leverages a Mixture-of-Experts (MoE) architecture and supports a context length of up to 128k tokens. GLM-4.5 delivers significantly...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000006", + "completion": "0.0000022", + "input_cache_read": "0.00000011" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 98304, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.75, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/z-ai/glm-4.5/endpoints" + } + }, + { + "id": "z-ai/glm-4.5-air:free", + "canonical_slug": "z-ai/glm-4.5-air", + "hugging_face_id": "zai-org/GLM-4.5-Air", + "name": "Z.ai: GLM 4.5 Air (free)", + "created": 1753471258, + "description": "GLM-4.5-Air is the lightweight variant of our latest flagship model family, also purpose-built for agent-centric applications. Like GLM-4.5, it adopts the Mixture-of-Experts (MoE) architecture but with a more compact parameter...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 96000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 0.75, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/z-ai/glm-4.5-air/endpoints" + } + }, + { + "id": "z-ai/glm-4.5-air", + "canonical_slug": "z-ai/glm-4.5-air", + "hugging_face_id": "zai-org/GLM-4.5-Air", + "name": "Z.ai: GLM 4.5 Air", + "created": 1753471258, + "description": "GLM-4.5-Air is the lightweight variant of our latest flagship model family, also purpose-built for agent-centric applications. Like GLM-4.5, it adopts the Mixture-of-Experts (MoE) architecture but with a more compact parameter...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000125", + "completion": "0.00000085", + "input_cache_read": "0.00000006" + }, + "top_provider": { + "context_length": 131070, + "max_completion_tokens": 131070, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.75, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/z-ai/glm-4.5-air/endpoints" + } + }, + { + "id": "qwen/qwen3-235b-a22b-thinking-2507", + "canonical_slug": "qwen/qwen3-235b-a22b-thinking-2507", + "hugging_face_id": "Qwen/Qwen3-235B-A22B-Thinking-2507", + "name": "Qwen: Qwen3 235B A22B Thinking 2507", + "created": 1753449557, + "description": "Qwen3-235B-A22B-Thinking-2507 is a high-performance, open-weight Mixture-of-Experts (MoE) language model optimized for complex reasoning tasks. It activates 22B of its 235B parameters per forward pass and natively supports up to 262,144...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": "qwen3" + }, + "pricing": { + "prompt": "0.0000001", + "completion": "0.0000001", + "input_cache_read": "0.0000001" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 262144, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-235b-a22b-thinking-2507/endpoints" + } + }, + { + "id": "z-ai/glm-4-32b", + "canonical_slug": "z-ai/glm-4-32b-0414", + "hugging_face_id": "", + "name": "Z.ai: GLM 4 32B ", + "created": 1753376617, + "description": "GLM 4 32B is a cost-effective foundation language model. It can efficiently perform complex tasks and has significantly enhanced capabilities in tool use, online search, and code-related intelligent tasks. It...", + "context_length": 128000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000001", + "completion": "0.0000001" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 0.75, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/z-ai/glm-4-32b-0414/endpoints" + } + }, + { + "id": "qwen/qwen3-coder:free", + "canonical_slug": "qwen/qwen3-coder-480b-a35b-07-25", + "hugging_face_id": "Qwen/Qwen3-Coder-480B-A35B-Instruct", + "name": "Qwen: Qwen3 Coder 480B A35B (free)", + "created": 1753230546, + "description": "Qwen3-Coder-480B-A35B-Instruct is a Mixture-of-Experts (MoE) code generation model developed by the Qwen team. It is optimized for agentic coding tasks such as function calling, tool use, and long-context reasoning over...", + "context_length": 1048576, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 262000, + "max_completion_tokens": 262000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-coder-480b-a35b-07-25/endpoints" + } + }, + { + "id": "qwen/qwen3-coder", + "canonical_slug": "qwen/qwen3-coder-480b-a35b-07-25", + "hugging_face_id": "Qwen/Qwen3-Coder-480B-A35B-Instruct", + "name": "Qwen: Qwen3 Coder 480B A35B", + "created": 1753230546, + "description": "Qwen3-Coder-480B-A35B-Instruct is a Mixture-of-Experts (MoE) code generation model developed by the Qwen team. It is optimized for agentic coding tasks such as function calling, tool use, and long-context reasoning over...", + "context_length": 1048576, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000022", + "completion": "0.0000018" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-coder-480b-a35b-07-25/endpoints" + } + }, + { + "id": "bytedance/ui-tars-1.5-7b", + "canonical_slug": "bytedance/ui-tars-1.5-7b", + "hugging_face_id": "ByteDance-Seed/UI-TARS-1.5-7B", + "name": "ByteDance: UI-TARS 7B ", + "created": 1753205056, + "description": "UI-TARS-1.5 is a multimodal vision-language agent optimized for GUI-based environments, including desktop interfaces, web browsers, mobile systems, and games. Built by ByteDance, it builds upon the UI-TARS framework with reinforcement...", + "context_length": 128000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "image", + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000001", + "completion": "0.0000002", + "input_cache_read": "0.0000001" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 2048, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-01-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/bytedance/ui-tars-1.5-7b/endpoints" + } + }, + { + "id": "google/gemini-2.5-flash-lite", + "canonical_slug": "google/gemini-2.5-flash-lite", + "hugging_face_id": "", + "name": "Google: Gemini 2.5 Flash Lite", + "created": 1753200276, + "description": "Gemini 2.5 Flash-Lite is a lightweight reasoning model in the Gemini 2.5 family, optimized for ultra-low latency and cost efficiency. It offers improved throughput, faster token generation, and better performance...", + "context_length": 1048576, + "architecture": { + "modality": "text+image+file+audio+video->text", + "input_modalities": [ + "text", + "image", + "file", + "audio", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemini", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000001", + "completion": "0.0000004", + "image": "0.0000001", + "audio": "0.0000003", + "web_search": "0.014", + "internal_reasoning": "0.0000004", + "input_cache_read": "0.00000001", + "input_cache_write": "0.00000008333333333333334" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 65535, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-01-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemini-2.5-flash-lite/endpoints" + } + }, + { + "id": "qwen/qwen3-235b-a22b-2507", + "canonical_slug": "qwen/qwen3-235b-a22b-07-25", + "hugging_face_id": "Qwen/Qwen3-235B-A22B-Instruct-2507", + "name": "Qwen: Qwen3 235B A22B Instruct 2507", + "created": 1753119555, + "description": "Qwen3-235B-A22B-Instruct-2507 is a multilingual, instruction-tuned mixture-of-experts language model based on the Qwen3-235B architecture, with 22B active parameters per forward pass. It is optimized for general-purpose text generation, including instruction following,...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000071", + "completion": "0.0000001" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-235b-a22b-07-25/endpoints" + } + }, + { + "id": "switchpoint/router", + "canonical_slug": "switchpoint/router", + "hugging_face_id": "", + "name": "Switchpoint Router", + "created": 1752272899, + "description": "Switchpoint AI's router instantly analyzes your request and directs it to the optimal AI from an ever-evolving library. As the world of LLMs advances, our router gets smarter, ensuring you...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000085", + "completion": "0.0000034" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/switchpoint/router/endpoints" + } + }, + { + "id": "moonshotai/kimi-k2", + "canonical_slug": "moonshotai/kimi-k2", + "hugging_face_id": "moonshotai/Kimi-K2-Instruct", + "name": "MoonshotAI: Kimi K2 0711", + "created": 1752263252, + "description": "Kimi K2 Instruct is a large-scale Mixture-of-Experts (MoE) language model developed by Moonshot AI, featuring 1 trillion total parameters with 32 billion active per forward pass. It is optimized for...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000057", + "completion": "0.0000023" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/moonshotai/kimi-k2/endpoints" + } + }, + { + "id": "mistralai/devstral-medium", + "canonical_slug": "mistralai/devstral-medium-2507", + "hugging_face_id": "", + "name": "Mistral: Devstral Medium", + "created": 1752161321, + "description": "Devstral Medium is a high-performance code generation and agentic reasoning model developed jointly by Mistral AI and All Hands AI. Positioned as a step up from Devstral Small, it achieves...", + "context_length": 131072, + "architecture": { + "modality": "text+file->text", + "input_modalities": [ + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000004", + "completion": "0.000002", + "input_cache_read": "0.00000004" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 0.3 + }, + "supported_voices": null, + "knowledge_cutoff": "2025-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/devstral-medium-2507/endpoints" + } + }, + { + "id": "mistralai/devstral-small", + "canonical_slug": "mistralai/devstral-small-2507", + "hugging_face_id": "mistralai/Devstral-Small-2507", + "name": "Mistral: Devstral Small 1.1", + "created": 1752160751, + "description": "Devstral Small 1.1 is a 24B parameter open-weight language model for software engineering agents, developed by Mistral AI in collaboration with All Hands AI. Finetuned from Mistral Small 3.1 and...", + "context_length": 131072, + "architecture": { + "modality": "text+file->text", + "input_modalities": [ + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000001", + "completion": "0.0000003", + "input_cache_read": "0.00000001" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 0.3 + }, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/devstral-small-2507/endpoints" + } + }, + { + "id": "cognitivecomputations/dolphin-mistral-24b-venice-edition:free", + "canonical_slug": "venice/uncensored", + "hugging_face_id": "cognitivecomputations/Dolphin-Mistral-24B-Venice-Edition", + "name": "Venice: Uncensored (free)", + "created": 1752094966, + "description": "Venice Uncensored Dolphin Mistral 24B Venice Edition is a fine-tuned variant of Mistral-Small-24B-Instruct-2501, developed by dphn.ai in collaboration with Venice.ai. This model is designed as an “uncensored” instruct-tuned LLM, preserving...", + "context_length": 32768, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "response_format", + "stop", + "structured_outputs", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-04-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/venice/uncensored/endpoints" + } + }, + { + "id": "tencent/hunyuan-a13b-instruct", + "canonical_slug": "tencent/hunyuan-a13b-instruct", + "hugging_face_id": "tencent/Hunyuan-A13B-Instruct", + "name": "Tencent: Hunyuan A13B Instruct", + "created": 1751987664, + "description": "Hunyuan-A13B is a 13B active parameter Mixture-of-Experts (MoE) language model developed by Tencent, with a total parameter count of 80B and support for reasoning via Chain-of-Thought. It offers competitive benchmark...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000014", + "completion": "0.00000057" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 131072, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "structured_outputs", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/tencent/hunyuan-a13b-instruct/endpoints" + } + }, + { + "id": "morph/morph-v3-large", + "canonical_slug": "morph/morph-v3-large", + "hugging_face_id": "", + "name": "Morph: Morph V3 Large", + "created": 1751910858, + "description": "Morph's high-accuracy apply model for complex code edits. ~4,500 tokens/sec with 98% accuracy for precise code transformations. The model requires the prompt to be in the following format: {instruction} {initial_code}...", + "context_length": 262144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000009", + "completion": "0.0000019" + }, + "top_provider": { + "context_length": 262144, + "max_completion_tokens": 131072, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "stop", + "temperature" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/morph/morph-v3-large/endpoints" + } + }, + { + "id": "morph/morph-v3-fast", + "canonical_slug": "morph/morph-v3-fast", + "hugging_face_id": "", + "name": "Morph: Morph V3 Fast", + "created": 1751910002, + "description": "Morph's fastest apply model for code edits. ~10,500 tokens/sec with 96% accuracy for rapid code transformations. The model requires the prompt to be in the following format: {instruction} {initial_code} {edit_snippet}...", + "context_length": 81920, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000008", + "completion": "0.0000012" + }, + "top_provider": { + "context_length": 81920, + "max_completion_tokens": 38000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "stop", + "temperature" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/morph/morph-v3-fast/endpoints" + } + }, + { + "id": "baidu/ernie-4.5-vl-424b-a47b", + "canonical_slug": "baidu/ernie-4.5-vl-424b-a47b", + "hugging_face_id": "baidu/ERNIE-4.5-VL-424B-A47B-PT", + "name": "Baidu: ERNIE 4.5 VL 424B A47B ", + "created": 1751300903, + "description": "ERNIE-4.5-VL-424B-A47B is a multimodal Mixture-of-Experts (MoE) model from Baidu’s ERNIE 4.5 series, featuring 424B total parameters with 47B active per token. It is trained jointly on text and image data...", + "context_length": 131072, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "image", + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000042", + "completion": "0.00000125" + }, + "top_provider": { + "context_length": 123000, + "max_completion_tokens": 16000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "repetition_penalty", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/baidu/ernie-4.5-vl-424b-a47b/endpoints" + } + }, + { + "id": "baidu/ernie-4.5-300b-a47b", + "canonical_slug": "baidu/ernie-4.5-300b-a47b", + "hugging_face_id": "baidu/ERNIE-4.5-300B-A47B-PT", + "name": "Baidu: ERNIE 4.5 300B A47B ", + "created": 1751300139, + "description": "ERNIE-4.5-300B-A47B is a 300B parameter Mixture-of-Experts (MoE) language model developed by Baidu as part of the ERNIE 4.5 series. It activates 47B parameters per token and supports text generation in...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000028", + "completion": "0.0000011" + }, + "top_provider": { + "context_length": 123000, + "max_completion_tokens": 12000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/baidu/ernie-4.5-300b-a47b/endpoints" + } + }, + { + "id": "mistralai/mistral-small-3.2-24b-instruct", + "canonical_slug": "mistralai/mistral-small-3.2-24b-instruct-2506", + "hugging_face_id": "mistralai/Mistral-Small-3.2-24B-Instruct-2506", + "name": "Mistral: Mistral Small 3.2 24B", + "created": 1750443016, + "description": "Mistral-Small-3.2-24B-Instruct-2506 is an updated 24B parameter model from Mistral optimized for instruction following, repetition reduction, and improved function calling. Compared to the 3.1 release, version 3.2 significantly improves accuracy on...", + "context_length": 128000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "image", + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000075", + "completion": "0.0000002" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.3 + }, + "supported_voices": null, + "knowledge_cutoff": "2023-10-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/mistral-small-3.2-24b-instruct-2506/endpoints" + } + }, + { + "id": "minimax/minimax-m1", + "canonical_slug": "minimax/minimax-m1", + "hugging_face_id": "", + "name": "MiniMax: MiniMax M1", + "created": 1750200414, + "description": "MiniMax-M1 is a large-scale, open-weight reasoning model designed for extended context and high-efficiency inference. It leverages a hybrid Mixture-of-Experts (MoE) architecture paired with a custom \"lightning attention\" mechanism, allowing it...", + "context_length": 1000000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000004", + "completion": "0.0000022" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 40000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "repetition_penalty", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/minimax/minimax-m1/endpoints" + } + }, + { + "id": "google/gemini-2.5-flash", + "canonical_slug": "google/gemini-2.5-flash", + "hugging_face_id": "", + "name": "Google: Gemini 2.5 Flash", + "created": 1750172488, + "description": "Gemini 2.5 Flash is Google's state-of-the-art workhorse model, specifically designed for advanced reasoning, coding, mathematics, and scientific tasks. It includes built-in \"thinking\" capabilities, enabling it to provide responses with greater...", + "context_length": 1048576, + "architecture": { + "modality": "text+image+file+audio+video->text", + "input_modalities": [ + "file", + "image", + "text", + "audio", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemini", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000003", + "completion": "0.0000025", + "image": "0.0000003", + "audio": "0.000001", + "web_search": "0.014", + "internal_reasoning": "0.0000025", + "input_cache_read": "0.00000003", + "input_cache_write": "0.00000008333333333333334" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 65535, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-01-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemini-2.5-flash/endpoints" + } + }, + { + "id": "google/gemini-2.5-pro", + "canonical_slug": "google/gemini-2.5-pro", + "hugging_face_id": "", + "name": "Google: Gemini 2.5 Pro", + "created": 1750169544, + "description": "Gemini 2.5 Pro is Google’s state-of-the-art AI model designed for advanced reasoning, coding, mathematics, and scientific tasks. It employs “thinking” capabilities, enabling it to reason through responses with enhanced accuracy...", + "context_length": 1048576, + "architecture": { + "modality": "text+image+file+audio+video->text", + "input_modalities": [ + "text", + "image", + "file", + "audio", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemini", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000125", + "completion": "0.00001", + "image": "0.00000125", + "audio": "0.00000125", + "web_search": "0.014", + "internal_reasoning": "0.00001", + "input_cache_read": "0.000000125", + "input_cache_write": "0.000000375" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-01-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemini-2.5-pro/endpoints" + } + }, + { + "id": "openai/o3-pro", + "canonical_slug": "openai/o3-pro-2025-06-10", + "hugging_face_id": "", + "name": "OpenAI: o3 Pro", + "created": 1749598352, + "description": "The o-series of models are trained with reinforcement learning to think before they answer and perform complex reasoning. The o3-pro model uses more compute to think harder and provide consistently...", + "context_length": 200000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "file", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00002", + "completion": "0.00008", + "web_search": "0.01" + }, + "top_provider": { + "context_length": 200000, + "max_completion_tokens": 100000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/o3-pro-2025-06-10/endpoints" + } + }, + { + "id": "google/gemini-2.5-pro-preview", + "canonical_slug": "google/gemini-2.5-pro-preview-06-05", + "hugging_face_id": "", + "name": "Google: Gemini 2.5 Pro Preview 06-05", + "created": 1749137257, + "description": "Gemini 2.5 Pro is Google’s state-of-the-art AI model designed for advanced reasoning, coding, mathematics, and scientific tasks. It employs “thinking” capabilities, enabling it to reason through responses with enhanced accuracy...", + "context_length": 1048576, + "architecture": { + "modality": "text+image+file+audio->text", + "input_modalities": [ + "file", + "image", + "text", + "audio" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemini", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000125", + "completion": "0.00001", + "image": "0.00000125", + "audio": "0.00000125", + "web_search": "0.014", + "internal_reasoning": "0.00001", + "input_cache_read": "0.000000125", + "input_cache_write": "0.000000375" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-01-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemini-2.5-pro-preview-06-05/endpoints" + } + }, + { + "id": "deepseek/deepseek-r1-0528", + "canonical_slug": "deepseek/deepseek-r1-0528", + "hugging_face_id": "deepseek-ai/DeepSeek-R1-0528", + "name": "DeepSeek: R1 0528", + "created": 1748455170, + "description": "May 28th update to the [original DeepSeek R1](/deepseek/deepseek-r1) Performance on par with [OpenAI o1](/openai/o1), but open-sourced and with fully open reasoning tokens. It's 671B parameters in size, with 37B active...", + "context_length": 163840, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "DeepSeek", + "instruct_type": "deepseek-r1" + }, + "pricing": { + "prompt": "0.0000005", + "completion": "0.00000215", + "input_cache_read": "0.00000035" + }, + "top_provider": { + "context_length": 163840, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/deepseek/deepseek-r1-0528/endpoints" + } + }, + { + "id": "anthropic/claude-opus-4", + "canonical_slug": "anthropic/claude-4-opus-20250522", + "hugging_face_id": "", + "name": "Anthropic: Claude Opus 4", + "created": 1747931245, + "description": "Claude Opus 4 is benchmarked as the world’s best coding model, at time of release, bringing sustained performance on complex, long-running tasks and agent workflows. It sets new benchmarks in...", + "context_length": 200000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "image", + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Claude", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000015", + "completion": "0.000075", + "web_search": "0.01", + "input_cache_read": "0.0000015", + "input_cache_write": "0.00001875" + }, + "top_provider": { + "context_length": 200000, + "max_completion_tokens": 32000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-01-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/anthropic/claude-4-opus-20250522/endpoints" + } + }, + { + "id": "anthropic/claude-sonnet-4", + "canonical_slug": "anthropic/claude-4-sonnet-20250522", + "hugging_face_id": "", + "name": "Anthropic: Claude Sonnet 4", + "created": 1747930371, + "description": "Claude Sonnet 4 significantly enhances the capabilities of its predecessor, Sonnet 3.7, excelling in both coding and reasoning tasks with improved precision and controllability. Achieving state-of-the-art performance on SWE-bench (72.7%),...", + "context_length": 1000000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "image", + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Claude", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000003", + "completion": "0.000015", + "web_search": "0.01", + "input_cache_read": "0.0000003", + "input_cache_write": "0.00000375" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 64000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-01-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/anthropic/claude-4-sonnet-20250522/endpoints" + } + }, + { + "id": "google/gemma-3n-e4b-it", + "canonical_slug": "google/gemma-3n-e4b-it", + "hugging_face_id": "google/gemma-3n-E4B-it", + "name": "Google: Gemma 3n 4B", + "created": 1747776824, + "description": "Gemma 3n E4B-it is optimized for efficient execution on mobile and low-resource devices, such as phones, laptops, and tablets. It supports multimodal inputs—including text, visual data, and audio—enabling diverse tasks...", + "context_length": 32768, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000006", + "completion": "0.00000012" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-08-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemma-3n-e4b-it/endpoints" + } + }, + { + "id": "mistralai/mistral-medium-3", + "canonical_slug": "mistralai/mistral-medium-3", + "hugging_face_id": "", + "name": "Mistral: Mistral Medium 3", + "created": 1746627341, + "description": "Mistral Medium 3 is a high-performance enterprise-grade language model designed to deliver frontier-level capabilities at significantly reduced operational cost. It balances state-of-the-art reasoning and multimodal performance with 8× lower cost...", + "context_length": 131072, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000004", + "completion": "0.000002", + "input_cache_read": "0.00000004" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 0.3 + }, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/mistral-medium-3/endpoints" + } + }, + { + "id": "google/gemini-2.5-pro-preview-05-06", + "canonical_slug": "google/gemini-2.5-pro-preview-03-25", + "hugging_face_id": "", + "name": "Google: Gemini 2.5 Pro Preview 05-06", + "created": 1746578513, + "description": "Gemini 2.5 Pro is Google’s state-of-the-art AI model designed for advanced reasoning, coding, mathematics, and scientific tasks. It employs “thinking” capabilities, enabling it to reason through responses with enhanced accuracy...", + "context_length": 1048576, + "architecture": { + "modality": "text+image+file+audio+video->text", + "input_modalities": [ + "text", + "image", + "file", + "audio", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemini", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000125", + "completion": "0.00001", + "image": "0.00000125", + "audio": "0.00000125", + "web_search": "0.014", + "internal_reasoning": "0.00001", + "input_cache_read": "0.000000125", + "input_cache_write": "0.000000375" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 65535, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-01-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemini-2.5-pro-preview-03-25/endpoints" + } + }, + { + "id": "arcee-ai/spotlight", + "canonical_slug": "arcee-ai/spotlight", + "hugging_face_id": "", + "name": "Arcee AI: Spotlight", + "created": 1746481552, + "description": "Spotlight is a 7‑billion‑parameter vision‑language model derived from Qwen 2.5‑VL and fine‑tuned by Arcee AI for tight image‑text grounding tasks. It offers a 32 k‑token context window, enabling rich multimodal...", + "context_length": 131072, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "image", + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000018", + "completion": "0.00000018" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 65537, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/arcee-ai/spotlight/endpoints" + } + }, + { + "id": "arcee-ai/maestro-reasoning", + "canonical_slug": "arcee-ai/maestro-reasoning", + "hugging_face_id": "", + "name": "Arcee AI: Maestro Reasoning", + "created": 1746481269, + "description": "Maestro Reasoning is Arcee's flagship analysis model: a 32 B‑parameter derivative of Qwen 2.5‑32 B tuned with DPO and chain‑of‑thought RL for step‑by‑step logic. Compared to the earlier 7 B...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000009", + "completion": "0.0000033" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 32000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/arcee-ai/maestro-reasoning/endpoints" + } + }, + { + "id": "arcee-ai/virtuoso-large", + "canonical_slug": "arcee-ai/virtuoso-large", + "hugging_face_id": "", + "name": "Arcee AI: Virtuoso Large", + "created": 1746478885, + "description": "Virtuoso‑Large is Arcee's top‑tier general‑purpose LLM at 72 B parameters, tuned to tackle cross‑domain reasoning, creative writing and enterprise QA. Unlike many 70 B peers, it retains the 128 k...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000075", + "completion": "0.0000012" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 64000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/arcee-ai/virtuoso-large/endpoints" + } + }, + { + "id": "arcee-ai/coder-large", + "canonical_slug": "arcee-ai/coder-large", + "hugging_face_id": "", + "name": "Arcee AI: Coder Large", + "created": 1746478663, + "description": "Coder‑Large is a 32 B‑parameter offspring of Qwen 2.5‑Instruct that has been further trained on permissively‑licensed GitHub, CodeSearchNet and synthetic bug‑fix corpora. It supports a 32k context window, enabling multi‑file...", + "context_length": 32768, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000005", + "completion": "0.0000008" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/arcee-ai/coder-large/endpoints" + } + }, + { + "id": "meta-llama/llama-guard-4-12b", + "canonical_slug": "meta-llama/llama-guard-4-12b", + "hugging_face_id": "meta-llama/Llama-Guard-4-12B", + "name": "Meta: Llama Guard 4 12B", + "created": 1745975193, + "description": "Llama Guard 4 is a Llama 4 Scout-derived multimodal pretrained model, fine-tuned for content safety classification. Similar to previous versions, it can be used to classify content in both LLM...", + "context_length": 163840, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "image", + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000018", + "completion": "0.00000018" + }, + "top_provider": { + "context_length": 163840, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-08-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/meta-llama/llama-guard-4-12b/endpoints" + } + }, + { + "id": "qwen/qwen3-30b-a3b", + "canonical_slug": "qwen/qwen3-30b-a3b-04-28", + "hugging_face_id": "Qwen/Qwen3-30B-A3B", + "name": "Qwen: Qwen3 30B A3B", + "created": 1745878604, + "description": "Qwen3, the latest generation in the Qwen large language model series, features both dense and mixture-of-experts (MoE) architectures to excel in reasoning, multilingual support, and advanced agent tasks. Its unique...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": "qwen3" + }, + "pricing": { + "prompt": "0.00000009", + "completion": "0.00000045" + }, + "top_provider": { + "context_length": 40960, + "max_completion_tokens": 20000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": "2026-06-05", + "links": { + "details": "/api/v1/models/qwen/qwen3-30b-a3b-04-28/endpoints" + } + }, + { + "id": "qwen/qwen3-8b", + "canonical_slug": "qwen/qwen3-8b-04-28", + "hugging_face_id": "Qwen/Qwen3-8B", + "name": "Qwen: Qwen3 8B", + "created": 1745876632, + "description": "Qwen3-8B is a dense 8.2B parameter causal language model from the Qwen3 series, designed for both reasoning-heavy tasks and efficient dialogue. It supports seamless switching between \"thinking\" mode for math,...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": "qwen3" + }, + "pricing": { + "prompt": "0.00000005", + "completion": "0.0000004", + "input_cache_read": "0.00000005" + }, + "top_provider": { + "context_length": 40960, + "max_completion_tokens": 8192, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.6, + "top_p": 0.95, + "top_k": 20, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-8b-04-28/endpoints" + } + }, + { + "id": "qwen/qwen3-14b", + "canonical_slug": "qwen/qwen3-14b-04-28", + "hugging_face_id": "Qwen/Qwen3-14B", + "name": "Qwen: Qwen3 14B", + "created": 1745876478, + "description": "Qwen3-14B is a dense 14.8B parameter causal language model from the Qwen3 series, designed for both complex reasoning and efficient dialogue. It supports seamless switching between a \"thinking\" mode for...", + "context_length": 131702, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": "qwen3" + }, + "pricing": { + "prompt": "0.0000001", + "completion": "0.00000024" + }, + "top_provider": { + "context_length": 40960, + "max_completion_tokens": 40960, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-14b-04-28/endpoints" + } + }, + { + "id": "qwen/qwen3-32b", + "canonical_slug": "qwen/qwen3-32b-04-28", + "hugging_face_id": "Qwen/Qwen3-32B", + "name": "Qwen: Qwen3 32B", + "created": 1745875945, + "description": "Qwen3-32B is a dense 32.8B parameter causal language model from the Qwen3 series, optimized for both complex reasoning and efficient dialogue. It supports seamless switching between a \"thinking\" mode for...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": "qwen3" + }, + "pricing": { + "prompt": "0.00000008", + "completion": "0.00000028" + }, + "top_provider": { + "context_length": 40960, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-32b-04-28/endpoints" + } + }, + { + "id": "qwen/qwen3-235b-a22b", + "canonical_slug": "qwen/qwen3-235b-a22b-04-28", + "hugging_face_id": "Qwen/Qwen3-235B-A22B", + "name": "Qwen: Qwen3 235B A22B", + "created": 1745875757, + "description": "Qwen3-235B-A22B is a 235B parameter mixture-of-experts (MoE) model developed by Qwen, activating 22B parameters per forward pass. It supports seamless switching between a \"thinking\" mode for complex reasoning, math, and...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen3", + "instruct_type": "qwen3" + }, + "pricing": { + "prompt": "0.000000455", + "completion": "0.00000182" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 8192, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "response_format", + "seed", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen3-235b-a22b-04-28/endpoints" + } + }, + { + "id": "openai/o4-mini-high", + "canonical_slug": "openai/o4-mini-high-2025-04-16", + "hugging_face_id": "", + "name": "OpenAI: o4 Mini High", + "created": 1744824212, + "description": "OpenAI o4-mini-high is the same model as [o4-mini](/openai/o4-mini) with reasoning_effort set to high. OpenAI o4-mini is a compact reasoning model in the o-series, optimized for fast, cost-efficient performance while retaining...", + "context_length": 200000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "image", + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000011", + "completion": "0.0000044", + "web_search": "0.01", + "input_cache_read": "0.000000275" + }, + "top_provider": { + "context_length": 200000, + "max_completion_tokens": 100000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/o4-mini-high-2025-04-16/endpoints" + } + }, + { + "id": "openai/o3", + "canonical_slug": "openai/o3-2025-04-16", + "hugging_face_id": "", + "name": "OpenAI: o3", + "created": 1744823457, + "description": "o3 is a well-rounded and powerful model across domains. It sets a new standard for math, science, coding, and visual reasoning tasks. It also excels at technical writing and instruction-following....", + "context_length": 200000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "image", + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000002", + "completion": "0.000008", + "web_search": "0.01", + "input_cache_read": "0.0000005" + }, + "top_provider": { + "context_length": 200000, + "max_completion_tokens": 100000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/o3-2025-04-16/endpoints" + } + }, + { + "id": "openai/o4-mini", + "canonical_slug": "openai/o4-mini-2025-04-16", + "hugging_face_id": "", + "name": "OpenAI: o4 Mini", + "created": 1744820942, + "description": "OpenAI o4-mini is a compact reasoning model in the o-series, optimized for fast, cost-efficient performance while retaining strong multimodal and agentic capabilities. It supports tool use and demonstrates competitive reasoning...", + "context_length": 200000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "image", + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000011", + "completion": "0.0000044", + "web_search": "0.01", + "input_cache_read": "0.000000275" + }, + "top_provider": { + "context_length": 200000, + "max_completion_tokens": 100000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/o4-mini-2025-04-16/endpoints" + } + }, + { + "id": "openai/gpt-4.1", + "canonical_slug": "openai/gpt-4.1-2025-04-14", + "hugging_face_id": "", + "name": "OpenAI: GPT-4.1", + "created": 1744651385, + "description": "GPT-4.1 is a flagship large language model optimized for advanced instruction following, real-world software engineering, and long-context reasoning. It supports a 1 million token context window and outperforms GPT-4o and...", + "context_length": 1047576, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "image", + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000002", + "completion": "0.000008", + "web_search": "0.01", + "input_cache_read": "0.0000005" + }, + "top_provider": { + "context_length": 1047576, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_completion_tokens", + "max_tokens", + "response_format", + "seed", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-4.1-2025-04-14/endpoints" + } + }, + { + "id": "openai/gpt-4.1-mini", + "canonical_slug": "openai/gpt-4.1-mini-2025-04-14", + "hugging_face_id": "", + "name": "OpenAI: GPT-4.1 Mini", + "created": 1744651381, + "description": "GPT-4.1 Mini is a mid-sized model delivering performance competitive with GPT-4o at substantially lower latency and cost. It retains a 1 million token context window and scores 45.1% on hard...", + "context_length": 1047576, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "image", + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000004", + "completion": "0.0000016", + "web_search": "0.01", + "input_cache_read": "0.0000001" + }, + "top_provider": { + "context_length": 1047576, + "max_completion_tokens": 32768, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "max_completion_tokens", + "max_tokens", + "response_format", + "seed", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-4.1-mini-2025-04-14/endpoints" + } + }, + { + "id": "openai/gpt-4.1-nano", + "canonical_slug": "openai/gpt-4.1-nano-2025-04-14", + "hugging_face_id": "", + "name": "OpenAI: GPT-4.1 Nano", + "created": 1744651369, + "description": "For tasks that demand low latency, GPT‑4.1 nano is the fastest and cheapest model in the GPT-4.1 series. It delivers exceptional performance at a small size with its 1 million...", + "context_length": 1047576, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "image", + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000001", + "completion": "0.0000004", + "web_search": "0.01", + "input_cache_read": "0.000000025" + }, + "top_provider": { + "context_length": 1047576, + "max_completion_tokens": 32768, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "max_completion_tokens", + "max_tokens", + "response_format", + "seed", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-4.1-nano-2025-04-14/endpoints" + } + }, + { + "id": "alfredpros/codellama-7b-instruct-solidity", + "canonical_slug": "alfredpros/codellama-7b-instruct-solidity", + "hugging_face_id": "AlfredPros/CodeLlama-7b-Instruct-Solidity", + "name": "AlfredPros: CodeLLaMa 7B Instruct Solidity", + "created": 1744641874, + "description": "A finetuned 7 billion parameters Code LLaMA - Instruct model to generate Solidity smart contract using 4-bit QLoRA finetuning provided by PEFT library.", + "context_length": 4096, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": "alpaca" + }, + "pricing": { + "prompt": "0.0000008", + "completion": "0.0000012" + }, + "top_provider": { + "context_length": 4096, + "max_completion_tokens": 4096, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/alfredpros/codellama-7b-instruct-solidity/endpoints" + } + }, + { + "id": "meta-llama/llama-4-maverick", + "canonical_slug": "meta-llama/llama-4-maverick-17b-128e-instruct", + "hugging_face_id": "meta-llama/Llama-4-Maverick-17B-128E-Instruct", + "name": "Meta: Llama 4 Maverick", + "created": 1743881822, + "description": "Llama 4 Maverick 17B Instruct (128E) is a high-capacity multimodal language model from Meta, built on a mixture-of-experts (MoE) architecture with 128 experts and 17 billion active parameters per forward...", + "context_length": 1048576, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama4", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000015", + "completion": "0.0000006" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-08-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/meta-llama/llama-4-maverick-17b-128e-instruct/endpoints" + } + }, + { + "id": "meta-llama/llama-4-scout", + "canonical_slug": "meta-llama/llama-4-scout-17b-16e-instruct", + "hugging_face_id": "meta-llama/Llama-4-Scout-17B-16E-Instruct", + "name": "Meta: Llama 4 Scout", + "created": 1743881519, + "description": "Llama 4 Scout 17B Instruct (16E) is a mixture-of-experts (MoE) language model developed by Meta, activating 17 billion parameters out of a total of 109B. It supports native multimodal input...", + "context_length": 10000000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama4", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000008", + "completion": "0.0000003" + }, + "top_provider": { + "context_length": 327680, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-08-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/meta-llama/llama-4-scout-17b-16e-instruct/endpoints" + } + }, + { + "id": "deepseek/deepseek-chat-v3-0324", + "canonical_slug": "deepseek/deepseek-chat-v3-0324", + "hugging_face_id": "deepseek-ai/DeepSeek-V3-0324", + "name": "DeepSeek: DeepSeek V3 0324", + "created": 1742824755, + "description": "DeepSeek V3, a 685B-parameter, mixture-of-experts model, is the latest iteration of the flagship chat model family from the DeepSeek team. It succeeds the [DeepSeek V3](/deepseek/deepseek-chat-v3) model and performs really well...", + "context_length": 163840, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "DeepSeek", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000002", + "completion": "0.00000077", + "input_cache_read": "0.000000135" + }, + "top_provider": { + "context_length": 163840, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-07-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/deepseek/deepseek-chat-v3-0324/endpoints" + } + }, + { + "id": "openai/o1-pro", + "canonical_slug": "openai/o1-pro", + "hugging_face_id": "", + "name": "OpenAI: o1-pro", + "created": 1742423211, + "description": "The o1 series of models are trained with reinforcement learning to think before they answer and perform complex reasoning. The o1-pro model uses more compute to think harder and provide...", + "context_length": 200000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00015", + "completion": "0.0006", + "web_search": "0.01" + }, + "top_provider": { + "context_length": 200000, + "max_completion_tokens": 100000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-10-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/o1-pro/endpoints" + } + }, + { + "id": "mistralai/mistral-small-3.1-24b-instruct", + "canonical_slug": "mistralai/mistral-small-3.1-24b-instruct-2503", + "hugging_face_id": "mistralai/Mistral-Small-3.1-24B-Instruct-2503", + "name": "Mistral: Mistral Small 3.1 24B", + "created": 1742238937, + "description": "Mistral Small 3.1 24B Instruct is an upgraded variant of Mistral Small 3 (2501), featuring 24 billion parameters with advanced multimodal capabilities. It provides state-of-the-art performance in text-based reasoning and...", + "context_length": 128000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000351", + "completion": "0.000000555" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 128000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.3 + }, + "supported_voices": null, + "knowledge_cutoff": "2023-10-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/mistral-small-3.1-24b-instruct-2503/endpoints" + } + }, + { + "id": "google/gemma-3-4b-it", + "canonical_slug": "google/gemma-3-4b-it", + "hugging_face_id": "google/gemma-3-4b-it", + "name": "Google: Gemma 3 4B", + "created": 1741905510, + "description": "Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilities,...", + "context_length": 131072, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemini", + "instruct_type": "gemma" + }, + "pricing": { + "prompt": "0.00000004", + "completion": "0.00000008" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-08-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemma-3-4b-it/endpoints" + } + }, + { + "id": "google/gemma-3-12b-it", + "canonical_slug": "google/gemma-3-12b-it", + "hugging_face_id": "google/gemma-3-12b-it", + "name": "Google: Gemma 3 12B", + "created": 1741902625, + "description": "Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilities,...", + "context_length": 131072, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemini", + "instruct_type": "gemma" + }, + "pricing": { + "prompt": "0.00000004", + "completion": "0.00000013" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-08-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemma-3-12b-it/endpoints" + } + }, + { + "id": "cohere/command-a", + "canonical_slug": "cohere/command-a-03-2025", + "hugging_face_id": "CohereForAI/c4ai-command-a-03-2025", + "name": "Cohere: Command A", + "created": 1741894342, + "description": "Command A is an open-weights 111B parameter model with a 256k context window focused on delivering great performance across agentic, multilingual, and coding use cases. Compared to other leading proprietary...", + "context_length": 256000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000025", + "completion": "0.00001" + }, + "top_provider": { + "context_length": 256000, + "max_completion_tokens": 8192, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-08-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/cohere/command-a-03-2025/endpoints" + } + }, + { + "id": "openai/gpt-4o-mini-search-preview", + "canonical_slug": "openai/gpt-4o-mini-search-preview-2025-03-11", + "hugging_face_id": "", + "name": "OpenAI: GPT-4o-mini Search Preview", + "created": 1741818122, + "description": "GPT-4o mini Search Preview is a specialized model for web search in Chat Completions. It is trained to understand and execute web search queries.", + "context_length": 128000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000015", + "completion": "0.0000006", + "web_search": "0.0275" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 16384, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "response_format", + "structured_outputs", + "web_search_options" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-10-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-4o-mini-search-preview-2025-03-11/endpoints" + } + }, + { + "id": "openai/gpt-4o-search-preview", + "canonical_slug": "openai/gpt-4o-search-preview-2025-03-11", + "hugging_face_id": "", + "name": "OpenAI: GPT-4o Search Preview", + "created": 1741817949, + "description": "GPT-4o Search Previewis a specialized model for web search in Chat Completions. It is trained to understand and execute web search queries.", + "context_length": 128000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000025", + "completion": "0.00001", + "web_search": "0.035" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 16384, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "response_format", + "structured_outputs", + "web_search_options" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-10-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-4o-search-preview-2025-03-11/endpoints" + } + }, + { + "id": "rekaai/reka-flash-3", + "canonical_slug": "rekaai/reka-flash-3", + "hugging_face_id": "RekaAI/reka-flash-3", + "name": "Reka Flash 3", + "created": 1741812813, + "description": "Reka Flash 3 is a general-purpose, instruction-tuned large language model with 21 billion parameters, developed by Reka. It excels at general chat, coding tasks, instruction-following, and function calling. Featuring a...", + "context_length": 65536, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000001", + "completion": "0.0000002" + }, + "top_provider": { + "context_length": 65536, + "max_completion_tokens": 65536, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2025-01-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/rekaai/reka-flash-3/endpoints" + } + }, + { + "id": "google/gemma-3-27b-it", + "canonical_slug": "google/gemma-3-27b-it", + "hugging_face_id": "google/gemma-3-27b-it", + "name": "Google: Gemma 3 27B", + "created": 1741756359, + "description": "Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilities,...", + "context_length": 131072, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemini", + "instruct_type": "gemma" + }, + "pricing": { + "prompt": "0.00000008", + "completion": "0.00000016" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-08-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemma-3-27b-it/endpoints" + } + }, + { + "id": "thedrummer/skyfall-36b-v2", + "canonical_slug": "thedrummer/skyfall-36b-v2", + "hugging_face_id": "TheDrummer/Skyfall-36B-v2", + "name": "TheDrummer: Skyfall 36B V2", + "created": 1741636566, + "description": "Skyfall 36B v2 is an enhanced iteration of Mistral Small 2501, specifically fine-tuned for improved creativity, nuanced writing, role-playing, and coherent storytelling.", + "context_length": 32768, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000055", + "completion": "0.0000008", + "input_cache_read": "0.00000025" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/thedrummer/skyfall-36b-v2/endpoints" + } + }, + { + "id": "perplexity/sonar-reasoning-pro", + "canonical_slug": "perplexity/sonar-reasoning-pro", + "hugging_face_id": "", + "name": "Perplexity: Sonar Reasoning Pro", + "created": 1741313308, + "description": "Note: Sonar Pro pricing includes Perplexity search pricing. See [details here](https://docs.perplexity.ai/guides/pricing#detailed-pricing-breakdown-for-sonar-reasoning-pro-and-sonar-pro) Sonar Reasoning Pro is a premier reasoning model powered by DeepSeek R1 with Chain of Thought (CoT). Designed for...", + "context_length": 128000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": "deepseek-r1" + }, + "pricing": { + "prompt": "0.000002", + "completion": "0.000008", + "web_search": "0.005" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "temperature", + "top_k", + "top_p", + "web_search_options" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/perplexity/sonar-reasoning-pro/endpoints" + } + }, + { + "id": "perplexity/sonar-pro", + "canonical_slug": "perplexity/sonar-pro", + "hugging_face_id": "", + "name": "Perplexity: Sonar Pro", + "created": 1741312423, + "description": "Note: Sonar Pro pricing includes Perplexity search pricing. See [details here](https://docs.perplexity.ai/guides/pricing#detailed-pricing-breakdown-for-sonar-reasoning-pro-and-sonar-pro) For enterprises seeking more advanced capabilities, the Sonar Pro API can handle in-depth, multi-step queries with added extensibility, like...", + "context_length": 200000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000003", + "completion": "0.000015", + "web_search": "0.005" + }, + "top_provider": { + "context_length": 200000, + "max_completion_tokens": 8000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "temperature", + "top_k", + "top_p", + "web_search_options" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/perplexity/sonar-pro/endpoints" + } + }, + { + "id": "perplexity/sonar-deep-research", + "canonical_slug": "perplexity/sonar-deep-research", + "hugging_face_id": "", + "name": "Perplexity: Sonar Deep Research", + "created": 1741311246, + "description": "Sonar Deep Research is a research-focused model designed for multi-step retrieval, synthesis, and reasoning across complex topics. It autonomously searches, reads, and evaluates sources, refining its approach as it gathers...", + "context_length": 128000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": "deepseek-r1" + }, + "pricing": { + "prompt": "0.000002", + "completion": "0.000008", + "web_search": "0.005", + "internal_reasoning": "0.000003" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_tokens", + "presence_penalty", + "reasoning", + "temperature", + "top_k", + "top_p", + "web_search_options" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/perplexity/sonar-deep-research/endpoints" + } + }, + { + "id": "google/gemini-2.0-flash-lite-001", + "canonical_slug": "google/gemini-2.0-flash-lite-001", + "hugging_face_id": "", + "name": "Google: Gemini 2.0 Flash Lite", + "created": 1740506212, + "description": "Gemini 2.0 Flash Lite offers a significantly faster time to first token (TTFT) compared to [Gemini Flash 1.5](/google/gemini-flash-1.5), while maintaining quality on par with larger models like [Gemini Pro 1.5](/google/gemini-pro-1.5),...", + "context_length": 1048576, + "architecture": { + "modality": "text+image+file+audio+video->text", + "input_modalities": [ + "text", + "image", + "file", + "audio", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemini", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000075", + "completion": "0.0000003", + "image": "0.000000075", + "audio": "0.000000075", + "web_search": "0.014", + "internal_reasoning": "0.0000003" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 8192, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-08-31", + "expiration_date": "2026-06-01", + "links": { + "details": "/api/v1/models/google/gemini-2.0-flash-lite-001/endpoints" + } + }, + { + "id": "mistralai/mistral-saba", + "canonical_slug": "mistralai/mistral-saba-2502", + "hugging_face_id": "", + "name": "Mistral: Saba", + "created": 1739803239, + "description": "Mistral Saba is a 24B-parameter language model specifically designed for the Middle East and South Asia, delivering accurate and contextually relevant responses while maintaining efficient performance. Trained on curated regional...", + "context_length": 32768, + "architecture": { + "modality": "text+file->text", + "input_modalities": [ + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000002", + "completion": "0.0000006", + "input_cache_read": "0.00000002" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 0.3 + }, + "supported_voices": null, + "knowledge_cutoff": "2024-09-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/mistral-saba-2502/endpoints" + } + }, + { + "id": "meta-llama/llama-guard-3-8b", + "canonical_slug": "meta-llama/llama-guard-3-8b", + "hugging_face_id": "meta-llama/Llama-Guard-3-8B", + "name": "Llama Guard 3 8B", + "created": 1739401318, + "description": "Llama Guard 3 is a Llama-3.1-8B pretrained model, fine-tuned for content safety classification. Similar to previous versions, it can be used to classify content in both LLM inputs (prompt classification)...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "none" + }, + "pricing": { + "prompt": "0.000000484", + "completion": "0.00000003" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 131072, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/meta-llama/llama-guard-3-8b/endpoints" + } + }, + { + "id": "openai/o3-mini-high", + "canonical_slug": "openai/o3-mini-high-2025-01-31", + "hugging_face_id": "", + "name": "OpenAI: o3 Mini High", + "created": 1739372611, + "description": "OpenAI o3-mini-high is the same model as [o3-mini](/openai/o3-mini) with reasoning_effort set to high. o3-mini is a cost-efficient language model optimized for STEM reasoning tasks, particularly excelling in science, mathematics, and...", + "context_length": 200000, + "architecture": { + "modality": "text+file->text", + "input_modalities": [ + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000011", + "completion": "0.0000044", + "web_search": "0.01", + "input_cache_read": "0.00000055" + }, + "top_provider": { + "context_length": 200000, + "max_completion_tokens": 100000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2023-10-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/o3-mini-high-2025-01-31/endpoints" + } + }, + { + "id": "google/gemini-2.0-flash-001", + "canonical_slug": "google/gemini-2.0-flash-001", + "hugging_face_id": "", + "name": "Google: Gemini 2.0 Flash", + "created": 1738769413, + "description": "Gemini Flash 2.0 offers a significantly faster time to first token (TTFT) compared to [Gemini Flash 1.5](/google/gemini-flash-1.5), while maintaining quality on par with larger models like [Gemini Pro 1.5](/google/gemini-pro-1.5). It...", + "context_length": 1048576, + "architecture": { + "modality": "text+image+file+audio+video->text", + "input_modalities": [ + "text", + "image", + "file", + "audio", + "video" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemini", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000001", + "completion": "0.0000004", + "image": "0.0000001", + "audio": "0.0000007", + "web_search": "0.014", + "internal_reasoning": "0.0000004", + "input_cache_read": "0.000000025", + "input_cache_write": "0.00000008333333333333334" + }, + "top_provider": { + "context_length": 1048576, + "max_completion_tokens": 8192, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-08-31", + "expiration_date": "2026-06-01", + "links": { + "details": "/api/v1/models/google/gemini-2.0-flash-001/endpoints" + } + }, + { + "id": "aion-labs/aion-1.0", + "canonical_slug": "aion-labs/aion-1.0", + "hugging_face_id": "", + "name": "AionLabs: Aion-1.0", + "created": 1738697557, + "description": "Aion-1.0 is a multi-model system designed for high performance across various tasks, including reasoning and coding. It is built on DeepSeek-R1, augmented with additional models and techniques such as Tree...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000004", + "completion": "0.000008" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "temperature", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/aion-labs/aion-1.0/endpoints" + } + }, + { + "id": "aion-labs/aion-1.0-mini", + "canonical_slug": "aion-labs/aion-1.0-mini", + "hugging_face_id": "FuseAI/FuseO1-DeepSeekR1-QwQ-SkyT1-32B-Preview", + "name": "AionLabs: Aion-1.0-Mini", + "created": 1738697107, + "description": "Aion-1.0-Mini 32B parameter model is a distilled version of the DeepSeek-R1 model, designed for strong performance in reasoning domains such as mathematics, coding, and logic. It is a modified variant...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000007", + "completion": "0.0000014" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "temperature", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/aion-labs/aion-1.0-mini/endpoints" + } + }, + { + "id": "aion-labs/aion-rp-llama-3.1-8b", + "canonical_slug": "aion-labs/aion-rp-llama-3.1-8b", + "hugging_face_id": "", + "name": "AionLabs: Aion-RP 1.0 (8B)", + "created": 1738696718, + "description": "Aion-RP-Llama-3.1-8B ranks the highest in the character evaluation portion of the RPBench-Auto benchmark, a roleplaying-specific variant of Arena-Hard-Auto, where LLMs evaluate each other’s responses. It is a fine-tuned base model...", + "context_length": 32768, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000008", + "completion": "0.0000016" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "temperature", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/aion-labs/aion-rp-llama-3.1-8b/endpoints" + } + }, + { + "id": "qwen/qwen2.5-vl-72b-instruct", + "canonical_slug": "qwen/qwen2.5-vl-72b-instruct", + "hugging_face_id": "Qwen/Qwen2.5-VL-72B-Instruct", + "name": "Qwen: Qwen2.5 VL 72B Instruct", + "created": 1738410311, + "description": "Qwen2.5-VL is proficient in recognizing common objects such as flowers, birds, fish, and insects. It is also highly capable of analyzing texts, charts, icons, graphics, and layouts within images.", + "context_length": 131072, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000025", + "completion": "0.00000075" + }, + "top_provider": { + "context_length": 32000, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen2.5-vl-72b-instruct/endpoints" + } + }, + { + "id": "qwen/qwen-plus", + "canonical_slug": "qwen/qwen-plus-2025-01-25", + "hugging_face_id": "", + "name": "Qwen: Qwen-Plus", + "created": 1738409840, + "description": "Qwen-Plus, based on the Qwen2.5 foundation model, is a 131K context model with a balanced performance, speed, and cost combination.", + "context_length": 1000000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000026", + "completion": "0.00000078", + "input_cache_read": "0.000000052", + "input_cache_write": "0.000000325" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2025-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen-plus-2025-01-25/endpoints" + } + }, + { + "id": "openai/o3-mini", + "canonical_slug": "openai/o3-mini-2025-01-31", + "hugging_face_id": "", + "name": "OpenAI: o3 Mini", + "created": 1738351721, + "description": "OpenAI o3-mini is a cost-efficient language model optimized for STEM reasoning tasks, particularly excelling in science, mathematics, and coding. This model supports the `reasoning_effort` parameter, which can be set to...", + "context_length": 200000, + "architecture": { + "modality": "text+file->text", + "input_modalities": [ + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000011", + "completion": "0.0000044", + "web_search": "0.01", + "input_cache_read": "0.00000055" + }, + "top_provider": { + "context_length": 200000, + "max_completion_tokens": 100000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2023-10-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/o3-mini-2025-01-31/endpoints" + } + }, + { + "id": "mistralai/mistral-small-24b-instruct-2501", + "canonical_slug": "mistralai/mistral-small-24b-instruct-2501", + "hugging_face_id": "mistralai/Mistral-Small-24B-Instruct-2501", + "name": "Mistral: Mistral Small 3", + "created": 1738255409, + "description": "Mistral Small 3 is a 24B-parameter language model optimized for low-latency performance across common AI tasks. Released under the Apache 2.0 license, it features both pre-trained and instruction-tuned versions designed...", + "context_length": 32768, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000005", + "completion": "0.00000008" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.3, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2023-10-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/mistral-small-24b-instruct-2501/endpoints" + } + }, + { + "id": "deepseek/deepseek-r1-distill-qwen-32b", + "canonical_slug": "deepseek/deepseek-r1-distill-qwen-32b", + "hugging_face_id": "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", + "name": "DeepSeek: R1 Distill Qwen 32B", + "created": 1738194830, + "description": "DeepSeek R1 Distill Qwen 32B is a distilled large language model based on [Qwen 2.5 32B](https://huggingface.co/Qwen/Qwen2.5-32B), using outputs from [DeepSeek R1](/deepseek/deepseek-r1). It outperforms OpenAI's o1-mini across various benchmarks, achieving new...", + "context_length": 128000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen", + "instruct_type": "deepseek-r1" + }, + "pricing": { + "prompt": "0.00000029", + "completion": "0.00000029" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logprobs", + "max_tokens", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_logprobs", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-07-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/deepseek/deepseek-r1-distill-qwen-32b/endpoints" + } + }, + { + "id": "perplexity/sonar", + "canonical_slug": "perplexity/sonar", + "hugging_face_id": "", + "name": "Perplexity: Sonar", + "created": 1738013808, + "description": "Sonar is lightweight, affordable, fast, and simple to use — now featuring citations and the ability to customize sources. It is designed for companies seeking to integrate lightweight question-and-answer features...", + "context_length": 127072, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000001", + "completion": "0.000001", + "web_search": "0.005" + }, + "top_provider": { + "context_length": 127072, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "temperature", + "top_k", + "top_p", + "web_search_options" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/perplexity/sonar/endpoints" + } + }, + { + "id": "deepseek/deepseek-r1-distill-llama-70b", + "canonical_slug": "deepseek/deepseek-r1-distill-llama-70b", + "hugging_face_id": "deepseek-ai/DeepSeek-R1-Distill-Llama-70B", + "name": "DeepSeek: R1 Distill Llama 70B", + "created": 1737663169, + "description": "DeepSeek R1 Distill Llama 70B is a distilled large language model based on [Llama-3.3-70B-Instruct](/meta-llama/llama-3.3-70b-instruct), using outputs from [DeepSeek R1](/deepseek/deepseek-r1). The model combines advanced distillation techniques to achieve high performance across...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "deepseek-r1" + }, + "pricing": { + "prompt": "0.0000007", + "completion": "0.0000008" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-07-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/deepseek/deepseek-r1-distill-llama-70b/endpoints" + } + }, + { + "id": "deepseek/deepseek-r1", + "canonical_slug": "deepseek/deepseek-r1", + "hugging_face_id": "deepseek-ai/DeepSeek-R1", + "name": "DeepSeek: R1", + "created": 1737381095, + "description": "DeepSeek R1 is here: Performance on par with [OpenAI o1](/openai/o1), but open-sourced and with fully open reasoning tokens. It's 671B parameters in size, with 37B active in an inference pass....", + "context_length": 163840, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "DeepSeek", + "instruct_type": "deepseek-r1" + }, + "pricing": { + "prompt": "0.0000007", + "completion": "0.0000025" + }, + "top_provider": { + "context_length": 64000, + "max_completion_tokens": 16000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "max_completion_tokens", + "max_tokens", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-07-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/deepseek/deepseek-r1/endpoints" + } + }, + { + "id": "minimax/minimax-01", + "canonical_slug": "minimax/minimax-01", + "hugging_face_id": "MiniMaxAI/MiniMax-Text-01", + "name": "MiniMax: MiniMax-01", + "created": 1736915462, + "description": "MiniMax-01 is a combines MiniMax-Text-01 for text generation and MiniMax-VL-01 for image understanding. It has 456 billion parameters, with 45.9 billion parameters activated per inference, and can handle a context...", + "context_length": 1000192, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000002", + "completion": "0.0000011" + }, + "top_provider": { + "context_length": 1000192, + "max_completion_tokens": 1000192, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "temperature", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/minimax/minimax-01/endpoints" + } + }, + { + "id": "microsoft/phi-4", + "canonical_slug": "microsoft/phi-4", + "hugging_face_id": "microsoft/phi-4", + "name": "Microsoft: Phi 4", + "created": 1736489872, + "description": "[Microsoft Research](/microsoft) Phi-4 is designed to perform well in complex reasoning tasks and can operate efficiently in situations with limited memory or where quick responses are needed. At 14 billion...", + "context_length": 16384, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000065", + "completion": "0.00000014" + }, + "top_provider": { + "context_length": 16384, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/microsoft/phi-4/endpoints" + } + }, + { + "id": "sao10k/l3.1-70b-hanami-x1", + "canonical_slug": "sao10k/l3.1-70b-hanami-x1", + "hugging_face_id": "Sao10K/L3.1-70B-Hanami-x1", + "name": "Sao10K: Llama 3.1 70B Hanami x1", + "created": 1736302854, + "description": "This is [Sao10K](/sao10k)'s experiment over [Euryale v2.2](/sao10k/l3.1-euryale-70b).", + "context_length": 16000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000003", + "completion": "0.000003" + }, + "top_provider": { + "context_length": 16000, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/sao10k/l3.1-70b-hanami-x1/endpoints" + } + }, + { + "id": "deepseek/deepseek-chat", + "canonical_slug": "deepseek/deepseek-chat-v3", + "hugging_face_id": "deepseek-ai/DeepSeek-V3", + "name": "DeepSeek: DeepSeek V3", + "created": 1735241320, + "description": "DeepSeek-V3 is the latest model from the DeepSeek team, building upon the instruction following and coding abilities of the previous versions. Pre-trained on nearly 15 trillion tokens, the reported evaluations...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "DeepSeek", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000002288", + "completion": "0.0000009144" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 16000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-07-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/deepseek/deepseek-chat-v3/endpoints" + } + }, + { + "id": "sao10k/l3.3-euryale-70b", + "canonical_slug": "sao10k/l3.3-euryale-70b-v2.3", + "hugging_face_id": "Sao10K/L3.3-70B-Euryale-v2.3", + "name": "Sao10K: Llama 3.3 Euryale 70B", + "created": 1734535928, + "description": "Euryale L3.3 70B is a model focused on creative roleplay from [Sao10k](https://ko-fi.com/sao10k). It is the successor of [Euryale L3 70B v2.2](/models/sao10k/l3-euryale-70b).", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0.00000065", + "completion": "0.00000075" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logprobs", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_logprobs", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/sao10k/l3.3-euryale-70b-v2.3/endpoints" + } + }, + { + "id": "openai/o1", + "canonical_slug": "openai/o1-2024-12-17", + "hugging_face_id": "", + "name": "OpenAI: o1", + "created": 1734459999, + "description": "The latest and strongest model family from OpenAI, o1 is designed to spend more time thinking before responding. The o1 model series is trained with large-scale reinforcement learning to reason...", + "context_length": 200000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000015", + "completion": "0.00006", + "web_search": "0.01", + "input_cache_read": "0.0000075" + }, + "top_provider": { + "context_length": 200000, + "max_completion_tokens": 100000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "include_reasoning", + "max_tokens", + "reasoning", + "response_format", + "seed", + "structured_outputs", + "tool_choice", + "tools" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2023-10-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/o1-2024-12-17/endpoints" + } + }, + { + "id": "cohere/command-r7b-12-2024", + "canonical_slug": "cohere/command-r7b-12-2024", + "hugging_face_id": "", + "name": "Cohere: Command R7B (12-2024)", + "created": 1734158152, + "description": "Command R7B (12-2024) is a small, fast update of the Command R+ model, delivered in December 2024. It excels at RAG, tool use, agents, and similar tasks requiring complex reasoning...", + "context_length": 128000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Cohere", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000000375", + "completion": "0.00000015" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 4000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-08-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/cohere/command-r7b-12-2024/endpoints" + } + }, + { + "id": "meta-llama/llama-3.3-70b-instruct:free", + "canonical_slug": "meta-llama/llama-3.3-70b-instruct", + "hugging_face_id": "meta-llama/Llama-3.3-70B-Instruct", + "name": "Meta: Llama 3.3 70B Instruct (free)", + "created": 1733506137, + "description": "The Meta Llama 3.3 multilingual large language model (LLM) is a pretrained and instruction tuned generative model in 70B (text in/text out). The Llama 3.3 instruction tuned text only model...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 65536, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/meta-llama/llama-3.3-70b-instruct/endpoints" + } + }, + { + "id": "meta-llama/llama-3.3-70b-instruct", + "canonical_slug": "meta-llama/llama-3.3-70b-instruct", + "hugging_face_id": "meta-llama/Llama-3.3-70B-Instruct", + "name": "Meta: Llama 3.3 70B Instruct", + "created": 1733506137, + "description": "The Meta Llama 3.3 multilingual large language model (LLM) is a pretrained and instruction tuned generative model in 70B (text in/text out). The Llama 3.3 instruction tuned text only model...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0.0000001", + "completion": "0.00000032" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/meta-llama/llama-3.3-70b-instruct/endpoints" + } + }, + { + "id": "amazon/nova-lite-v1", + "canonical_slug": "amazon/nova-lite-v1", + "hugging_face_id": "", + "name": "Amazon: Nova Lite 1.0", + "created": 1733437363, + "description": "Amazon Nova Lite 1.0 is a very low-cost multimodal model from Amazon that focused on fast processing of image, video, and text inputs to generate text output. Amazon Nova Lite...", + "context_length": 300000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Nova", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000006", + "completion": "0.00000024" + }, + "top_provider": { + "context_length": 300000, + "max_completion_tokens": 5120, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "stop", + "temperature", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-10-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/amazon/nova-lite-v1/endpoints" + } + }, + { + "id": "amazon/nova-micro-v1", + "canonical_slug": "amazon/nova-micro-v1", + "hugging_face_id": "", + "name": "Amazon: Nova Micro 1.0", + "created": 1733437237, + "description": "Amazon Nova Micro 1.0 is a text-only model that delivers the lowest latency responses in the Amazon Nova family of models at a very low cost. With a context length...", + "context_length": 128000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Nova", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000000035", + "completion": "0.00000014" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 5120, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "stop", + "temperature", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-10-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/amazon/nova-micro-v1/endpoints" + } + }, + { + "id": "amazon/nova-pro-v1", + "canonical_slug": "amazon/nova-pro-v1", + "hugging_face_id": "", + "name": "Amazon: Nova Pro 1.0", + "created": 1733436303, + "description": "Amazon Nova Pro 1.0 is a capable multimodal model from Amazon focused on providing a combination of accuracy, speed, and cost for a wide range of tasks. As of December...", + "context_length": 300000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Nova", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000008", + "completion": "0.0000032" + }, + "top_provider": { + "context_length": 300000, + "max_completion_tokens": 5120, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "stop", + "temperature", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-10-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/amazon/nova-pro-v1/endpoints" + } + }, + { + "id": "openai/gpt-4o-2024-11-20", + "canonical_slug": "openai/gpt-4o-2024-11-20", + "hugging_face_id": "", + "name": "OpenAI: GPT-4o (2024-11-20)", + "created": 1732127594, + "description": "The 2024-11-20 version of GPT-4o offers a leveled-up creative writing ability with more natural, engaging, and tailored writing to improve relevance & readability. It’s also better at working with uploaded...", + "context_length": 128000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000025", + "completion": "0.00001", + "input_cache_read": "0.00000125" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 16384, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p", + "web_search_options" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-10-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-4o-2024-11-20/endpoints" + } + }, + { + "id": "mistralai/mistral-large-2411", + "canonical_slug": "mistralai/mistral-large-2411", + "hugging_face_id": "", + "name": "Mistral Large 2411", + "created": 1731978685, + "description": "Mistral Large 2 2411 is an update of [Mistral Large 2](/mistralai/mistral-large) released together with [Pixtral Large 2411](/mistralai/pixtral-large-2411) It provides a significant upgrade on the previous [Mistral Large 24.07](/mistralai/mistral-large-2407), with notable...", + "context_length": 131072, + "architecture": { + "modality": "text+file->text", + "input_modalities": [ + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000002", + "completion": "0.000006", + "input_cache_read": "0.0000002" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 0.3 + }, + "supported_voices": null, + "knowledge_cutoff": "2024-07-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/mistral-large-2411/endpoints" + } + }, + { + "id": "mistralai/mistral-large-2407", + "canonical_slug": "mistralai/mistral-large-2407", + "hugging_face_id": "", + "name": "Mistral Large 2407", + "created": 1731978415, + "description": "This is Mistral AI's flagship model, Mistral Large 2 (version mistral-large-2407). It's a proprietary weights-available model and excels at reasoning, code, JSON, chat, and more. Read the launch announcement [here](https://mistral.ai/news/mistral-large-2407/)....", + "context_length": 131072, + "architecture": { + "modality": "text+file->text", + "input_modalities": [ + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000002", + "completion": "0.000006", + "input_cache_read": "0.0000002" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 0.3 + }, + "supported_voices": null, + "knowledge_cutoff": "2024-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/mistral-large-2407/endpoints" + } + }, + { + "id": "mistralai/pixtral-large-2411", + "canonical_slug": "mistralai/pixtral-large-2411", + "hugging_face_id": "", + "name": "Mistral: Pixtral Large 2411", + "created": 1731977388, + "description": "Pixtral Large is a 124B parameter, open-weight, multimodal model built on top of [Mistral Large 2](/mistralai/mistral-large-2411). The model is able to understand documents, charts and natural images. The model is...", + "context_length": 131072, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000002", + "completion": "0.000006", + "input_cache_read": "0.0000002" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 0.3 + }, + "supported_voices": null, + "knowledge_cutoff": "2024-07-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/pixtral-large-2411/endpoints" + } + }, + { + "id": "qwen/qwen-2.5-coder-32b-instruct", + "canonical_slug": "qwen/qwen-2.5-coder-32b-instruct", + "hugging_face_id": "Qwen/Qwen2.5-Coder-32B-Instruct", + "name": "Qwen2.5 Coder 32B Instruct", + "created": 1731368400, + "description": "Qwen2.5-Coder is the latest series of Code-Specific Qwen large language models (formerly known as CodeQwen). Qwen2.5-Coder brings the following improvements upon CodeQwen1.5: - Significantly improvements in **code generation**, **code reasoning**...", + "context_length": 128000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen", + "instruct_type": "chatml" + }, + "pricing": { + "prompt": "0.00000066", + "completion": "0.000001" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen-2.5-coder-32b-instruct/endpoints" + } + }, + { + "id": "thedrummer/unslopnemo-12b", + "canonical_slug": "thedrummer/unslopnemo-12b", + "hugging_face_id": "TheDrummer/UnslopNemo-12B-v4.1", + "name": "TheDrummer: UnslopNemo 12B", + "created": 1731103448, + "description": "UnslopNemo v4.1 is the latest addition from the creator of Rocinante, designed for adventure writing and role-play scenarios.", + "context_length": 32768, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": "mistral" + }, + "pricing": { + "prompt": "0.0000004", + "completion": "0.0000004" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logprobs", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-04-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/thedrummer/unslopnemo-12b/endpoints" + } + }, + { + "id": "anthropic/claude-3.5-haiku", + "canonical_slug": "anthropic/claude-3-5-haiku", + "hugging_face_id": null, + "name": "Anthropic: Claude 3.5 Haiku", + "created": 1730678400, + "description": "Claude 3.5 Haiku features offers enhanced capabilities in speed, coding accuracy, and tool use. Engineered to excel in real-time applications, it delivers quick response times that are essential for dynamic...", + "context_length": 200000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Claude", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000008", + "completion": "0.000004", + "web_search": "0.01", + "input_cache_read": "0.00000008", + "input_cache_write": "0.000001" + }, + "top_provider": { + "context_length": 200000, + "max_completion_tokens": 8192, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-07-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/anthropic/claude-3-5-haiku/endpoints" + } + }, + { + "id": "anthracite-org/magnum-v4-72b", + "canonical_slug": "anthracite-org/magnum-v4-72b", + "hugging_face_id": "anthracite-org/magnum-v4-72b", + "name": "Magnum v4 72B", + "created": 1729555200, + "description": "This is a series of models designed to replicate the prose quality of the Claude 3 models, specifically Sonnet(https://openrouter.ai/anthropic/claude-3.5-sonnet) and Opus(https://openrouter.ai/anthropic/claude-3-opus).\n\nThe model is fine-tuned on top of [Qwen2.5 72B](https://openrouter.ai/qwen/qwen-2.5-72b-instruct).", + "context_length": 32768, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen", + "instruct_type": "chatml" + }, + "pricing": { + "prompt": "0.000003", + "completion": "0.000005" + }, + "top_provider": { + "context_length": 16384, + "max_completion_tokens": 2048, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "top_a", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/anthracite-org/magnum-v4-72b/endpoints" + } + }, + { + "id": "qwen/qwen-2.5-7b-instruct", + "canonical_slug": "qwen/qwen-2.5-7b-instruct", + "hugging_face_id": "Qwen/Qwen2.5-7B-Instruct", + "name": "Qwen: Qwen2.5 7B Instruct", + "created": 1729036800, + "description": "Qwen2.5 7B is the latest series of Qwen large language models. Qwen2.5 brings the following improvements upon Qwen2: - Significantly more knowledge and has greatly improved capabilities in coding and...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen", + "instruct_type": "chatml" + }, + "pricing": { + "prompt": "0.00000004", + "completion": "0.0000001" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "frequency_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen-2.5-7b-instruct/endpoints" + } + }, + { + "id": "inflection/inflection-3-productivity", + "canonical_slug": "inflection/inflection-3-productivity", + "hugging_face_id": null, + "name": "Inflection: Inflection 3 Productivity", + "created": 1728604800, + "description": "Inflection 3 Productivity is optimized for following instructions. It is better for tasks requiring JSON output or precise adherence to provided guidelines. It has access to recent news. For emotional...", + "context_length": 8000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000025", + "completion": "0.00001" + }, + "top_provider": { + "context_length": 8000, + "max_completion_tokens": 1024, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "stop", + "temperature", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-10-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/inflection/inflection-3-productivity/endpoints" + } + }, + { + "id": "inflection/inflection-3-pi", + "canonical_slug": "inflection/inflection-3-pi", + "hugging_face_id": null, + "name": "Inflection: Inflection 3 Pi", + "created": 1728604800, + "description": "Inflection 3 Pi powers Inflection's [Pi](https://pi.ai) chatbot, including backstory, emotional intelligence, productivity, and safety. It has access to recent news, and excels in scenarios like customer support and roleplay. Pi...", + "context_length": 8000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Other", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000025", + "completion": "0.00001" + }, + "top_provider": { + "context_length": 8000, + "max_completion_tokens": 1024, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "stop", + "temperature", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-10-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/inflection/inflection-3-pi/endpoints" + } + }, + { + "id": "thedrummer/rocinante-12b", + "canonical_slug": "thedrummer/rocinante-12b", + "hugging_face_id": "TheDrummer/Rocinante-12B-v1.1", + "name": "TheDrummer: Rocinante 12B", + "created": 1727654400, + "description": "Rocinante 12B is designed for engaging storytelling and rich prose. Early testers have reported: - Expanded vocabulary with unique and expressive word choices - Enhanced creativity for vivid narratives -...", + "context_length": 32768, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen", + "instruct_type": "chatml" + }, + "pricing": { + "prompt": "0.00000017", + "completion": "0.00000043" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": 32768, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-04-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/thedrummer/rocinante-12b/endpoints" + } + }, + { + "id": "meta-llama/llama-3.2-1b-instruct", + "canonical_slug": "meta-llama/llama-3.2-1b-instruct", + "hugging_face_id": "meta-llama/Llama-3.2-1B-Instruct", + "name": "Meta: Llama 3.2 1B Instruct", + "created": 1727222400, + "description": "Llama 3.2 1B is a 1-billion-parameter language model focused on efficiently performing natural language tasks, such as summarization, dialogue, and multilingual text analysis. Its smaller size allows it to operate...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0.000000027", + "completion": "0.000000201" + }, + "top_provider": { + "context_length": 60000, + "max_completion_tokens": 60000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/meta-llama/llama-3.2-1b-instruct/endpoints" + } + }, + { + "id": "meta-llama/llama-3.2-3b-instruct:free", + "canonical_slug": "meta-llama/llama-3.2-3b-instruct", + "hugging_face_id": "meta-llama/Llama-3.2-3B-Instruct", + "name": "Meta: Llama 3.2 3B Instruct (free)", + "created": 1727222400, + "description": "Llama 3.2 3B is a 3-billion-parameter multilingual large language model, optimized for advanced natural language processing tasks like dialogue generation, reasoning, and summarization. Designed with the latest transformer architecture, it...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/meta-llama/llama-3.2-3b-instruct/endpoints" + } + }, + { + "id": "meta-llama/llama-3.2-3b-instruct", + "canonical_slug": "meta-llama/llama-3.2-3b-instruct", + "hugging_face_id": "meta-llama/Llama-3.2-3B-Instruct", + "name": "Meta: Llama 3.2 3B Instruct", + "created": 1727222400, + "description": "Llama 3.2 3B is a 3-billion-parameter multilingual large language model, optimized for advanced natural language processing tasks like dialogue generation, reasoning, and summarization. Designed with the latest transformer architecture, it...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0.0000000509", + "completion": "0.000000335" + }, + "top_provider": { + "context_length": 80000, + "max_completion_tokens": 80000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/meta-llama/llama-3.2-3b-instruct/endpoints" + } + }, + { + "id": "meta-llama/llama-3.2-11b-vision-instruct", + "canonical_slug": "meta-llama/llama-3.2-11b-vision-instruct", + "hugging_face_id": "meta-llama/Llama-3.2-11B-Vision-Instruct", + "name": "Meta: Llama 3.2 11B Vision Instruct", + "created": 1727222400, + "description": "Llama 3.2 11B Vision is a multimodal model with 11 billion parameters, designed to handle tasks combining visual and textual data. It excels in tasks such as image captioning and...", + "context_length": 131072, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0.000000245", + "completion": "0.000000245" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/meta-llama/llama-3.2-11b-vision-instruct/endpoints" + } + }, + { + "id": "qwen/qwen-2.5-72b-instruct", + "canonical_slug": "qwen/qwen-2.5-72b-instruct", + "hugging_face_id": "Qwen/Qwen2.5-72B-Instruct", + "name": "Qwen2.5 72B Instruct", + "created": 1726704000, + "description": "Qwen2.5 72B is the latest series of Qwen large language models. Qwen2.5 brings the following improvements upon Qwen2: - Significantly more knowledge and has greatly improved capabilities in coding and...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Qwen", + "instruct_type": "chatml" + }, + "pricing": { + "prompt": "0.00000036", + "completion": "0.0000004" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/qwen/qwen-2.5-72b-instruct/endpoints" + } + }, + { + "id": "cohere/command-r-plus-08-2024", + "canonical_slug": "cohere/command-r-plus-08-2024", + "hugging_face_id": null, + "name": "Cohere: Command R+ (08-2024)", + "created": 1724976000, + "description": "command-r-plus-08-2024 is an update of the [Command R+](/models/cohere/command-r-plus) with roughly 50% higher throughput and 25% lower latencies as compared to the previous Command R+ version, while keeping the hardware footprint...", + "context_length": 128000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Cohere", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000025", + "completion": "0.00001" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 4000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/cohere/command-r-plus-08-2024/endpoints" + } + }, + { + "id": "cohere/command-r-08-2024", + "canonical_slug": "cohere/command-r-08-2024", + "hugging_face_id": null, + "name": "Cohere: Command R (08-2024)", + "created": 1724976000, + "description": "command-r-08-2024 is an update of the [Command R](/models/cohere/command-r) with improved performance for multilingual retrieval-augmented generation (RAG) and tool use. More broadly, it is better at math, code and reasoning and...", + "context_length": 128000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Cohere", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000015", + "completion": "0.0000006" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 4000, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-03-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/cohere/command-r-08-2024/endpoints" + } + }, + { + "id": "sao10k/l3.1-euryale-70b", + "canonical_slug": "sao10k/l3.1-euryale-70b", + "hugging_face_id": "Sao10K/L3.1-70B-Euryale-v2.2", + "name": "Sao10K: Llama 3.1 Euryale 70B v2.2", + "created": 1724803200, + "description": "Euryale L3.1 70B v2.2 is a model focused on creative roleplay from [Sao10k](https://ko-fi.com/sao10k). It is the successor of [Euryale L3 70B v2.1](/models/sao10k/l3-euryale-70b).", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0.00000085", + "completion": "0.00000085" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/sao10k/l3.1-euryale-70b/endpoints" + } + }, + { + "id": "nousresearch/hermes-3-llama-3.1-70b", + "canonical_slug": "nousresearch/hermes-3-llama-3.1-70b", + "hugging_face_id": "NousResearch/Hermes-3-Llama-3.1-70B", + "name": "Nous: Hermes 3 70B Instruct", + "created": 1723939200, + "description": "Hermes 3 is a generalist language model with many improvements over [Hermes 2](/models/nousresearch/nous-hermes-2-mistral-7b-dpo), including advanced agentic capabilities, much better roleplaying, reasoning, multi-turn conversation, long context coherence, and improvements across the...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "chatml" + }, + "pricing": { + "prompt": "0.0000003", + "completion": "0.0000003" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/nousresearch/hermes-3-llama-3.1-70b/endpoints" + } + }, + { + "id": "nousresearch/hermes-3-llama-3.1-405b:free", + "canonical_slug": "nousresearch/hermes-3-llama-3.1-405b", + "hugging_face_id": "NousResearch/Hermes-3-Llama-3.1-405B", + "name": "Nous: Hermes 3 405B Instruct (free)", + "created": 1723766400, + "description": "Hermes 3 is a generalist language model with many improvements over Hermes 2, including advanced agentic capabilities, much better roleplaying, reasoning, multi-turn conversation, long context coherence, and improvements across the...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "chatml" + }, + "pricing": { + "prompt": "0", + "completion": "0" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/nousresearch/hermes-3-llama-3.1-405b/endpoints" + } + }, + { + "id": "nousresearch/hermes-3-llama-3.1-405b", + "canonical_slug": "nousresearch/hermes-3-llama-3.1-405b", + "hugging_face_id": "NousResearch/Hermes-3-Llama-3.1-405B", + "name": "Nous: Hermes 3 405B Instruct", + "created": 1723766400, + "description": "Hermes 3 is a generalist language model with many improvements over Hermes 2, including advanced agentic capabilities, much better roleplaying, reasoning, multi-turn conversation, long context coherence, and improvements across the...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "chatml" + }, + "pricing": { + "prompt": "0.000001", + "completion": "0.000001" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/nousresearch/hermes-3-llama-3.1-405b/endpoints" + } + }, + { + "id": "sao10k/l3-lunaris-8b", + "canonical_slug": "sao10k/l3-lunaris-8b", + "hugging_face_id": "Sao10K/L3-8B-Lunaris-v1", + "name": "Sao10K: Llama 3 8B Lunaris", + "created": 1723507200, + "description": "Lunaris 8B is a versatile generalist and roleplaying model based on Llama 3. It's a strategic merge of multiple models, designed to balance creativity with improved logic and general knowledge....", + "context_length": 8192, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0.00000004", + "completion": "0.00000005" + }, + "top_provider": { + "context_length": 8192, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/sao10k/l3-lunaris-8b/endpoints" + } + }, + { + "id": "openai/gpt-4o-2024-08-06", + "canonical_slug": "openai/gpt-4o-2024-08-06", + "hugging_face_id": null, + "name": "OpenAI: GPT-4o (2024-08-06)", + "created": 1722902400, + "description": "The 2024-08-06 version of GPT-4o offers improved performance in structured outputs, with the ability to supply a JSON schema in the respone_format. Read more [here](https://openai.com/index/introducing-structured-outputs-in-the-api/). GPT-4o (\"o\" for \"omni\") is...", + "context_length": 128000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000025", + "completion": "0.00001", + "input_cache_read": "0.00000125" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_completion_tokens", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p", + "web_search_options" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-10-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-4o-2024-08-06/endpoints" + } + }, + { + "id": "meta-llama/llama-3.1-70b-instruct", + "canonical_slug": "meta-llama/llama-3.1-70b-instruct", + "hugging_face_id": "meta-llama/Meta-Llama-3.1-70B-Instruct", + "name": "Meta: Llama 3.1 70B Instruct", + "created": 1721692800, + "description": "Meta's latest class of model (Llama 3.1) launched with a variety of sizes & flavors. This 70B instruct-tuned version is optimized for high quality dialogue usecases. It has demonstrated strong...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0.0000004", + "completion": "0.0000004" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/meta-llama/llama-3.1-70b-instruct/endpoints" + } + }, + { + "id": "meta-llama/llama-3.1-8b-instruct", + "canonical_slug": "meta-llama/llama-3.1-8b-instruct", + "hugging_face_id": "meta-llama/Meta-Llama-3.1-8B-Instruct", + "name": "Meta: Llama 3.1 8B Instruct", + "created": 1721692800, + "description": "Meta's latest class of model (Llama 3.1) launched with a variety of sizes & flavors. This 8B instruct-tuned version is fast and efficient. It has demonstrated strong performance compared to...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0.00000002", + "completion": "0.00000005" + }, + "top_provider": { + "context_length": 16384, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/meta-llama/llama-3.1-8b-instruct/endpoints" + } + }, + { + "id": "mistralai/mistral-nemo", + "canonical_slug": "mistralai/mistral-nemo", + "hugging_face_id": "mistralai/Mistral-Nemo-Instruct-2407", + "name": "Mistral: Mistral Nemo", + "created": 1721347200, + "description": "A 12B parameter model with a 128k token context length built by Mistral in collaboration with NVIDIA. The model is multilingual, supporting English, French, German, Spanish, Italian, Portuguese, Chinese, Japanese,...", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": "mistral" + }, + "pricing": { + "prompt": "0.00000002", + "completion": "0.00000003" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": { + "temperature": 0.3 + }, + "supported_voices": null, + "knowledge_cutoff": "2024-04-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/mistral-nemo/endpoints" + } + }, + { + "id": "openai/gpt-4o-mini-2024-07-18", + "canonical_slug": "openai/gpt-4o-mini-2024-07-18", + "hugging_face_id": null, + "name": "OpenAI: GPT-4o-mini (2024-07-18)", + "created": 1721260800, + "description": "GPT-4o mini is OpenAI's newest model after [GPT-4 Omni](/models/openai/gpt-4o), supporting both text and image inputs with text outputs. As their most advanced small model, it is many multiples more affordable...", + "context_length": 128000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000015", + "completion": "0.0000006", + "input_cache_read": "0.000000075" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 16384, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p", + "web_search_options" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-10-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-4o-mini-2024-07-18/endpoints" + } + }, + { + "id": "openai/gpt-4o-mini", + "canonical_slug": "openai/gpt-4o-mini", + "hugging_face_id": null, + "name": "OpenAI: GPT-4o-mini", + "created": 1721260800, + "description": "GPT-4o mini is OpenAI's newest model after [GPT-4 Omni](/models/openai/gpt-4o), supporting both text and image inputs with text outputs. As their most advanced small model, it is many multiples more affordable...", + "context_length": 128000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000015", + "completion": "0.0000006", + "input_cache_read": "0.000000075" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_completion_tokens", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p", + "web_search_options" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-10-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-4o-mini/endpoints" + } + }, + { + "id": "google/gemma-2-27b-it", + "canonical_slug": "google/gemma-2-27b-it", + "hugging_face_id": "google/gemma-2-27b-it", + "name": "Google: Gemma 2 27B", + "created": 1720828800, + "description": "Gemma 2 27B by Google is an open model built from the same research and technology used to create the [Gemini models](/models?q=gemini). Gemma models are well-suited for a variety of...", + "context_length": 8192, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemini", + "instruct_type": "gemma" + }, + "pricing": { + "prompt": "0.00000065", + "completion": "0.00000065" + }, + "top_provider": { + "context_length": 8192, + "max_completion_tokens": 2048, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/google/gemma-2-27b-it/endpoints" + } + }, + { + "id": "sao10k/l3-euryale-70b", + "canonical_slug": "sao10k/l3-euryale-70b", + "hugging_face_id": "Sao10K/L3-70B-Euryale-v2.1", + "name": "Sao10k: Llama 3 Euryale 70B v2.1", + "created": 1718668800, + "description": "Euryale 70B v2.1 is a model focused on creative roleplay from [Sao10k](https://ko-fi.com/sao10k). - Better prompt adherence. - Better anatomy / spatial awareness. - Adapts much better to unique and custom...", + "context_length": 8192, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0.00000148", + "completion": "0.00000148" + }, + "top_provider": { + "context_length": 8192, + "max_completion_tokens": 8192, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "seed", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": "2026-06-05", + "links": { + "details": "/api/v1/models/sao10k/l3-euryale-70b/endpoints" + } + }, + { + "id": "nousresearch/hermes-2-pro-llama-3-8b", + "canonical_slug": "nousresearch/hermes-2-pro-llama-3-8b", + "hugging_face_id": "NousResearch/Hermes-2-Pro-Llama-3-8B", + "name": "NousResearch: Hermes 2 Pro - Llama-3 8B", + "created": 1716768000, + "description": "Hermes 2 Pro is an upgraded, retrained version of Nous Hermes 2, consisting of an updated and cleaned version of the OpenHermes 2.5 Dataset, as well as a newly introduced...", + "context_length": 8192, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "chatml" + }, + "pricing": { + "prompt": "0.00000014", + "completion": "0.00000014" + }, + "top_provider": { + "context_length": 8192, + "max_completion_tokens": 8192, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": "2026-06-05", + "links": { + "details": "/api/v1/models/nousresearch/hermes-2-pro-llama-3-8b/endpoints" + } + }, + { + "id": "openai/gpt-4o", + "canonical_slug": "openai/gpt-4o", + "hugging_face_id": null, + "name": "OpenAI: GPT-4o", + "created": 1715558400, + "description": "GPT-4o (\"o\" for \"omni\") is OpenAI's latest AI model, supporting both text and image inputs with text outputs. It maintains the intelligence level of [GPT-4 Turbo](/models/openai/gpt-4-turbo) while being twice as...", + "context_length": 128000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000025", + "completion": "0.00001" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_completion_tokens", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p", + "web_search_options" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-10-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-4o/endpoints" + } + }, + { + "id": "openai/gpt-4o-2024-05-13", + "canonical_slug": "openai/gpt-4o-2024-05-13", + "hugging_face_id": null, + "name": "OpenAI: GPT-4o (2024-05-13)", + "created": 1715558400, + "description": "GPT-4o (\"o\" for \"omni\") is OpenAI's latest AI model, supporting both text and image inputs with text outputs. It maintains the intelligence level of [GPT-4 Turbo](/models/openai/gpt-4-turbo) while being twice as...", + "context_length": 128000, + "architecture": { + "modality": "text+image+file->text", + "input_modalities": [ + "text", + "image", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000005", + "completion": "0.000015" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 4096, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_completion_tokens", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p", + "web_search_options" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-10-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-4o-2024-05-13/endpoints" + } + }, + { + "id": "meta-llama/llama-3-8b-instruct", + "canonical_slug": "meta-llama/llama-3-8b-instruct", + "hugging_face_id": "meta-llama/Meta-Llama-3-8B-Instruct", + "name": "Meta: Llama 3 8B Instruct", + "created": 1713398400, + "description": "Meta's latest class of model (Llama 3) launched with a variety of sizes & flavors. This 8B instruct-tuned version was optimized for high quality dialogue usecases. It has demonstrated strong...", + "context_length": 8192, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0.00000004", + "completion": "0.00000004" + }, + "top_provider": { + "context_length": 8192, + "max_completion_tokens": 8192, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/meta-llama/llama-3-8b-instruct/endpoints" + } + }, + { + "id": "meta-llama/llama-3-70b-instruct", + "canonical_slug": "meta-llama/llama-3-70b-instruct", + "hugging_face_id": "meta-llama/Meta-Llama-3-70B-Instruct", + "name": "Meta: Llama 3 70B Instruct", + "created": 1713398400, + "description": "Meta's latest class of model (Llama 3) launched with a variety of sizes & flavors. This 70B instruct-tuned version was optimized for high quality dialogue usecases. It has demonstrated strong...", + "context_length": 8192, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0.00000051", + "completion": "0.00000074" + }, + "top_provider": { + "context_length": 8192, + "max_completion_tokens": 8000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/meta-llama/llama-3-70b-instruct/endpoints" + } + }, + { + "id": "mistralai/mixtral-8x22b-instruct", + "canonical_slug": "mistralai/mixtral-8x22b-instruct", + "hugging_face_id": "mistralai/Mixtral-8x22B-Instruct-v0.1", + "name": "Mistral: Mixtral 8x22B Instruct", + "created": 1713312000, + "description": "Mistral's official instruct fine-tuned version of [Mixtral 8x22B](/models/mistralai/mixtral-8x22b). It uses 39B active parameters out of 141B, offering unparalleled cost efficiency for its size. Its strengths include: - strong math, coding,...", + "context_length": 65536, + "architecture": { + "modality": "text+file->text", + "input_modalities": [ + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": "mistral" + }, + "pricing": { + "prompt": "0.000002", + "completion": "0.000006", + "input_cache_read": "0.0000002" + }, + "top_provider": { + "context_length": 65536, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 0.3 + }, + "supported_voices": null, + "knowledge_cutoff": "2024-01-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/mixtral-8x22b-instruct/endpoints" + } + }, + { + "id": "microsoft/wizardlm-2-8x22b", + "canonical_slug": "microsoft/wizardlm-2-8x22b", + "hugging_face_id": "microsoft/WizardLM-2-8x22B", + "name": "WizardLM-2 8x22B", + "created": 1713225600, + "description": "WizardLM-2 8x22B is Microsoft AI's most advanced Wizard model. It demonstrates highly competitive performance compared to leading proprietary models, and it consistently outperforms all existing state-of-the-art opensource models. It is...", + "context_length": 65536, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": "vicuna" + }, + "pricing": { + "prompt": "0.00000062", + "completion": "0.00000062" + }, + "top_provider": { + "context_length": 65535, + "max_completion_tokens": 8000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2024-04-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/microsoft/wizardlm-2-8x22b/endpoints" + } + }, + { + "id": "openai/gpt-4-turbo", + "canonical_slug": "openai/gpt-4-turbo", + "hugging_face_id": null, + "name": "OpenAI: GPT-4 Turbo", + "created": 1712620800, + "description": "The latest GPT-4 Turbo model with vision capabilities. Vision requests can now use JSON mode and function calling.\n\nTraining data: up to December 2023.", + "context_length": 128000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00001", + "completion": "0.00003" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 4096, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-4-turbo/endpoints" + } + }, + { + "id": "anthropic/claude-3-haiku", + "canonical_slug": "anthropic/claude-3-haiku", + "hugging_face_id": null, + "name": "Anthropic: Claude 3 Haiku", + "created": 1710288000, + "description": "Claude 3 Haiku is Anthropic's fastest and most compact model for\nnear-instant responsiveness. Quick and accurate targeted performance.\n\nSee the launch announcement and benchmark results [here](https://www.anthropic.com/news/claude-3-haiku)\n\n#multimodal", + "context_length": 200000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Claude", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000025", + "completion": "0.00000125", + "input_cache_read": "0.00000003", + "input_cache_write": "0.0000003" + }, + "top_provider": { + "context_length": 200000, + "max_completion_tokens": 4096, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "max_tokens", + "stop", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-08-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/anthropic/claude-3-haiku/endpoints" + } + }, + { + "id": "mistralai/mistral-large", + "canonical_slug": "mistralai/mistral-large", + "hugging_face_id": null, + "name": "Mistral Large", + "created": 1708905600, + "description": "This is Mistral AI's flagship model, Mistral Large 2 (version `mistral-large-2407`). It's a proprietary weights-available model and excels at reasoning, code, JSON, chat, and more. Read the launch announcement [here](https://mistral.ai/news/mistral-large-2407/)....", + "context_length": 128000, + "architecture": { + "modality": "text+file->text", + "input_modalities": [ + "text", + "file" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000002", + "completion": "0.000006", + "input_cache_read": "0.0000002" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_p" + ], + "default_parameters": { + "temperature": 0.3 + }, + "supported_voices": null, + "knowledge_cutoff": "2024-11-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/mistralai/mistral-large/endpoints" + } + }, + { + "id": "openai/gpt-3.5-turbo-0613", + "canonical_slug": "openai/gpt-3.5-turbo-0613", + "hugging_face_id": null, + "name": "OpenAI: GPT-3.5 Turbo (older v0613)", + "created": 1706140800, + "description": "GPT-3.5 Turbo is OpenAI's fastest model. It can understand and generate natural language or code, and is optimized for chat and traditional completion tasks.\n\nTraining data up to Sep 2021.", + "context_length": 4095, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000001", + "completion": "0.000002" + }, + "top_provider": { + "context_length": 4095, + "max_completion_tokens": 4096, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_completion_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2021-09-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-3.5-turbo-0613/endpoints" + } + }, + { + "id": "openai/gpt-4-turbo-preview", + "canonical_slug": "openai/gpt-4-turbo-preview", + "hugging_face_id": null, + "name": "OpenAI: GPT-4 Turbo Preview", + "created": 1706140800, + "description": "The preview GPT-4 model with improved instruction following, JSON mode, reproducible outputs, parallel function calling, and more. Training data: up to Dec 2023. **Note:** heavily rate limited by OpenAI while...", + "context_length": 128000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00001", + "completion": "0.00003" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 4096, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-12-31", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-4-turbo-preview/endpoints" + } + }, + { + "id": "openrouter/auto", + "canonical_slug": "openrouter/auto", + "hugging_face_id": null, + "name": "Auto Router", + "created": 1699401600, + "description": "Your prompt will be processed by a meta-model and routed to one of dozens of models (see below), optimizing for the best possible output. To see which model was used,...", + "context_length": 2000000, + "architecture": { + "modality": "text+image+file+audio+video->text+image", + "input_modalities": [ + "text", + "image", + "audio", + "file", + "video" + ], + "output_modalities": [ + "text", + "image" + ], + "tokenizer": "Router", + "instruct_type": null + }, + "pricing": { + "prompt": "-1", + "completion": "-1" + }, + "top_provider": { + "context_length": null, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "include_reasoning", + "logit_bias", + "logprobs", + "max_completion_tokens", + "max_tokens", + "min_p", + "presence_penalty", + "reasoning", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_k", + "top_logprobs", + "top_p", + "web_search_options" + ], + "default_parameters": { + "temperature": null, + "top_p": null, + "top_k": null, + "frequency_penalty": null, + "presence_penalty": null, + "repetition_penalty": null + }, + "supported_voices": null, + "knowledge_cutoff": null, + "expiration_date": null, + "links": { + "details": "/api/v1/models/openrouter/auto/endpoints" + } + }, + { + "id": "openai/gpt-4-1106-preview", + "canonical_slug": "openai/gpt-4-1106-preview", + "hugging_face_id": null, + "name": "OpenAI: GPT-4 Turbo (older v1106)", + "created": 1699228800, + "description": "The latest GPT-4 Turbo model with vision capabilities. Vision requests can now use JSON mode and function calling.\n\nTraining data: up to April 2023.", + "context_length": 128000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00001", + "completion": "0.00003", + "web_search": "0.01" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 4096, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-04-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-4-1106-preview/endpoints" + } + }, + { + "id": "openai/gpt-3.5-turbo-instruct", + "canonical_slug": "openai/gpt-3.5-turbo-instruct", + "hugging_face_id": null, + "name": "OpenAI: GPT-3.5 Turbo Instruct", + "created": 1695859200, + "description": "This model is a variant of GPT-3.5 Turbo tuned for instructional prompts and omitting chat-related optimizations. Training data: up to Sep 2021.", + "context_length": 4095, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": "chatml" + }, + "pricing": { + "prompt": "0.0000015", + "completion": "0.000002" + }, + "top_provider": { + "context_length": 4095, + "max_completion_tokens": 4096, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_logprobs", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2021-09-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-3.5-turbo-instruct/endpoints" + } + }, + { + "id": "openai/gpt-3.5-turbo-16k", + "canonical_slug": "openai/gpt-3.5-turbo-16k", + "hugging_face_id": null, + "name": "OpenAI: GPT-3.5 Turbo 16k", + "created": 1693180800, + "description": "This model offers four times the context length of gpt-3.5-turbo, allowing it to support approximately 20 pages of text in a single request at a higher cost. Training data: up...", + "context_length": 16385, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000003", + "completion": "0.000004" + }, + "top_provider": { + "context_length": 16385, + "max_completion_tokens": 4096, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_completion_tokens", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2021-09-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-3.5-turbo-16k/endpoints" + } + }, + { + "id": "mancer/weaver", + "canonical_slug": "mancer/weaver", + "hugging_face_id": null, + "name": "Mancer: Weaver (alpha)", + "created": 1690934400, + "description": "An attempt to recreate Claude-style verbosity, but don't expect the same level of coherence or memory. Meant for use in roleplay/narrative situations.", + "context_length": 8000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama2", + "instruct_type": "alpaca" + }, + "pricing": { + "prompt": "0.00000075", + "completion": "0.000001" + }, + "top_provider": { + "context_length": 8000, + "max_completion_tokens": 2000, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "temperature", + "top_a", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/mancer/weaver/endpoints" + } + }, + { + "id": "undi95/remm-slerp-l2-13b", + "canonical_slug": "undi95/remm-slerp-l2-13b", + "hugging_face_id": "Undi95/ReMM-SLERP-L2-13B", + "name": "ReMM SLERP 13B", + "created": 1689984000, + "description": "A recreation trial of the original MythoMax-L2-B13 but with updated models. #merge", + "context_length": 6144, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama2", + "instruct_type": "alpaca" + }, + "pricing": { + "prompt": "0.00000045", + "completion": "0.00000065" + }, + "top_provider": { + "context_length": 6144, + "max_completion_tokens": 4096, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_a", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/undi95/remm-slerp-l2-13b/endpoints" + } + }, + { + "id": "gryphe/mythomax-l2-13b", + "canonical_slug": "gryphe/mythomax-l2-13b", + "hugging_face_id": "Gryphe/MythoMax-L2-13b", + "name": "MythoMax 13B", + "created": 1688256000, + "description": "One of the highest performing and most popular fine-tunes of Llama 2 13B, with rich descriptions and roleplay. #merge", + "context_length": 4096, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama2", + "instruct_type": "alpaca" + }, + "pricing": { + "prompt": "0.00000006", + "completion": "0.00000006" + }, + "top_provider": { + "context_length": 4096, + "max_completion_tokens": 4096, + "is_moderated": false + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_tokens", + "min_p", + "presence_penalty", + "repetition_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "top_a", + "top_k", + "top_logprobs", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2023-06-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/gryphe/mythomax-l2-13b/endpoints" + } + }, + { + "id": "openai/gpt-4-0314", + "canonical_slug": "openai/gpt-4-0314", + "hugging_face_id": null, + "name": "OpenAI: GPT-4 (older v0314)", + "created": 1685232000, + "description": "GPT-4-0314 is the first version of GPT-4 released, with a context length of 8,192 tokens, and was supported until June 14. Training data: up to Sep 2021.", + "context_length": 8191, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00003", + "completion": "0.00006" + }, + "top_provider": { + "context_length": 8191, + "max_completion_tokens": 4096, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2021-09-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-4-0314/endpoints" + } + }, + { + "id": "openai/gpt-4", + "canonical_slug": "openai/gpt-4", + "hugging_face_id": null, + "name": "OpenAI: GPT-4", + "created": 1685232000, + "description": "OpenAI's flagship model, GPT-4 is a large-scale multimodal language model capable of solving difficult problems with greater accuracy than previous models due to its broader general knowledge and advanced reasoning...", + "context_length": 8191, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00003", + "completion": "0.00006" + }, + "top_provider": { + "context_length": 8191, + "max_completion_tokens": 4096, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_completion_tokens", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2021-09-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-4/endpoints" + } + }, + { + "id": "openai/gpt-3.5-turbo", + "canonical_slug": "openai/gpt-3.5-turbo", + "hugging_face_id": null, + "name": "OpenAI: GPT-3.5 Turbo", + "created": 1685232000, + "description": "GPT-3.5 Turbo is OpenAI's fastest model. It can understand and generate natural language or code, and is optimized for chat and traditional completion tasks.\n\nTraining data up to Sep 2021.", + "context_length": 16385, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000005", + "completion": "0.0000015" + }, + "top_provider": { + "context_length": 16385, + "max_completion_tokens": 4096, + "is_moderated": true + }, + "per_request_limits": null, + "supported_parameters": [ + "frequency_penalty", + "logit_bias", + "logprobs", + "max_tokens", + "presence_penalty", + "response_format", + "seed", + "stop", + "structured_outputs", + "temperature", + "tool_choice", + "tools", + "top_logprobs", + "top_p" + ], + "default_parameters": {}, + "supported_voices": null, + "knowledge_cutoff": "2021-09-30", + "expiration_date": null, + "links": { + "details": "/api/v1/models/openai/gpt-3.5-turbo/endpoints" + } + } + ] +} \ No newline at end of file diff --git a/src/assets/react.svg b/src/assets/react.svg new file mode 100644 index 0000000..6c87de9 --- /dev/null +++ b/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/BottomPanel.tsx b/src/components/BottomPanel.tsx new file mode 100644 index 0000000..1b9525a --- /dev/null +++ b/src/components/BottomPanel.tsx @@ -0,0 +1,324 @@ +import { lazy, memo, Suspense, useCallback, useState, useEffect, useRef } from 'react' +import { useTranslation } from 'react-i18next' +import { TerminalIcon } from './Icons' +import { PanelContainer } from './PanelContainer' +import { layoutStore, useLayoutStore, type TerminalTab, type PanelTab } from '../store/layoutStore' +import { createPtySession, removePtySession, listPtySessions } from '../api/pty' +import { useMessageStore } from '../store' +import { ResizablePanel } from './ui/ResizablePanel' +import { logger } from '../utils/logger' +import { normalizeToForwardSlash, uiErrorHandler } from '../utils' +import { useChatViewport } from '../features/chat/chatViewport' + +const Terminal = lazy(() => import('./Terminal').then(module => ({ default: module.Terminal }))) +const SessionChangesPanel = lazy(() => + import('./SessionChangesPanel').then(module => ({ default: module.SessionChangesPanel })), +) +const FileExplorer = lazy(() => import('./FileExplorer').then(module => ({ default: module.FileExplorer }))) +const McpPanel = lazy(() => import('./McpPanel').then(module => ({ default: module.McpPanel }))) +const SkillPanel = lazy(() => import('./SkillPanel').then(module => ({ default: module.SkillPanel }))) +const WorktreePanel = lazy(() => import('./WorktreePanel').then(module => ({ default: module.WorktreePanel }))) + +interface BottomPanelProps { + directory?: string +} + +function PanelFallback() { + const { t } = useTranslation(['components', 'common']) + return ( +
+ {t('bottomPanel.loadingPanel')} +
+ ) +} + +export const BottomPanel = memo(function BottomPanel({ directory }: BottomPanelProps) { + const { t } = useTranslation(['components', 'common']) + const { bottomPanelOpen, bottomPanelHeight } = useLayoutStore() + const { sessionId } = useMessageStore() + const { interaction, layout } = useChatViewport() + + const [isRestoring, setIsRestoring] = useState(false) + const normalizedDirectory = directory ? normalizeToForwardSlash(directory) : undefined + + useEffect(() => { + layoutStore.setCurrentTerminalDirectory(normalizedDirectory) + }, [normalizedDirectory]) + + // 追踪面板 resize 状态 + const [isPanelResizing, setIsPanelResizing] = useState(false) + useEffect(() => { + const onStart = () => setIsPanelResizing(true) + const onEnd = () => setIsPanelResizing(false) + window.addEventListener('panel-resize-start', onStart) + window.addEventListener('panel-resize-end', onEnd) + return () => { + window.removeEventListener('panel-resize-start', onStart) + window.removeEventListener('panel-resize-end', onEnd) + } + }, []) + + // 目录变化时(包括全局模式),重新拉取该目录的 PTY 会话 + const prevDirectoryRef = useRef(undefined) + const hasRestoredDirectoryRef = useRef(false) + const restoreRequestIdRef = useRef(0) + useEffect(() => { + // 目录没变就不重复拉取 + if (hasRestoredDirectoryRef.current && prevDirectoryRef.current === normalizedDirectory) return + hasRestoredDirectoryRef.current = true + prevDirectoryRef.current = normalizedDirectory + const requestId = ++restoreRequestIdRef.current + + const restoreSessions = async () => { + try { + setIsRestoring(true) + + // 拉取新目录下的 PTY 会话 + const sessions = await listPtySessions(normalizedDirectory) + if (restoreRequestIdRef.current !== requestId) return + logger.log('[BottomPanel] PTY sessions for', normalizedDirectory, ':', sessions) + + layoutStore.syncTerminalSessions( + normalizedDirectory, + sessions.map(pty => ({ + id: pty.id, + title: pty.title || 'Terminal', + status: pty.status === 'running' ? 'connecting' : 'exited', + })), + ) + } catch (error) { + uiErrorHandler('restore terminal sessions', error) + } finally { + if (restoreRequestIdRef.current === requestId) { + setIsRestoring(false) + } + } + } + + restoreSessions() + }, [normalizedDirectory]) + + // 创建新终端 + const handleNewTerminal = useCallback(async () => { + try { + logger.log('[BottomPanel] Creating PTY session, directory:', normalizedDirectory) + const pty = await createPtySession({ cwd: normalizedDirectory }, normalizedDirectory) + logger.log('[BottomPanel] PTY created:', pty) + const tab: TerminalTab = { + id: pty.id, + title: pty.title || 'Terminal', + status: 'connecting', + } + layoutStore.addTerminalTab(tab) + } catch (error) { + uiErrorHandler('create terminal', error) + } + }, [normalizedDirectory]) + + // 关闭终端 + const handleCloseTerminal = useCallback( + async (ptyId: string) => { + try { + await removePtySession(ptyId, normalizedDirectory) + } catch { + // ignore - may already be closed + } + }, + [normalizedDirectory], + ) + + // 渲染内容 + const renderContent = useCallback( + (activeTab: PanelTab | null) => { + if (isRestoring) { + return ( +
+ + {t('terminal.restoringSessions')} +
+ ) + } + + if (!activeTab) { + return ( +
+ + {t('common:noContent')} + +
+ ) + } + + return ( + <> + {/* Keep files mounted so expanded folders and previews survive tab switches. */} +
+ }> + + +
+ + {sessionId ? ( +
+ }> + + +
+ ) : activeTab.type === 'changes' ? ( +
+ {t('rightPanel.noActiveSession')} +
+ ) : null} + + {activeTab.type === 'terminal' ? ( + }> + + + ) : null} + + {activeTab.type === 'mcp' ? ( + }> + + + ) : null} + + {activeTab.type === 'skill' ? ( + }> + + + ) : null} + + {activeTab.type === 'worktree' ? ( + }> + + + ) : null} + + ) + }, + [isRestoring, handleNewTerminal, directory, sessionId, isPanelResizing, t], + ) + + return ( + layoutStore.setBottomPanelHeight(h)} + onClose={() => layoutStore.closeBottomPanel()} + className="pb-[var(--safe-area-inset-bottom)]" + > + + {renderContent} + + + ) +}) + +// ============================================ +// Terminal Content - 渲染所有终端实例 +// ============================================ + +interface TerminalContentProps { + activeTab: PanelTab + directory?: string +} + +const TerminalContent = memo(function TerminalContent({ activeTab, directory }: TerminalContentProps) { + const { panelTabs } = useLayoutStore() + + // 获取所有 bottom 位置的 terminal tabs + const terminalTabs = panelTabs.filter(t => t.position === 'bottom' && t.type === 'terminal') + + return ( + <> + {terminalTabs.map(tab => ( + + ))} + + ) +}) + +interface FilesContentProps { + activeTab: PanelTab + directory?: string + isPanelResizing?: boolean + sessionId?: string | null +} + +const FilesContent = memo(function FilesContent({ + activeTab, + directory, + isPanelResizing = false, + sessionId, +}: FilesContentProps) { + const { panelTabs } = useLayoutStore() + const fileTabs = panelTabs.filter(t => t.position === 'bottom' && t.type === 'files') + + return ( + <> + {fileTabs.map(tab => ( +
+ +
+ ))} + + ) +}) + +interface ChangesContentProps { + activeTab: PanelTab + directory?: string + sessionId: string + isPanelResizing?: boolean +} + +const ChangesContent = memo(function ChangesContent({ + activeTab, + directory, + sessionId, + isPanelResizing = false, +}: ChangesContentProps) { + const { panelTabs } = useLayoutStore() + const changeTabs = panelTabs.filter(t => t.position === 'bottom' && t.type === 'changes') + + return ( + <> + {changeTabs.map(tab => ( +
+ +
+ ))} + + ) +}) diff --git a/src/components/CircularProgress.tsx b/src/components/CircularProgress.tsx new file mode 100644 index 0000000..3ac04ec --- /dev/null +++ b/src/components/CircularProgress.tsx @@ -0,0 +1,63 @@ +// ============================================ +// CircularProgress - 环形进度指示器 +// ============================================ + +interface CircularProgressProps { + /** 进度值 0-1 */ + progress: number + /** 整体尺寸 (px) */ + size: number + /** 描边宽度,默认 3 */ + strokeWidth?: number + /** 轨道 className(通过 text-xxx 控制颜色) */ + trackClassName?: string + /** 进度弧 className */ + progressClassName?: string + /** SVG 外层 className */ + className?: string +} + +export function CircularProgress({ + progress, + size, + strokeWidth = 3, + trackClassName = 'text-text-500/30', + progressClassName = 'text-accent-main-100', + className = '', +}: CircularProgressProps) { + const r = (size - strokeWidth) / 2 + const c = 2 * Math.PI * r + const offset = c * (1 - Math.min(Math.max(progress, 0), 1)) + + return ( + + ) +} diff --git a/src/components/CloseServiceDialog.tsx b/src/components/CloseServiceDialog.tsx new file mode 100644 index 0000000..60620dd --- /dev/null +++ b/src/components/CloseServiceDialog.tsx @@ -0,0 +1,67 @@ +// ============================================ +// Close Service Dialog +// 关闭应用时询问是否同时关闭 pi 服务 +// ============================================ + +import { useState } from 'react' +import { useTranslation } from 'react-i18next' +import { Dialog } from './ui/Dialog' +import { Button } from './ui/Button' +import { PlugIcon, SpinnerIcon } from './Icons' + +interface CloseServiceDialogProps { + isOpen: boolean + onConfirm: (stopService: boolean) => void + onCancel: () => void +} + +export function CloseServiceDialog({ isOpen, onConfirm, onCancel }: CloseServiceDialogProps) { + const { t } = useTranslation(['components', 'common']) + const [closing, setClosing] = useState(false) + + const handleConfirm = (stopService: boolean) => { + setClosing(true) + onConfirm(stopService) + } + + return ( + +
+ {/* Icon */} +
+ +
+ + {/* Title */} +

+ {t('closeService.title')} +

+ + {/* Description */} +

+ {t('closeService.description')} +

+ + {/* Actions */} + {closing ? ( +
+ + {t('common:closing')} +
+ ) : ( +
+ + + +
+ )} +
+
+ ) +} diff --git a/src/components/CodeBlock.test.tsx b/src/components/CodeBlock.test.tsx new file mode 100644 index 0000000..96490dd --- /dev/null +++ b/src/components/CodeBlock.test.tsx @@ -0,0 +1,60 @@ +import { render, screen } from '@testing-library/react' +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { CodeBlock } from './CodeBlock' + +const useIsMobileMock = vi.fn(() => false) +const themeSnapshot = { codeWordWrap: false } + +vi.mock('../hooks/useIsMobile', () => ({ + useIsMobile: () => useIsMobileMock(), +})) + +vi.mock('../hooks/useSyntaxHighlight', () => ({ + useSyntaxHighlight: () => ({ output: '' }), +})) + +vi.mock('../hooks/useInView', () => ({ + useInView: () => ({ ref: vi.fn(), inView: false }), +})) + +vi.mock('../store/themeStore', () => ({ + themeStore: { + subscribe: () => () => {}, + getSnapshot: () => themeSnapshot, + }, +})) + +vi.mock('./ui', () => ({ + CopyButton: ({ className }: { className?: string }) => ( + + ), +})) + +describe('CodeBlock', () => { + beforeEach(() => { + useIsMobileMock.mockReset() + useIsMobileMock.mockReturnValue(false) + }) + + it('requires tap-to-reveal copy button for unlabeled mobile code blocks', () => { + useIsMobileMock.mockReturnValue(true) + + const { container } = render() + + expect(container.firstChild).toHaveAttribute('tabindex', '0') + expect(screen.getByRole('button', { name: 'Copy to clipboard' }).parentElement?.className).toContain( + '[@media(hover:none)]:opacity-0', + ) + }) + + it('keeps labeled mobile code blocks unchanged', () => { + useIsMobileMock.mockReturnValue(true) + + const { container } = render() + + expect(container.firstChild).not.toHaveAttribute('tabindex') + expect(screen.getByText('ts')).toBeInTheDocument() + }) +}) diff --git a/src/components/CodeBlock.tsx b/src/components/CodeBlock.tsx new file mode 100644 index 0000000..11b8d32 --- /dev/null +++ b/src/components/CodeBlock.tsx @@ -0,0 +1,156 @@ +import { memo, useCallback, useMemo, useSyncExternalStore } from 'react' +import { useIsMobile } from '../hooks/useIsMobile' +import { useSyntaxHighlight } from '../hooks/useSyntaxHighlight' +import { themeStore } from '../store/themeStore' +import { CopyButton } from './ui' +import { useInView } from '../hooks/useInView' + +/** Languages that carry no useful information — hide the label */ +const HIDDEN_LANGS = new Set(['text', 'plain', 'txt', 'plaintext']) + +interface CodeBlockProps { + code: string + language?: string + className?: string + style?: React.CSSProperties + /** Display variant: 'default' shows chrome (label + copy), 'reasoning' is minimal */ + variant?: 'default' | 'reasoning' + /** 最大高度 */ + maxHeight?: number + /** 长行自动换行 */ + wordwrap?: boolean +} + +export const CodeBlock = memo(function CodeBlock({ + code, + language, + className = '', + style, + variant = 'default', + maxHeight, + wordwrap, +}: CodeBlockProps) { + const { codeWordWrap } = useSyncExternalStore(themeStore.subscribe, themeStore.getSnapshot) + const isMobile = useIsMobile() + const resolvedWordWrap = wordwrap ?? codeWordWrap + const isReasoning = variant === 'reasoning' + + // Lazy load highlighting when close to viewport + const { ref, inView } = useInView({ triggerOnce: true, rootMargin: '200px' }) + + // Auto-detect tree structure if language is missing or text + const effectiveLanguage = useMemo(() => { + if (language && language !== 'text') return language + + // Check for tree structure characters + if (code.includes('├──') || code.includes('└──') || (code.includes('│') && code.includes('──'))) { + return 'yaml' + } + + return language || 'text' + }, [code, language]) + + const { output: html } = useSyntaxHighlight(code, { lang: effectiveLanguage, enabled: inView }) + + const containerStyle = maxHeight ? { ...style, maxHeight } : style + const showLabel = !isReasoning && language && !HIDDEN_LANGS.has(language.toLowerCase()) + + // --- Shared sub-components --- + + const wrapClasses = resolvedWordWrap ? 'whitespace-pre-wrap break-words [overflow-wrap:anywhere]' : '' + + const scrollClasses = resolvedWordWrap + ? 'overflow-y-auto overflow-x-hidden custom-scrollbar' + : 'overflow-auto custom-scrollbar' + + // Padding: reasoning is tighter; default reserves top for label row and right for copy button + const contentPad = isReasoning ? 'p-3' : showLabel ? 'pt-0 pb-3.5 px-3.5' : 'p-4' + const contentPadShiki = isReasoning + ? '[&_pre]:p-3 [&_pre]:m-0' + : showLabel + ? '[&_pre]:pt-0 [&_pre]:pb-3.5 [&_pre]:px-3.5 [&_pre]:m-0' + : '[&_pre]:p-4 [&_pre]:m-0' + + const requireTapToRevealCopy = isMobile && !isReasoning && !showLabel + + const handleTouchStartCapture = useCallback( + (event: React.TouchEvent) => { + if (!requireTapToRevealCopy) return + if (event.target instanceof HTMLElement && event.target.closest('button')) return + event.currentTarget.focus() + }, + [requireTapToRevealCopy], + ) + + const fontSize = isReasoning ? 'text-[length:var(--fs-sm)]' : 'text-[length:var(--fs-md)]' + const lineHeight = isReasoning ? 'leading-5' : 'leading-6' + const textColor = isReasoning ? 'text-text-300' : 'text-text-200' + + const content = !html ? ( +
+      {code}
+    
+ ) : ( +
+ ) + + // --- Reasoning: minimal shell --- + if (isReasoning) { + return ( +
+
+ {content} +
+
+ ) + } + + // --- Default: light panel with floating chrome --- + return ( +
+ {showLabel ? ( +
+
+ {language} +
+
+ +
+
+ ) : ( +
+ +
+ )} + + {/* Scrollable content */} +
+ {content} +
+
+ ) +}) diff --git a/src/components/CodeMirrorReadonly.tsx b/src/components/CodeMirrorReadonly.tsx new file mode 100644 index 0000000..709426c --- /dev/null +++ b/src/components/CodeMirrorReadonly.tsx @@ -0,0 +1,86 @@ +import { useCallback, useEffect, useMemo, useRef } from 'react' +import { EditorState, type Extension } from '@codemirror/state' +import { openSearchPanel } from '@codemirror/search' +import { EditorView } from '@codemirror/view' +import type { HighlightTokens } from '../hooks/useSyntaxHighlight' +import { createReadonlyCodeMirrorExtensions, dispatchShikiTokens } from './codeMirrorReadonlyExtensions' +import { getLineCount, getLineNumberColumnWidth } from '../utils/lineNumberUtils' + +interface CodeMirrorReadonlyProps { + code: string + tokensRef: React.RefObject + tokensVersion: number + wordWrap: boolean + lineHeight: number + maxHeight?: number + isResizing?: boolean + showLineNumbers?: boolean + className?: string + extraExtensions?: Extension[] +} + +export function CodeMirrorReadonly({ + code, + tokensRef, + tokensVersion, + wordWrap, + lineHeight, + maxHeight, + isResizing = false, + showLineNumbers = true, + className = '', + extraExtensions = [], +}: CodeMirrorReadonlyProps) { + const hostRef = useRef(null) + const viewRef = useRef(null) + const constrainedHeight = maxHeight !== undefined + const lineNumberWidth = useMemo(() => getLineNumberColumnWidth(getLineCount(code)), [code]) + + const extensions = useMemo( + () => createReadonlyCodeMirrorExtensions({ wordWrap, lineHeight, showLineNumbers, maxHeight, lineNumberWidth, extraExtensions }), + [wordWrap, lineHeight, showLineNumbers, maxHeight, lineNumberWidth, extraExtensions], + ) + + useEffect(() => { + const host = hostRef.current + if (!host) return + + const view = new EditorView({ + parent: host, + state: EditorState.create({ doc: code, extensions }), + }) + + viewRef.current = view + dispatchShikiTokens(view, tokensRef.current) + + return () => { + view.destroy() + if (viewRef.current === view) viewRef.current = null + } + }, [code, extensions, tokensRef]) + + useEffect(() => { + const view = viewRef.current + if (!view) return + dispatchShikiTokens(view, tokensRef.current) + }, [tokensRef, tokensVersion]) + + const handleKeyDownCapture = useCallback((event: React.KeyboardEvent) => { + if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'f') { + const view = viewRef.current + if (!view) return + event.preventDefault() + openSearchPanel(view) + } + }, []) + + return ( +
+
+
+ ) +} diff --git a/src/components/CodePreview.test.tsx b/src/components/CodePreview.test.tsx new file mode 100644 index 0000000..dfa6f41 --- /dev/null +++ b/src/components/CodePreview.test.tsx @@ -0,0 +1,55 @@ +import { fireEvent, render, screen } from '@testing-library/react' +import { describe, expect, it, vi } from 'vitest' +import { CodePreview } from './CodePreview' + +vi.mock('../store/themeStore', () => ({ + themeStore: { + subscribe: () => () => {}, + getSnapshot: () => mockThemeSnapshot, + }, +})) + +vi.mock('../hooks/useSyntaxHighlight', () => ({ + useSyntaxHighlightRef: () => ({ + tokensRef: { current: null }, + version: 0, + }), +})) + +const mockThemeSnapshot = { + codeWordWrap: false, + codeFontScale: 0, +} + +describe('CodePreview', () => { + it('renders code through CodeMirror with line numbers', () => { + const { container } = render() + + expect(screen.getByText('first line')).toBeInTheDocument() + expect(screen.getByText('second line')).toBeInTheDocument() + expect(screen.getByText('1')).toBeInTheDocument() + expect(screen.getByText('2')).toBeInTheDocument() + expect(container.querySelector('.cm-editor')).toBeInTheDocument() + }) + + it('keeps the editor focusable while read-only', () => { + const { container } = render( + , + ) + + expect(container.querySelector('.cm-content')).toHaveAttribute('contenteditable', 'true') + }) + + it('opens CodeMirror search from the preview Ctrl+F fallback', () => { + const { container } = render() + + fireEvent.keyDown(container.firstElementChild as Element, { key: 'f', ctrlKey: true }) + + expect(screen.getByPlaceholderText('Find')).toBeInTheDocument() + expect(screen.getByRole('button', { name: 'Match case' })).toBeInTheDocument() + expect(screen.getByRole('button', { name: 'Use regular expression' })).toBeInTheDocument() + expect(screen.getByRole('button', { name: 'Match whole word' })).toBeInTheDocument() + expect(screen.getByRole('button', { name: 'Clear search' })).toBeInTheDocument() + expect(screen.getByText('No results')).toBeInTheDocument() + }) +}) diff --git a/src/components/CodePreview.tsx b/src/components/CodePreview.tsx new file mode 100644 index 0000000..c2ff4a8 --- /dev/null +++ b/src/components/CodePreview.tsx @@ -0,0 +1,34 @@ +import { useSyncExternalStore } from 'react' +import { CodeMirrorReadonly } from './CodeMirrorReadonly' +import { codeLineHeight } from './codeMirrorReadonlyExtensions' +import { useSyntaxHighlightRef } from '../hooks/useSyntaxHighlight' +import { themeStore } from '../store/themeStore' + +interface CodePreviewProps { + code: string + language: string + maxHeight?: number + isResizing?: boolean + wordWrap?: boolean +} + +export function CodePreview({ code, language, maxHeight, isResizing = false, wordWrap }: CodePreviewProps) { + const { codeWordWrap, codeFontScale } = useSyncExternalStore(themeStore.subscribe, themeStore.getSnapshot) + const resolvedWordWrap = wordWrap ?? codeWordWrap + const { tokensRef, version } = useSyntaxHighlightRef(code, { + lang: language, + enabled: language !== 'text', + }) + + return ( + + ) +} diff --git a/src/components/CommandPalette.test.tsx b/src/components/CommandPalette.test.tsx new file mode 100644 index 0000000..89b7d40 --- /dev/null +++ b/src/components/CommandPalette.test.tsx @@ -0,0 +1,58 @@ +import { act, fireEvent, render, screen } from '@testing-library/react' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import { CommandPalette, type CommandItem } from './CommandPalette' + +describe('CommandPalette', () => { + beforeEach(() => { + vi.useFakeTimers() + vi.spyOn(window, 'requestAnimationFrame').mockImplementation(cb => { + return window.setTimeout(() => cb(performance.now()), 0) + }) + vi.spyOn(window, 'cancelAnimationFrame').mockImplementation(id => { + clearTimeout(id) + }) + }) + + afterEach(() => { + vi.restoreAllMocks() + vi.useRealTimers() + }) + + it('resets query when reopened and executes selected command', () => { + const onClose = vi.fn() + const action = vi.fn() + const commands: CommandItem[] = [{ id: 'open-settings', label: 'Open Settings', action }] + + const { rerender } = render() + + rerender() + act(() => { + vi.runAllTimers() + }) + + const input = screen.getByPlaceholderText('Type a command...') as HTMLInputElement + fireEvent.change(input, { target: { value: 'settings' } }) + expect(input.value).toBe('settings') + + fireEvent.click(screen.getByText('Open Settings')) + expect(onClose).toHaveBeenCalledTimes(1) + + act(() => { + vi.runAllTimers() + }) + expect(action).toHaveBeenCalledTimes(1) + + rerender() + act(() => { + vi.runAllTimers() + }) + expect(screen.queryByPlaceholderText('Type a command...')).not.toBeInTheDocument() + + rerender() + act(() => { + vi.runAllTimers() + }) + + expect((screen.getByPlaceholderText('Type a command...') as HTMLInputElement).value).toBe('') + }) +}) diff --git a/src/components/CommandPalette.tsx b/src/components/CommandPalette.tsx new file mode 100644 index 0000000..d191e48 --- /dev/null +++ b/src/components/CommandPalette.tsx @@ -0,0 +1,307 @@ +/** + * CommandPalette - VS Code 风格的命令面板 + * 纯键盘操作的核心入口 + */ + +import { useState, useEffect, useRef, useMemo, useCallback } from 'react' +import { createPortal } from 'react-dom' +import { useTranslation } from 'react-i18next' +import { SearchIcon } from './Icons' +import { formatKeybinding, parseKeybinding } from '../store/keybindingStore' +import { useDelayedRender } from '../hooks/useDelayedRender' + +// ============================================ +// Types +// ============================================ + +export interface CommandItem { + id: string + label: string + description?: string + shortcut?: string // 快捷键显示文本 + category?: string + icon?: React.ReactNode + action: () => void + when?: () => boolean // 条件可见 +} + +interface CommandPaletteProps { + isOpen: boolean + onClose: () => void + commands: CommandItem[] +} + +// ============================================ +// Kbd Component - 单个按键显示 +// ============================================ + +function Kbd({ children }: { children: React.ReactNode }) { + return ( + + {children} + + ) +} + +function ShortcutDisplay({ shortcut }: { shortcut: string }) { + const parsed = parseKeybinding(shortcut) + const formatted = formatKeybinding(parsed) + const parts = formatted.split(' + ') + + return ( +
+ {parts.map((part, i) => ( + {part} + ))} +
+ ) +} + +// ============================================ +// CommandPalette Component +// ============================================ + +export function CommandPalette({ isOpen, onClose, commands }: CommandPaletteProps) { + const { t } = useTranslation(['components', 'common']) + const [query, setQuery] = useState('') + const [selectedIndex, setSelectedIndex] = useState(0) + const inputRef = useRef(null) + const listRef = useRef(null) + const [isVisible, setIsVisible] = useState(false) + const shouldRender = useDelayedRender(isOpen, 150) + + // Animation mount/unmount + useEffect(() => { + let frameId: number | null = null + + if (isOpen) { + frameId = requestAnimationFrame(() => { + setQuery('') + setSelectedIndex(0) + }) + } + + return () => { + if (frameId !== null) { + cancelAnimationFrame(frameId) + } + } + }, [isOpen]) + + useEffect(() => { + let frameId: number | null = null + + if (shouldRender && isOpen) { + frameId = requestAnimationFrame(() => { + setIsVisible(true) + inputRef.current?.focus() + }) + } else { + frameId = requestAnimationFrame(() => { + setIsVisible(false) + }) + } + + return () => { + if (frameId !== null) { + cancelAnimationFrame(frameId) + } + } + }, [shouldRender, isOpen]) + + // Filter commands + const filteredCommands = useMemo(() => { + const visible = commands.filter(cmd => !cmd.when || cmd.when()) + + if (!query.trim()) return visible + + const q = query.toLowerCase() + return visible + .filter( + cmd => + cmd.label.toLowerCase().includes(q) || + cmd.description?.toLowerCase().includes(q) || + cmd.category?.toLowerCase().includes(q) || + cmd.id.toLowerCase().includes(q), + ) + .sort((a, b) => { + // 精确前缀匹配优先 + const aStart = a.label.toLowerCase().startsWith(q) ? 0 : 1 + const bStart = b.label.toLowerCase().startsWith(q) ? 0 : 1 + return aStart - bStart + }) + }, [commands, query]) + + const activeIndex = filteredCommands.length === 0 ? 0 : Math.min(selectedIndex, filteredCommands.length - 1) + + // Execute command + const executeCommand = useCallback( + (cmd: CommandItem) => { + onClose() + // 延迟执行,让面板关闭动画先完成 + requestAnimationFrame(() => cmd.action()) + }, + [onClose], + ) + + // Keyboard navigation + useEffect(() => { + if (!isOpen) return + + const handleKeyDown = (e: KeyboardEvent) => { + switch (e.key) { + case 'ArrowDown': + e.preventDefault() + setSelectedIndex(prev => (prev < filteredCommands.length - 1 ? prev + 1 : 0)) + break + case 'ArrowUp': + e.preventDefault() + setSelectedIndex(prev => (prev > 0 ? prev - 1 : filteredCommands.length - 1)) + break + case 'Enter': + e.preventDefault() + if (filteredCommands[activeIndex]) { + executeCommand(filteredCommands[activeIndex]) + } + break + case 'Escape': + e.preventDefault() + e.stopPropagation() + onClose() + break + } + } + + document.addEventListener('keydown', handleKeyDown, { capture: true }) + return () => document.removeEventListener('keydown', handleKeyDown, { capture: true }) + }, [isOpen, filteredCommands, activeIndex, executeCommand, onClose]) + + // Scroll selected item into view + useEffect(() => { + if (!listRef.current) return + const el = listRef.current.querySelector(`[data-index="${activeIndex}"]`) + el?.scrollIntoView({ block: 'nearest' }) + }, [activeIndex]) + + if (!shouldRender) return null + + return createPortal( +
{ + // 触摸设备不走背景关闭 + if (e.pointerType === 'touch') return + if (e.target === e.currentTarget) { + ;(e.currentTarget as HTMLElement).dataset.backdropDown = '1' + } + }} + onClick={e => { + if (e.target === e.currentTarget && (e.currentTarget as HTMLElement).dataset.backdropDown === '1') { + onClose() + } + delete (e.currentTarget as HTMLElement).dataset.backdropDown + }} + > +
e.stopPropagation()} + > + {/* Search Input */} +
+ + { + setQuery(e.target.value) + setSelectedIndex(0) + }} + placeholder={t('commandPalette.placeholder')} + className="flex-1 py-3.5 text-[length:var(--fs-base)] bg-transparent text-text-100 placeholder:text-text-400 + outline-none border-none" + autoComplete="off" + spellCheck={false} + /> + {query && ( + + )} +
+
+ + {/* Command List */} +
+ {filteredCommands.length === 0 ? ( +
{t('commandPalette.noCommandsFound')}
+ ) : ( + filteredCommands.map((cmd, index) => ( + + )) + )} +
+ + {/* Footer */} +
+
+ + ↑ + ↓ {t('common:navigate')} + + + ↵ {t('common:run')} + + + Esc {t('common:close')} + +
+
+
, + document.body, + ) +} diff --git a/src/components/ContentBlock.tsx b/src/components/ContentBlock.tsx new file mode 100644 index 0000000..3cb4954 --- /dev/null +++ b/src/components/ContentBlock.tsx @@ -0,0 +1,328 @@ +/** + * ContentBlock - 通用内容展示容器 + * + * 根据内容类型自动选择渲染器: + * - 普通代码/文本 -> CodePreview + * - Diff -> DiffViewer + * - Loading 状态 -> Skeleton + */ + +import { memo, useState, useMemo, useEffect, useRef, type ReactNode } from 'react' +import { useTranslation } from 'react-i18next' +import { diffLines } from 'diff' +import { ChevronDownIcon, ChevronRightIcon, MaximizeIcon } from './Icons' +import { CopyButton } from './ui' +import { DiffViewer, useDiffViewerData, type ViewMode } from './DiffViewer' +import { CodePreview } from './CodePreview' +import { detectLanguage } from '../utils/languageUtils' +import { FullscreenViewer, ViewModeSwitch } from './FullscreenViewer' +import { extractContentFromUnifiedDiff } from '../utils/diffUtils' +import { useResponsiveMaxHeight } from '../hooks/useResponsiveMaxHeight' + +// ============================================ +// Types +// ============================================ + +export interface ContentBlockProps { + /** 标签 */ + label: string + /** 标签前的图标 */ + labelIcon?: ReactNode + /** 隐藏标签文本,仅保留图标 / 文件名 */ + hideLabel?: boolean + /** 文件路径 */ + filePath?: string + /** 语言 */ + language?: string + /** 样式变体 */ + variant?: 'default' | 'error' + /** 默认折叠 */ + defaultCollapsed?: boolean + /** 最大高度(px),0 表示不限制 */ + maxHeight?: number + /** 是否可折叠 */ + collapsible?: boolean + /** 精简模式:header 和代码行等高(20px),不可折叠 */ + compact?: boolean + + // 内容 + /** 普通文本/代码内容 */ + content?: string + /** Diff 数据 */ + diff?: { before: string; after: string } | string + /** Diff 统计 */ + diffStats?: { additions: number; deletions: number } + /** 统计信息 */ + stats?: { exit?: number } + + // Loading 状态 + /** 是否正在加载 */ + isLoading?: boolean + /** 加载时显示的文字 */ + loadingText?: string +} + +// ============================================ +// Main Component +// ============================================ + +export const ContentBlock = memo(function ContentBlock({ + label, + labelIcon, + hideLabel = false, + filePath, + language, + variant = 'default', + defaultCollapsed = false, + maxHeight: maxHeightProp, + collapsible = true, + compact = false, + content, + diff, + diffStats: providedDiffStats, + stats, + isLoading = false, + loadingText, +}: ContentBlockProps) { + const { t } = useTranslation(['components', 'common']) + const resolvedLoadingText = loadingText ?? t('common:loading') + const [collapsed, setCollapsed] = useState(compact ? false : defaultCollapsed) + const [fullscreenOpen, setFullscreenOpen] = useState(false) + const [diffViewMode, setDiffViewMode] = useState('split') + const [fullscreenDiffViewMode, setFullscreenDiffViewMode] = useState('split') + const contentRef = useRef(null) + + // 响应式 maxHeight,外部传入的值优先 + const responsiveMaxHeight = useResponsiveMaxHeight() + + const isError = variant === 'error' + const maxHeight = maxHeightProp ?? responsiveMaxHeight + const isDiff = !!diff + const hasContent = !!content?.trim() || isDiff || stats?.exit !== undefined + const canCollapse = !compact && collapsible && hasContent + const lang = language || (filePath ? detectLanguage(filePath) : 'text') + const fileName = filePath?.split(/[/\\]/).pop() + + // Diff 统计 + const diffStats = useMemo(() => { + if (!isDiff) return null + if (providedDiffStats) return providedDiffStats + + if (typeof diff === 'object') { + const changes = diffLines(diff.before, diff.after) + let additions = 0, + deletions = 0 + for (const c of changes) { + if (c.added) additions += c.count || 0 + if (c.removed) deletions += c.count || 0 + } + return { additions, deletions } + } + + const lines = (diff as string).split('\n') + let additions = 0, + deletions = 0 + for (const line of lines) { + if (line.startsWith('+++') || line.startsWith('---') || line.startsWith('Index:') || line.startsWith('===')) + continue + if (line.startsWith('+')) additions++ + if (line.startsWith('-')) deletions++ + } + return { additions, deletions } + }, [isDiff, diff, providedDiffStats]) + + const resolvedDiff = useMemo(() => { + if (!diff) return null + if (typeof diff === 'object') return diff + return extractContentFromUnifiedDiff(diff) + }, [diff]) + const diffViewerData = useDiffViewerData(resolvedDiff?.before ?? '', resolvedDiff?.after ?? '', lang, false, isDiff) + + // 自动响应式切换 diff view mode + useEffect(() => { + if (!isDiff) return + const container = contentRef.current + if (!container) return + + const updateViewMode = () => { + const width = container.clientWidth + const nextMode: ViewMode = width < 720 ? 'unified' : 'split' + setDiffViewMode(prev => (prev === nextMode ? prev : nextMode)) + } + + updateViewMode() + const observer = new ResizeObserver(updateViewMode) + observer.observe(container) + return () => observer.disconnect() + }, [isDiff]) + + // 全屏时响应式切换 diff view mode + useEffect(() => { + if (!fullscreenOpen || !isDiff) return + const checkWidth = () => setFullscreenDiffViewMode(window.innerWidth >= 1000 ? 'split' : 'unified') + checkWidth() + window.addEventListener('resize', checkWidth) + return () => window.removeEventListener('resize', checkWidth) + }, [fullscreenOpen, isDiff]) + + // 是否展开内容区 + const showBody = (hasContent && !collapsed) || (isLoading && !hasContent) + + // 容器样式 + const containerClass = isError + ? 'border border-danger-100/30 bg-danger-100/5' + : 'bg-bg-100 border border-border-200/40' + + // Header 样式 + const headerClass = isError ? 'bg-danger-100/8 hover:bg-danger-100/12' : 'bg-bg-200/40 hover:bg-bg-200/60' + + return ( +
+ {/* Header */} +
setCollapsed(!collapsed) : undefined} + > + {/* Left: chevron + label + filename */} +
+ {canCollapse && ( + + {collapsed ? : } + + )} + {labelIcon && {labelIcon}} + {!hideLabel && ( + + {label} + + )} + {fileName && ( + + {fileName} + + )} + + {/* Loading spinner */} + {isLoading && ( +
+
+ {resolvedLoadingText && {resolvedLoadingText}} +
+ )} +
+ + {/* Right: stats + actions */} +
+ {/* Diff stats */} + {diffStats && ( +
+ {diffStats.additions > 0 && +{diffStats.additions}} + {diffStats.deletions > 0 && -{diffStats.deletions}} + {diffStats.additions === 0 && diffStats.deletions === 0 && ( + {t('common:noChanges')} + )} +
+ )} + + {/* Fullscreen button - 支持 diff 和代码 */} + {(isDiff || content?.trim()) && !collapsed && ( + + )} + + {/* Exit code */} + {stats?.exit !== undefined && ( + + {t('contentBlock.exitCode', { code: stats.exit })} + + )} +
+
+ + {/* Body - grid collapse animation */} +
+
+ {/* Content */} + {hasContent && ( +
+ {content && } + + {isDiff && resolvedDiff ? ( + + ) : content?.trim() ? ( + + ) : null} +
+ )} +
+
+ + {/* Fullscreen Viewer - 支持 diff 和代码 */} + {isDiff && diff && resolvedDiff ? ( + setFullscreenOpen(false)} + title={fileName || label} + titleExtra={ + diffStats && ( +
+ {diffStats.additions > 0 && +{diffStats.additions}} + {diffStats.deletions > 0 && -{diffStats.deletions}} +
+ ) + } + headerRight={} + deferContent + > + +
+ ) : content?.trim() ? ( + setFullscreenOpen(false)} + title={fileName || label} + headerRight={} + > + + + ) : null} +
+ ) +}) diff --git a/src/components/DesktopTitlebar.test.tsx b/src/components/DesktopTitlebar.test.tsx new file mode 100644 index 0000000..6a3788c --- /dev/null +++ b/src/components/DesktopTitlebar.test.tsx @@ -0,0 +1,48 @@ +import { render, screen } from '@testing-library/react' +import { describe, expect, it, vi } from 'vitest' +import { DesktopTitlebar } from './DesktopTitlebar' + +const { useThemeMock, useUpdateStoreMock, hasUpdateAvailableMock, getDesktopPlatformMock, usesCustomDesktopTitlebarMock } = + vi.hoisted(() => ({ + useThemeMock: vi.fn(() => ({ mode: 'dark', resolvedTheme: 'dark' })), + useUpdateStoreMock: vi.fn(() => ({})), + hasUpdateAvailableMock: vi.fn(() => false), + getDesktopPlatformMock: vi.fn(() => 'windows'), + usesCustomDesktopTitlebarMock: vi.fn(() => true), + })) + +vi.mock('react-i18next', () => ({ + useTranslation: () => ({ t: (key: string) => key }), +})) + +vi.mock('../hooks/useTheme', () => ({ + useTheme: () => useThemeMock(), +})) + +vi.mock('../store/updateStore', () => ({ + useUpdateStore: () => useUpdateStoreMock(), + hasUpdateAvailable: () => hasUpdateAvailableMock(), +})) + +vi.mock('../utils/tauri', () => ({ + isTauri: () => false, + getDesktopPlatform: () => getDesktopPlatformMock(), + usesCustomDesktopTitlebar: () => usesCustomDesktopTitlebarMock(), +})) + +describe('DesktopTitlebar', () => { + it('preserves externally injected window controls across rerenders', () => { + const { rerender } = render() + + const controlsHost = document.querySelector('[data-tauri-decorum-tb]') as HTMLDivElement | null + expect(controlsHost).not.toBeNull() + + const injectedControl = document.createElement('button') + injectedControl.textContent = 'Minimize' + controlsHost!.appendChild(injectedControl) + + rerender() + + expect(screen.getByText('Minimize')).toBeInTheDocument() + }) +}) diff --git a/src/components/DesktopTitlebar.tsx b/src/components/DesktopTitlebar.tsx new file mode 100644 index 0000000..c45580b --- /dev/null +++ b/src/components/DesktopTitlebar.tsx @@ -0,0 +1,190 @@ +import { memo, useCallback, useEffect, useMemo } from 'react' +import { + DESKTOP_MACOS_TRAFFIC_LIGHTS_WIDTH, + DESKTOP_TITLEBAR_CONTROLS_Z_INDEX, + DESKTOP_TITLEBAR_HEIGHT, + DESKTOP_TITLEBAR_Z_INDEX, +} from '../constants' +import { + ChevronLeftIcon, + ChevronRightIcon, + FolderOpenIcon, + SettingsIcon, + AppWindowIcon, +} from './Icons' +import { useTranslation } from 'react-i18next' +import { useTheme } from '../hooks/useTheme' +import { getDesktopPlatform, isTauri, usesCustomDesktopTitlebar } from '../utils/tauri' +import { useUpdateStore, hasUpdateAvailable } from '../store/updateStore' + +/* 标题栏图标按钮通用样式 — Windows 和 macOS 视觉节奏不同,按钮尺寸分开控制 */ +const TB_BTN = + 'inline-flex h-full w-8 items-center justify-center text-text-300 transition-colors hover:bg-bg-200/70 hover:text-text-100' +const TB_BTN_MAC = + 'inline-flex h-7 w-7 items-center justify-center rounded-md text-text-300 transition-colors hover:bg-bg-200/70 hover:text-text-100' +const TB_BTN_MAC_UPDATE = + 'inline-flex h-7 w-7 items-center justify-center rounded-md text-accent-main-100 transition-colors hover:bg-accent-main-100/10' + +const WindowsControlsHost = memo(function WindowsControlsHost() { + return ( +
+ ) +}) + +export function DesktopTitlebar() { + const { t } = useTranslation('components') + const { mode, resolvedTheme } = useTheme() + const updateState = useUpdateStore() + const hasUpdate = hasUpdateAvailable(updateState) + const platform = useMemo(() => getDesktopPlatform(), []) + const isDesktopChrome = useMemo(() => usesCustomDesktopTitlebar(), []) + const titlebarButtonClass = platform === 'macos' ? TB_BTN_MAC : TB_BTN + + /* ---- 原生主题同步 ---- */ + useEffect(() => { + if (!isDesktopChrome) return + // 让 overlay 侧边栏知道标题栏高度 + document.documentElement.style.setProperty('--desktop-titlebar-height', `${DESKTOP_TITLEBAR_HEIGHT}px`) + return () => { + document.documentElement.style.removeProperty('--desktop-titlebar-height') + } + }, [isDesktopChrome]) + + useEffect(() => { + if (!isDesktopChrome) return + + let cancelled = false + const theme = mode === 'system' ? null : resolvedTheme + + void import('@tauri-apps/api/window').then(async ({ getCurrentWindow }) => { + if (cancelled) return + try { + await getCurrentWindow().setTheme(theme) + } catch { + // best effort + } + }) + + return () => { + cancelled = true + } + }, [isDesktopChrome, mode, resolvedTheme]) + + /* ---- 导航 ---- */ + const handleBack = useCallback(() => { + window.history.back() + }, []) + + const handleForward = useCallback(() => { + window.history.forward() + }, []) + + /* ---- 功能操作 ---- */ + const handleOpenProject = useCallback(() => { + window.dispatchEvent(new CustomEvent('titlebar:open-project')) + }, []) + + const handleOpenSettings = useCallback(() => { + window.dispatchEvent(new CustomEvent('titlebar:open-settings')) + }, []) + + const handleNewWindow = useCallback(() => { + if (!isTauri()) return + void import('@tauri-apps/api/core').then(({ invoke }) => { + invoke('open_new_window', { directory: null }).catch(() => { + // 静默 + }) + }) + }, []) + + if (!isDesktopChrome) return null + + return ( +
+ {/* ---- 左侧:平台占位 + 导航 + 分隔 + 功能按钮 ---- */} +
+ {platform === 'macos' ? ( +
+ ) : ( +
+ )} + + {/* 后退 / 前进 */} + + + + {/* 打开项目 */} + + + {/* 设置 */} + + + {/* 新建窗口 */} + +
+ + {/* ---- 中间:拖拽区 ---- */} +
+ + {/* ---- 右侧:Windows 控制按钮 / macOS 留白 ---- */} + {platform === 'windows' ? ( + + ) : ( +
+ )} +
+ ) +} diff --git a/src/components/DiffView.test.tsx b/src/components/DiffView.test.tsx new file mode 100644 index 0000000..92f0d54 --- /dev/null +++ b/src/components/DiffView.test.tsx @@ -0,0 +1,36 @@ +import type { ReactNode } from 'react' +import { fireEvent, render, screen } from '@testing-library/react' +import { describe, expect, it, vi } from 'vitest' +import { DiffView } from './DiffView' + +vi.mock('../hooks/useSyntaxHighlight', () => ({ + useSyntaxHighlight: (code: string, options?: { mode?: 'html' | 'tokens' }) => ({ + output: options?.mode === 'tokens' ? code.split('\n').map(line => [{ content: line, color: '#fff' }]) : null, + isLoading: false, + }), +})) + +vi.mock('./FullscreenViewer', () => ({ + FullscreenViewer: ({ isOpen, children }: { isOpen: boolean; children?: ReactNode }) => + isOpen ?
{children}
: null, + ViewModeSwitch: () =>
switch
, +})) + +describe('DiffView', () => { + it('renders diff stats and can open fullscreen viewer', () => { + render( + , + ) + + expect(screen.getByText('app.ts')).toBeInTheDocument() + expect(screen.getByText('+1')).toBeInTheDocument() + expect(screen.getByText('-1')).toBeInTheDocument() + + fireEvent.click(screen.getByTitle('Fullscreen')) + expect(screen.getByTestId('fullscreen-viewer')).toBeInTheDocument() + }) +}) diff --git a/src/components/DiffView.tsx b/src/components/DiffView.tsx new file mode 100644 index 0000000..f0a4c64 --- /dev/null +++ b/src/components/DiffView.tsx @@ -0,0 +1,174 @@ +import { memo, useState, useMemo, useEffect } from 'react' +import { useTranslation } from 'react-i18next' +import { diffLines } from 'diff' +import { ChevronDownIcon, MaximizeIcon } from './Icons' +import { clsx } from 'clsx' +import { detectLanguage } from '../utils/languageUtils' +import { extractContentFromUnifiedDiff } from '../utils/diffUtils' +import { FullscreenViewer, ViewModeSwitch } from './FullscreenViewer' +import { DiffViewer, useDiffViewerData, type ViewMode } from './DiffViewer' + +interface DiffViewProps { + /** Unified diff format string */ + diff?: string + /** Original content */ + before?: string + /** New content */ + after?: string + /** File path for title and language detection */ + filePath?: string + /** Default collapsed state */ + defaultCollapsed?: boolean + /** Max height of the diff view */ + maxHeight?: number + /** Explicit language */ + language?: string +} + +/** 轻量统计 additions/deletions,不做高亮 */ +function computeDiffStats(before: string, after: string) { + const changes = diffLines(before, after) + let additions = 0 + let deletions = 0 + for (const change of changes) { + const count = change.count || 0 + if (change.added) additions += count + else if (change.removed) deletions += count + } + return { additions, deletions } +} + +export const DiffView = memo(function DiffView({ + diff, + before, + after, + filePath, + defaultCollapsed = false, + maxHeight = 300, + language: explicitLanguage, +}: DiffViewProps) { + const { t } = useTranslation(['components', 'common']) + const [collapsed, setCollapsed] = useState(defaultCollapsed) + const [modalOpen, setModalOpen] = useState(false) + const [fullscreenViewMode, setFullscreenViewMode] = useState('split') + + // 响应式 diff view mode(全屏弹窗用) + useEffect(() => { + if (!modalOpen) return + const checkWidth = () => setFullscreenViewMode(window.innerWidth >= 1000 ? 'split' : 'unified') + checkWidth() + window.addEventListener('resize', checkWidth) + return () => window.removeEventListener('resize', checkWidth) + }, [modalOpen]) + + // Determine content to diff + const content = useMemo(() => { + if (before !== undefined && after !== undefined) { + return { before, after } + } + if (diff) { + return extractContentFromUnifiedDiff(diff) + } + return null + }, [before, after, diff]) + + const hasContent = content !== null + + const language = useMemo(() => { + return explicitLanguage || detectLanguage(filePath) + }, [filePath, explicitLanguage]) + + const diffViewerData = useDiffViewerData(content?.before ?? '', content?.after ?? '', language) + + const stats = useMemo(() => { + if (!content) return { additions: 0, deletions: 0 } + return computeDiffStats(content.before, content.after) + }, [content]) + + // Fallback for unified diff string only + if (!hasContent && diff) { + return ( +
+ {diff} +
+ ) + } + + if (!hasContent) return null + + const fileName = filePath ? filePath.split(/[/\\]/).pop() : undefined + + return ( +
+ {/* Header */} +
setCollapsed(!collapsed)} + > +
+
+ +
+ {fileName && {fileName}} +
+
+ {stats.additions > 0 && +{stats.additions}} + {stats.deletions > 0 && -{stats.deletions}} + {stats.additions === 0 && stats.deletions === 0 && ( + {t('common:noChanges')} + )} + + {/* 放大按钮 */} + +
+
+ + {/* Content - 使用 grid 实现平滑展开动画 */} +
+
+ +
+
+ + {/* Fullscreen Diff */} + {content && ( + setModalOpen(false)} + title={fileName} + titleExtra={ +
+ {stats.additions > 0 && +{stats.additions}} + {stats.deletions > 0 && -{stats.deletions}} +
+ } + headerRight={} + deferContent + > + +
+ )} +
+ ) +}) diff --git a/src/components/DiffViewer.test.tsx b/src/components/DiffViewer.test.tsx new file mode 100644 index 0000000..a31e215 --- /dev/null +++ b/src/components/DiffViewer.test.tsx @@ -0,0 +1,82 @@ +import { fireEvent, render, screen, waitFor } from '@testing-library/react' +import { describe, expect, it, vi } from 'vitest' +import { DiffViewer } from './DiffViewer' + +vi.mock('../store/themeStore', async importOriginal => { + const actual = await importOriginal() + const snapshot = { diffStyle: 'lineNumbers' as const, codeWordWrap: false, codeFontScale: 0 } + return { + ...actual, + themeStore: { + subscribe: () => () => {}, + getSnapshot: () => snapshot, + }, + } +}) + +vi.mock('../hooks/useSyntaxHighlight', () => ({ + useSyntaxHighlight: (code: string, options?: { mode?: 'html' | 'tokens' }) => ({ + output: options?.mode === 'tokens' ? code.split('\n').map(line => [{ content: line, color: '#fff' }]) : null, + isLoading: false, + }), +})) + +describe('DiffViewer', () => { + it('uses wrapped rendering without proxy horizontal scrollbar when word wrap is enabled', () => { + const { container } = render( + , + ) + + expect(screen.getByText('const someRidiculouslyLongIdentifierName = oldValue')).toBeInTheDocument() + expect(screen.getByText('const someRidiculouslyLongIdentifierName = newValue')).toBeInTheDocument() + expect(container.querySelector('.sticky')).toBeNull() + }) + + it('keeps empty split content texture anchored while scrolling horizontally', async () => { + const { container } = render( + , + ) + + const scrollPanels = container.querySelectorAll('.scrollbar-none') + const leftContent = scrollPanels[0] as HTMLDivElement + + const emptyBuffer = container.querySelector('.diff-empty-content-buffer.min-w-full') as HTMLDivElement + const initialX = Number.parseFloat(emptyBuffer.style.backgroundPosition.split(' ')[0] ?? '0') + + Object.defineProperty(leftContent, 'scrollLeft', { value: 37, configurable: true }) + fireEvent.scroll(leftContent) + + await waitFor(() => { + const updatedBuffer = container.querySelector('.diff-empty-content-buffer.min-w-full') as HTMLDivElement + const updatedX = Number.parseFloat(updatedBuffer.style.backgroundPosition.split(' ')[0] ?? '0') + expect(updatedX - initialX).toBe(37) + }) + }) + + it('keeps split word-diff changed text themed when syntax highlighting is unavailable', () => { + const { container } = render( + , + ) + + const changedSegments = Array.from(container.querySelectorAll('span')).filter( + segment => segment.classList.contains('bg-danger-100/30') || segment.classList.contains('bg-success-100/30'), + ) + + expect(changedSegments.length).toBeGreaterThan(0) + for (const segment of changedSegments) { + expect(segment.closest('.text-text-100')).not.toBeNull() + } + }) +}) diff --git a/src/components/DiffViewer.tsx b/src/components/DiffViewer.tsx new file mode 100644 index 0000000..ec62d5e --- /dev/null +++ b/src/components/DiffViewer.tsx @@ -0,0 +1,1847 @@ +/** + * DiffViewer - 核心 Diff 渲染组件 + * + * 两列架构(和 CodePreview 一致): + * - Gutter 列:change bar(3px 竖条,增绿删红)+ 行号,固定不水平滚动 + * - Content 列:代码内容,独立水平滚动 + * + * 默认使用虚拟滚动;启用自动换行后切到 wrapped 渲染 + * 不再按文件大小、行数、字符数降级高亮或 diff + */ + +import { memo, useMemo, useRef, useState, useEffect, useCallback, useSyncExternalStore, type CSSProperties } from 'react' +import { useTranslation } from 'react-i18next' +import { diffLines, diffWords } from 'diff' +import { useSyntaxHighlight, type HighlightTokens } from '../hooks/useSyntaxHighlight' +import { useDynamicVirtualScroll } from '../hooks/useDynamicVirtualScroll' +import { themeStore } from '../store/themeStore' +import type { DiffStyle } from '../store/themeStore' +import { getLineCount, getLineNumberColumnWidth } from '../utils/lineNumberUtils' + +// ============================================ +// 常量 +// ============================================ + +/** codeFontScale 偏移 → 代码行高 (px)。基准 24px,每 1px 字号偏移对应 2px 行高增量 */ +function codeLineHeight(offset: number): number { + return 24 + offset * 2 +} +const OVERSCAN = 5 + +// ============================================ +// Types +// ============================================ + +export type ViewMode = 'split' | 'unified' + +export interface DiffViewerProps { + before: string + after: string + language?: string + viewMode?: ViewMode + /** 不传则填满父容器 */ + maxHeight?: number + isResizing?: boolean + wordWrap?: boolean + data?: DiffViewerData +} + +export interface DiffViewerData { + beforeTokens: HighlightTokens | null + afterTokens: HighlightTokens | null + pairedLines: PairedLine[] + unifiedLines: UnifiedLine[] + lineNumberWidth: number +} + +export type LineType = 'add' | 'delete' | 'context' | 'empty' + +interface DiffLine { + type: LineType + content: string + lineNo?: number + /** 词级别 diff 标记(结构化),与 syntax token 共存 */ + wordDiffSegments?: WordDiffSegment[] +} + +/** 词级别 diff 的单个片段 */ +interface WordDiffSegment { + text: string + /** 'add' | 'delete' 表示增删标记,undefined 表示无变化 */ + diffType?: 'add' | 'delete' +} + +interface PairedLine { + left: DiffLine + right: DiffLine +} + +/** 折叠的 context 行占位 */ +interface CollapsedPairedLine { + collapsed: true + count: number + /** 在原始 lines 数组中的起始索引,用于展开 */ + id: number + isFirst: boolean + isLast: boolean + chunked: boolean +} + +type PairedLineOrCollapsed = PairedLine | CollapsedPairedLine + +interface UnifiedLine extends DiffLine { + oldLineNo?: number + newLineNo?: number +} + +interface CollapsedUnifiedLine { + collapsed: true + count: number + id: number + isFirst: boolean + isLast: boolean + chunked: boolean +} + +type UnifiedLineOrCollapsed = UnifiedLine | CollapsedUnifiedLine + +function isCollapsed( + line: PairedLineOrCollapsed | UnifiedLineOrCollapsed, +): line is CollapsedPairedLine | CollapsedUnifiedLine { + return 'collapsed' in line && line.collapsed === true +} + +function expandRegion(prev: Map, id: number, direction: ExpandDirection): Map { + const next = new Map(prev) + const current = next.get(id) ?? { fromStart: 0, fromEnd: 0 } + next.set(id, { + fromStart: current.fromStart + (direction === 'up' || direction === 'both' ? EXPANSION_LINE_COUNT : 0), + fromEnd: current.fromEnd + (direction === 'down' || direction === 'both' ? EXPANSION_LINE_COUNT : 0), + }) + return next +} + +/** 上下文行保留数:变更前后各保留 CONTEXT_LINES 行 */ +const CONTEXT_LINES = 3 +const EXPANSION_LINE_COUNT = 100 +type ExpandDirection = 'up' | 'down' | 'both' +interface ExpansionRegion { + fromStart: number + fromEnd: number +} + +/** 将连续 context 行折叠,只保留变更前后各 CONTEXT_LINES 行 */ +function collapseContextPaired(lines: PairedLine[], expandedRegions?: ReadonlyMap): PairedLineOrCollapsed[] { + if (lines.length === 0) return [] + + const result: PairedLineOrCollapsed[] = [] + let contextStart = -1 + + for (let i = 0; i <= lines.length; i++) { + const isCtx = i < lines.length && lines[i].left.type === 'context' && lines[i].right.type === 'context' + + if (isCtx) { + if (contextStart === -1) contextStart = i + } else { + if (contextStart !== -1) { + const ctxLen = i - contextStart + const minToCollapse = CONTEXT_LINES * 2 + 2 + if (ctxLen > minToCollapse) { + const isFirst = contextStart === 0 + const isLast = i === lines.length + const keepBefore = isFirst ? 0 : CONTEXT_LINES + const keepAfter = isLast ? 0 : CONTEXT_LINES + const expanded = expandedRegions?.get(contextStart) ?? { fromStart: 0, fromEnd: 0 } + const prefixCount = Math.min(ctxLen, keepBefore + expanded.fromStart) + const suffixStart = Math.max(prefixCount, ctxLen - keepAfter - expanded.fromEnd) + + for (let j = contextStart; j < contextStart + prefixCount; j++) result.push(lines[j]) + if (suffixStart > prefixCount) { + const count = suffixStart - prefixCount + result.push({ + collapsed: true, + count, + id: contextStart, + isFirst, + isLast, + chunked: count > EXPANSION_LINE_COUNT, + }) + } + for (let j = contextStart + suffixStart; j < i; j++) result.push(lines[j]) + } else { + for (let j = contextStart; j < i; j++) result.push(lines[j]) + } + contextStart = -1 + } + if (i < lines.length) result.push(lines[i]) + } + } + + return result +} + +function collapseContextUnified(lines: UnifiedLine[], expandedRegions?: ReadonlyMap): UnifiedLineOrCollapsed[] { + if (lines.length === 0) return [] + + const result: UnifiedLineOrCollapsed[] = [] + let contextStart = -1 + + for (let i = 0; i <= lines.length; i++) { + const isCtx = i < lines.length && lines[i].type === 'context' + + if (isCtx) { + if (contextStart === -1) contextStart = i + } else { + if (contextStart !== -1) { + const ctxLen = i - contextStart + const minToCollapse = CONTEXT_LINES * 2 + 2 + if (ctxLen > minToCollapse) { + const isFirst = contextStart === 0 + const isLast = i === lines.length + const keepBefore = isFirst ? 0 : CONTEXT_LINES + const keepAfter = isLast ? 0 : CONTEXT_LINES + const expanded = expandedRegions?.get(contextStart) ?? { fromStart: 0, fromEnd: 0 } + const prefixCount = Math.min(ctxLen, keepBefore + expanded.fromStart) + const suffixStart = Math.max(prefixCount, ctxLen - keepAfter - expanded.fromEnd) + + for (let j = contextStart; j < contextStart + prefixCount; j++) result.push(lines[j]) + if (suffixStart > prefixCount) { + const count = suffixStart - prefixCount + result.push({ + collapsed: true, + count, + id: contextStart, + isFirst, + isLast, + chunked: count > EXPANSION_LINE_COUNT, + }) + } + for (let j = contextStart + suffixStart; j < i; j++) result.push(lines[j]) + } else { + for (let j = contextStart; j < i; j++) result.push(lines[j]) + } + contextStart = -1 + } + if (i < lines.length) result.push(lines[i]) + } + } + + return result +} + +// ============================================ +// Helpers +// ============================================ + +function getLineBgClass(type: LineType): string { + switch (type) { + case 'add': + return 'bg-success-bg/40' + case 'delete': + return 'bg-danger-bg/40' + case 'empty': + return 'bg-bg-100/30' + default: + return '' + } +} + +function getGutterBgClass(type: LineType): string { + switch (type) { + case 'add': + return 'bg-success-bg/40' + case 'delete': + return 'bg-danger-bg/40' + case 'empty': + return 'bg-bg-100/30' + default: + return '' + } +} + +function getContentBgClass(type: LineType): string { + if (type === 'empty') return 'diff-empty-content-buffer' + return getLineBgClass(type) +} + +function getEmptyBufferBackgroundStyle(yOffset: number, xOffset = 0): CSSProperties { + return { backgroundPosition: `${5 + xOffset}px ${-yOffset}px` } +} + +function getEmptyBufferRowStyle(height: number, yOffset = 0, xOffset = 0): CSSProperties { + return { height, ...getEmptyBufferBackgroundStyle(yOffset, xOffset) } +} + +function estimateWrappedVisualLineCount(content: string, availableWidth: number): number { + if (!content) return 1 + if (availableWidth <= 0) return 1 + + const charWidth = 8 + const charsPerLine = Math.max(1, Math.floor(availableWidth / charWidth)) + let visualLines = 0 + + for (const segment of content.split('\n')) { + visualLines += Math.max(1, Math.ceil(segment.length / charsPerLine)) + } + + return visualLines +} + +function getWrappedPairContent(pair: PairedLine): string { + return pair.left.content.length >= pair.right.content.length ? pair.left.content : pair.right.content +} + +function useDiffLineNumberWidth(before: string, after: string): number { + return useMemo( + () => getLineNumberColumnWidth(Math.max(getLineCount(before), getLineCount(after))), + [before, after], + ) +} + +function LineNumberCell({ lineNo, width, type }: { lineNo?: number; width: number; type?: LineType }) { + const toneClass = type === 'add' || type === 'delete' ? 'text-text-300' : 'text-text-400' + return ( +
+ {lineNo} +
+ ) +} + +function DiffMarkerCell({ type }: { type: LineType }) { + return ( +
+ {type === 'add' && +} + {type === 'delete' && −} +
+ ) +} + +function EmptyContentBuffer({ height, yOffset = 0, xOffset = 0 }: { height: number; yOffset?: number; xOffset?: number }) { + return
+} + +/** Change bar 样式 — 行号左侧的 3px 竖条,add 实心 / delete 虚线 */ +function getChangeBarProps(type: LineType, yOffset = 0): { className: string; style?: React.CSSProperties } { + switch (type) { + case 'add': + return { className: 'w-1 shrink-0 bg-success-100' } + case 'delete': + return { + className: 'diff-change-bar-delete w-1 shrink-0', + style: { backgroundPositionY: `${-yOffset}px` }, + } + default: + return { className: 'w-1 shrink-0' } + } +} + +function alignDeleteChangeBars(container: HTMLElement, yOffset: number) { + for (const bar of container.querySelectorAll('.diff-change-bar-delete')) { + bar.style.backgroundPositionY = `${-yOffset}px` + } +} + +/** Pierre-like 折叠按钮,放在 gutter 区域 */ +function ExpandIcon({ type }: { type: ExpandDirection }) { + if (type === 'both') { + return ( + + ) + } + + return ( + + ) +} + +function getSeparatorDirections({ isFirst, isLast, chunked }: { isFirst?: boolean; isLast?: boolean; chunked?: boolean }): ExpandDirection[] { + if (!chunked) return [!isFirst && !isLast ? 'both' : isFirst ? 'down' : 'up'] + const directions: ExpandDirection[] = [] + if (!isFirst) directions.push('up') + if (!isLast) directions.push('down') + return directions +} + +function CollapsedExpandButton({ + directions, + onExpand, + width, +}: { + directions: ExpandDirection[] + onExpand?: (direction: ExpandDirection) => void + width?: number +}) { + const buttonWidth = width !== undefined && directions.length > 0 ? width / directions.length : undefined + + return ( +
+ {directions.map(direction => ( + + ))} +
+ ) +} + +/** 折叠文案区,放在 content 区域 */ +function CollapsedLabel({ + count, + t, + leadingDirections = [], + onExpand, + height = 24, +}: { + count: number + t: (key: string, opts?: Record) => string + leadingDirections?: ExpandDirection[] + onExpand?: (direction: ExpandDirection) => void + height?: number +}) { + return ( +
+ {leadingDirections.length > 0 && } +
+ +
+
+ ) +} + +function CollapsedLabelOverlay({ + count, + t, + onExpand, + height, + left, +}: { + count: number + t: (key: string, opts?: Record) => string + onExpand?: (direction: ExpandDirection) => void + height: number + left: number +}) { + return ( +
+ +
+ ) +} + +/** 右侧/续接区域,只显示同一条 separator 的延伸背景 */ +function CollapsedContinuation({ height = 24 }: { height?: number }) { + return
+} + +/** Wrapped 模式直接横跨整行 */ +function CollapsedBar({ + count, + t, + isFirst, + isLast, + chunked, + onExpand, + height = 24, + lineNumberAreaWidth, +}: { + count: number + t: (key: string, opts?: Record) => string + isFirst?: boolean + isLast?: boolean + chunked?: boolean + onExpand?: (direction: ExpandDirection) => void + height?: number + lineNumberAreaWidth?: number +}) { + const directions = getSeparatorDirections({ isFirst, isLast, chunked }) + return ( +
+ + +
+ ) +} + +// ============================================ +// Main Component +// ============================================ + +// eslint-disable-next-line react-refresh/only-export-components -- DiffViewer consumers share this data with fullscreen instances. +export function useDiffViewerData(before: string, after: string, language = 'text', isResizing = false, enabled = true): DiffViewerData { + const shouldHighlight = enabled && !isResizing && language !== 'text' + const { output: beforeTokens } = useSyntaxHighlight(before, { + lang: language, + mode: 'tokens', + enabled: shouldHighlight, + }) + const { output: afterTokens } = useSyntaxHighlight(after, { + lang: language, + mode: 'tokens', + enabled: shouldHighlight, + }) + const skipWordDiff = isResizing + const pairedLines = useMemo(() => (enabled ? computePairedLines(before, after, skipWordDiff) : []), [before, after, enabled, skipWordDiff]) + const unifiedLines = useMemo(() => (enabled ? computeUnifiedLines(before, after) : []), [before, after, enabled]) + const lineNumberWidth = useDiffLineNumberWidth(enabled ? before : '', enabled ? after : '') + + return useMemo( + () => ({ beforeTokens, afterTokens, pairedLines, unifiedLines, lineNumberWidth }), + [afterTokens, beforeTokens, lineNumberWidth, pairedLines, unifiedLines], + ) +} + +export const DiffViewer = memo(function DiffViewer({ + data, + ...props +}: DiffViewerProps) { + if (data) return + return +}) + +function DiffViewerWithData({ before, after, language = 'text', isResizing = false, ...props }: DiffViewerProps) { + const data = useDiffViewerData(before, after, language, isResizing) + return +} + +const DiffViewerContent = memo(function DiffViewerContent({ + before, + after, + viewMode = 'split', + maxHeight, + isResizing = false, + wordWrap, + data, +}: DiffViewerProps & { data: DiffViewerData }) { + const { diffStyle, codeWordWrap, codeFontScale } = useSyncExternalStore(themeStore.subscribe, themeStore.getSnapshot) + const resolvedWordWrap = wordWrap ?? codeWordWrap + const lineHeight = codeLineHeight(codeFontScale) + const resolvedData = data + + // 纯增加或纯删除时,split 模式另一边是空的没意义,自动降级为 unified + const isAddOnly = !before.trim() + const isDeleteOnly = !after.trim() + const effectiveViewMode = isAddOnly || isDeleteOnly ? 'unified' : viewMode + + if (effectiveViewMode === 'split') { + if (resolvedWordWrap) { + return ( + + ) + } + + return ( + + ) + } + + if (resolvedWordWrap) { + return ( + + ) + } + + return ( + + ) +}) + +const WrappedSplitDiffView = memo(function WrappedSplitDiffView({ + beforeTokens, + afterTokens, + pairedLines, + lineNumberWidth, + isResizing, + maxHeight, + diffStyle, + lineHeight, +}: { + beforeTokens: HighlightTokens | null + afterTokens: HighlightTokens | null + pairedLines: PairedLine[] + lineNumberWidth: number + isResizing: boolean + maxHeight?: number + diffStyle: DiffStyle + lineHeight: number +}) { + const { t } = useTranslation(['components', 'common']) + const [expandedRegions, setExpandedRegions] = useState>(() => new Map()) + const displayLines = useMemo(() => collapseContextPaired(pairedLines, expandedRegions), [pairedLines, expandedRegions]) + const handleExpand = useCallback((id: number, direction: ExpandDirection) => { + setExpandedRegions(prev => expandRegion(prev, id, direction)) + }, []) + + const useChangeBars = diffStyle === 'changeBars' + const gutterWidth = useChangeBars ? lineNumberWidth + 4 : lineNumberWidth + 20 + const estimateRowHeight = useCallback( + (index: number, containerWidth: number) => { + const item = displayLines[index] + if (!item || isCollapsed(item)) return lineHeight + + const panelWidth = Math.max(0, containerWidth / 2 - gutterWidth - 16) + return estimateWrappedVisualLineCount(getWrappedPairContent(item as PairedLine), panelWidth) * lineHeight + }, + [displayLines, gutterWidth, lineHeight], + ) + + const { containerRef, totalHeight, startIndex, endIndex, offsetY, handleScroll, measureRef } = + useDynamicVirtualScroll({ + lineCount: displayLines.length, + isResizing, + estimateLineHeight: lineHeight, + estimateHeight: estimateRowHeight, + }) + + const measureWrappedRowRef = useCallback( + (index: number, el: HTMLDivElement | null) => { + measureRef(index, el) + if (!el) return + + const rowTop = offsetY + el.offsetTop + for (const buffer of el.querySelectorAll('.diff-empty-content-buffer')) { + buffer.style.backgroundPosition = `5px ${-rowTop}px` + } + alignDeleteChangeBars(el, rowTop) + }, + [measureRef, offsetY], + ) + + if (pairedLines.length === 0) { + return ( +
+ {t('diffViewer.noChanges')} +
+ ) + } + + const visibleRows: React.ReactNode[] = [] + for (let i = startIndex; i < endIndex; i++) { + const item = displayLines[i] + + if (isCollapsed(item)) { + visibleRows.push( +
measureWrappedRowRef(i, el)}> + handleExpand(item.id, direction)} + lineNumberAreaWidth={lineNumberWidth} + height={lineHeight} + /> +
, + ) + continue + } + + const pair = item as PairedLine + const leftEmptyStyle = pair.left.type === 'empty' ? getEmptyBufferBackgroundStyle(0) : undefined + const rightEmptyStyle = pair.right.type === 'empty' ? getEmptyBufferBackgroundStyle(0) : undefined + visibleRows.push( +
measureWrappedRowRef(i, el)} className="flex items-stretch"> + {/* Left panel */} +
+
+ {useChangeBars ? ( +
+
+ +
+ ) : ( +
+ + +
+ )} +
+ +
+ {pair.left.type !== 'empty' && } +
+
+ + {/* Right panel */} +
+
+ {useChangeBars ? ( +
+
+ +
+ ) : ( +
+ + +
+ )} +
+ +
+ {pair.right.type !== 'empty' && } +
+
+
, + ) + } + + return ( +
+
+
+ {visibleRows} +
+
+
+ ) +}) + +// ============================================ +// Split Diff View - 两列架构 +// +// 结构: +// 外层容器 (overflow-y: auto) — 垂直滚动主控 +// flex 行 +// 左面板 (flex-1, flex row) +// 左 gutter (shrink-0, overflow: hidden) +// 左 content (flex-1, overflow-x: auto scrollbar-none) +// 分隔线 +// 右面板 (flex-1, flex row) +// 右 gutter (shrink-0, overflow: hidden) +// 右 content (flex-1, overflow-x: auto scrollbar-none) +// sticky proxy scrollbar 底部 +// ============================================ + +const SplitDiffView = memo(function SplitDiffView({ + beforeTokens, + afterTokens, + pairedLines, + lineNumberWidth, + isResizing, + maxHeight, + diffStyle, + lineHeight, +}: { + beforeTokens: HighlightTokens | null + afterTokens: HighlightTokens | null + pairedLines: PairedLine[] + lineNumberWidth: number + isResizing: boolean + maxHeight?: number + diffStyle: DiffStyle + lineHeight: number +}) { + const { t } = useTranslation(['components', 'common']) + const containerRef = useRef(null) + const leftContentRef = useRef(null) + const rightContentRef = useRef(null) + const leftScrollbarRef = useRef(null) + const rightScrollbarRef = useRef(null) + const leftScrollSourceRef = useRef<'content' | 'scrollbar' | null>(null) + const rightScrollSourceRef = useRef<'content' | 'scrollbar' | null>(null) + const maxLeftScrollWidthRef = useRef(0) + const maxRightScrollWidthRef = useRef(0) + const [scrollTop, setScrollTop] = useState(0) + const [containerHeight, setContainerHeight] = useState(300) + const [leftContentWidth, setLeftContentWidth] = useState(0) + const [rightContentWidth, setRightContentWidth] = useState(0) + const [leftClientWidth, setLeftClientWidth] = useState(0) + const [rightClientWidth, setRightClientWidth] = useState(0) + const [leftScrollLeft, setLeftScrollLeft] = useState(0) + const [rightScrollLeft, setRightScrollLeft] = useState(0) + + const [expandedRegions, setExpandedRegions] = useState>(() => new Map()) + const displayLines = useMemo(() => collapseContextPaired(pairedLines, expandedRegions), [pairedLines, expandedRegions]) + const handleExpand = useCallback((id: number, direction: ExpandDirection) => { + setExpandedRegions(prev => expandRegion(prev, id, direction)) + }, []) + + const totalHeight = displayLines.length * lineHeight + + const { startIndex, endIndex, offsetY } = useMemo(() => { + const start = Math.max(0, Math.floor(scrollTop / lineHeight) - OVERSCAN) + const visibleCount = Math.ceil(containerHeight / lineHeight) + const end = Math.min(displayLines.length, start + visibleCount + OVERSCAN * 2) + return { startIndex: start, endIndex: end, offsetY: start * lineHeight } + }, [scrollTop, containerHeight, displayLines.length, lineHeight]) + + // 监听容器大小 + useEffect(() => { + const container = containerRef.current + if (!container || isResizing) return + + setContainerHeight(container.clientHeight) + const resizeObserver = new ResizeObserver(() => setContainerHeight(container.clientHeight)) + resizeObserver.observe(container) + return () => resizeObserver.disconnect() + }, [isResizing]) + + // 测量 content 宽度 — 追踪可见行 scrollWidth 历史最大值 + useEffect(() => { + const leftContent = leftContentRef.current + const rightContent = rightContentRef.current + if (!leftContent || !rightContent) return + const leftInner = leftContent.firstElementChild as HTMLElement + const rightInner = rightContent.firstElementChild as HTMLElement + + const measure = () => { + if (leftInner) { + const sw = leftInner.scrollWidth + if (sw > maxLeftScrollWidthRef.current) { + maxLeftScrollWidthRef.current = sw + leftInner.style.minWidth = `${sw}px` + } + setLeftContentWidth(maxLeftScrollWidthRef.current) + } + if (rightInner) { + const sw = rightInner.scrollWidth + if (sw > maxRightScrollWidthRef.current) { + maxRightScrollWidthRef.current = sw + rightInner.style.minWidth = `${sw}px` + } + setRightContentWidth(maxRightScrollWidthRef.current) + } + setLeftClientWidth(leftContent.clientWidth) + setRightClientWidth(rightContent.clientWidth) + } + + measure() + const ro = new ResizeObserver(() => { + maxLeftScrollWidthRef.current = 0 + maxRightScrollWidthRef.current = 0 + if (leftInner) leftInner.style.minWidth = '' + if (rightInner) rightInner.style.minWidth = '' + measure() + }) + ro.observe(leftContent) + ro.observe(rightContent) + const mo = new MutationObserver(measure) + mo.observe(leftContent, { childList: true, subtree: true }) + mo.observe(rightContent, { childList: true, subtree: true }) + return () => { + ro.disconnect() + mo.disconnect() + } + }, [displayLines, startIndex, endIndex]) + + const handleScroll = useCallback((e: React.UIEvent) => { + setScrollTop(e.currentTarget.scrollTop) + }, []) + + // 同步 proxy 滚动条 <-> content 面板(带 guard 防循环) + const handleLeftScrollbar = useCallback((e: React.UIEvent) => { + if (leftScrollSourceRef.current === 'content') return + leftScrollSourceRef.current = 'scrollbar' + setLeftScrollLeft(e.currentTarget.scrollLeft) + if (leftContentRef.current) leftContentRef.current.scrollLeft = e.currentTarget.scrollLeft + requestAnimationFrame(() => { + leftScrollSourceRef.current = null + }) + }, []) + const handleRightScrollbar = useCallback((e: React.UIEvent) => { + if (rightScrollSourceRef.current === 'content') return + rightScrollSourceRef.current = 'scrollbar' + setRightScrollLeft(e.currentTarget.scrollLeft) + if (rightContentRef.current) rightContentRef.current.scrollLeft = e.currentTarget.scrollLeft + requestAnimationFrame(() => { + rightScrollSourceRef.current = null + }) + }, []) + const handleLeftContentScroll = useCallback((e: React.UIEvent) => { + if (leftScrollSourceRef.current === 'scrollbar') return + leftScrollSourceRef.current = 'content' + setLeftScrollLeft(e.currentTarget.scrollLeft) + if (leftScrollbarRef.current) leftScrollbarRef.current.scrollLeft = e.currentTarget.scrollLeft + requestAnimationFrame(() => { + leftScrollSourceRef.current = null + }) + }, []) + const handleRightContentScroll = useCallback((e: React.UIEvent) => { + if (rightScrollSourceRef.current === 'scrollbar') return + rightScrollSourceRef.current = 'content' + setRightScrollLeft(e.currentTarget.scrollLeft) + if (rightScrollbarRef.current) rightScrollbarRef.current.scrollLeft = e.currentTarget.scrollLeft + requestAnimationFrame(() => { + rightScrollSourceRef.current = null + }) + }, []) + + if (pairedLines.length === 0) { + return ( +
+ {t('diffViewer.noChanges')} +
+ ) + } + + // 渲染可见行 — 分别生成 gutter 和 content + const useChangeBars = diffStyle === 'changeBars' + const gutterWidth = useChangeBars ? lineNumberWidth + 4 : lineNumberWidth + 20 + + const leftGutterRows: React.ReactNode[] = [] + const leftContentRows: React.ReactNode[] = [] + const rightGutterRows: React.ReactNode[] = [] + const rightContentRows: React.ReactNode[] = [] + + for (let i = startIndex; i < endIndex; i++) { + const item = displayLines[i] + + if (isCollapsed(item)) { + const directions = getSeparatorDirections(item) + leftGutterRows.push( +
+ handleExpand(item.id, direction)} + width={lineNumberWidth} + /> + handleExpand(item.id, direction)} + height={lineHeight} + left={lineNumberWidth} + /> +
, + ) + leftContentRows.push( +
+ +
, + ) + rightGutterRows.push( +
, + ) + rightContentRows.push( +
+ +
, + ) + continue + } + + const pair = item as PairedLine + const leftGutterClass = pair.left.type === 'empty' ? 'diff-empty-content-buffer' : getGutterBgClass(pair.left.type) + const rightGutterClass = pair.right.type === 'empty' ? 'diff-empty-content-buffer' : getGutterBgClass(pair.right.type) + const rowTop = i * lineHeight + const leftGutterStyle = getEmptyBufferRowStyle(lineHeight, rowTop) + const rightGutterStyle = getEmptyBufferRowStyle(lineHeight, rowTop) + + // Left gutter + leftGutterRows.push( + useChangeBars ? ( +
+
+ +
+ ) : ( +
+ + +
+ ), + ) + + // Left content: 代码 + leftContentRows.push( +
+ {pair.left.type === 'empty' ? : } +
, + ) + + // Right gutter + rightGutterRows.push( + useChangeBars ? ( +
+
+ +
+ ) : ( +
+ + +
+ ), + ) + + // Right content + rightContentRows.push( +
+ {pair.right.type === 'empty' ? : } +
, + ) + } + return ( +
+ {/* 虚拟滚动高度占位 */} +
+
+ {/* 左面板 */} +
+ {/* 左 gutter */} +
+ {leftGutterRows} +
+ {/* 左 content — 隐藏自身滚动条,由 proxy 控制 */} +
+
{leftContentRows}
+
+
+ + {/* 右面板 */} +
+ {/* 右 gutter */} +
+ {rightGutterRows} +
+ {/* 右 content */} +
+
{rightContentRows}
+
+
+
+
+ + {/* Sticky proxy 横向滚动条 — 只在内容实际溢出时显示 */} + {(leftContentWidth > leftClientWidth || rightContentWidth > rightClientWidth) && ( +
+ {/* 左面板: gutter 占位 + scrollbar */} +
+
+
+
+
+
+ {/* 右面板: gutter 占位 + scrollbar */} +
+
+
+
+
+
+
+ )} +
+ ) +}) + +// ============================================ +// Unified Diff View — 和 SplitDiffView / CodePreview 一致的架构 +// +// 结构: +// 外层容器 (overflow-y: auto, overflow-x: hidden) — 垂直滚动唯一来源 +// 高度占位 (height: totalHeight, relative) — 虚拟滚动 +// absolute div (translateY: offsetY) — 可见行 +// flex row +// gutter (shrink-0, overflow: hidden): +// markers 模式: oldLineNo | newLineNo | +/- +// changeBars 模式: changeBar | oldLineNo | newLineNo +// content (flex-1, overflow-x: auto, scrollbar-none): 代码 +// inline-block min-w-full — 被最宽行撑开 +// sticky proxy scrollbar (bottom: 0) — 可见的横向滚动条 +// ============================================ + +const UnifiedDiffView = memo(function UnifiedDiffView({ + beforeTokens, + afterTokens, + lines, + lineNumberWidth, + isResizing, + maxHeight, + diffStyle, + lineHeight, +}: { + beforeTokens: HighlightTokens | null + afterTokens: HighlightTokens | null + lines: UnifiedLine[] + lineNumberWidth: number + isResizing: boolean + maxHeight?: number + diffStyle: DiffStyle + lineHeight: number +}) { + const { t } = useTranslation(['components', 'common']) + const containerRef = useRef(null) + const contentRef = useRef(null) + const scrollbarRef = useRef(null) + const scrollSourceRef = useRef<'content' | 'scrollbar' | null>(null) + const maxScrollWidthRef = useRef(0) + const [scrollTop, setScrollTop] = useState(0) + const [containerHeight, setContainerHeight] = useState(300) + const [contentWidth, setContentWidth] = useState(0) + const [contentClientWidth, setContentClientWidth] = useState(0) + + const [expandedRegions, setExpandedRegions] = useState>(() => new Map()) + const displayLines = useMemo(() => collapseContextUnified(lines, expandedRegions), [lines, expandedRegions]) + const handleExpand = useCallback((id: number, direction: ExpandDirection) => { + setExpandedRegions(prev => expandRegion(prev, id, direction)) + }, []) + + const totalHeight = displayLines.length * lineHeight + + const { startIndex, endIndex, offsetY } = useMemo(() => { + const start = Math.max(0, Math.floor(scrollTop / lineHeight) - OVERSCAN) + const visibleCount = Math.ceil(containerHeight / lineHeight) + const end = Math.min(displayLines.length, start + visibleCount + OVERSCAN * 2) + return { startIndex: start, endIndex: end, offsetY: start * lineHeight } + }, [scrollTop, containerHeight, displayLines.length, lineHeight]) + + useEffect(() => { + const container = containerRef.current + if (!container || isResizing) return + + setContainerHeight(container.clientHeight) + const resizeObserver = new ResizeObserver(() => setContainerHeight(container.clientHeight)) + resizeObserver.observe(container) + return () => resizeObserver.disconnect() + }, [isResizing]) + + // 测量 content 宽度 — 追踪可见行 scrollWidth 历史最大值 + useEffect(() => { + const content = contentRef.current + if (!content) return + const inner = content.firstElementChild as HTMLElement + + const measure = () => { + if (inner) { + const sw = inner.scrollWidth + if (sw > maxScrollWidthRef.current) { + maxScrollWidthRef.current = sw + inner.style.minWidth = `${sw}px` + } + setContentWidth(maxScrollWidthRef.current) + } + setContentClientWidth(content.clientWidth) + } + + measure() + const ro = new ResizeObserver(() => { + maxScrollWidthRef.current = 0 + if (inner) inner.style.minWidth = '' + measure() + }) + ro.observe(content) + const mo = new MutationObserver(measure) + mo.observe(content, { childList: true, subtree: true }) + return () => { + ro.disconnect() + mo.disconnect() + } + }, [startIndex, endIndex]) + + const handleScroll = useCallback((e: React.UIEvent) => { + setScrollTop(e.currentTarget.scrollTop) + }, []) + + // proxy scrollbar ↔ content 面板水平同步(带 guard 防循环) + const handleScrollbar = useCallback((e: React.UIEvent) => { + if (scrollSourceRef.current === 'content') return + scrollSourceRef.current = 'scrollbar' + if (contentRef.current) contentRef.current.scrollLeft = e.currentTarget.scrollLeft + requestAnimationFrame(() => { + scrollSourceRef.current = null + }) + }, []) + const handleContentScroll = useCallback((e: React.UIEvent) => { + if (scrollSourceRef.current === 'scrollbar') return + scrollSourceRef.current = 'content' + if (scrollbarRef.current) scrollbarRef.current.scrollLeft = e.currentTarget.scrollLeft + requestAnimationFrame(() => { + scrollSourceRef.current = null + }) + }, []) + + if (lines.length === 0) { + return ( +
+ {t('diffViewer.noChanges')} +
+ ) + } + + const useChangeBars = diffStyle === 'changeBars' + const GUTTER_WIDTH = useChangeBars ? lineNumberWidth * 2 + 4 : lineNumberWidth * 2 + 20 + + const gutterRows: React.ReactNode[] = [] + const contentRows: React.ReactNode[] = [] + + for (let i = startIndex; i < endIndex; i++) { + const item = displayLines[i] + + if (isCollapsed(item)) { + const directions = getSeparatorDirections(item) + gutterRows.push( +
+ handleExpand(item.id, direction)} + width={lineNumberWidth * 2} + /> + handleExpand(item.id, direction)} + height={lineHeight} + left={lineNumberWidth * 2} + /> +
, + ) + contentRows.push( +
+ +
, + ) + continue + } + + const line = item as UnifiedLine + let tokens: HighlightTokens | null = null + let lineNo: number | undefined + if (line.type === 'delete' && line.oldLineNo) { + tokens = beforeTokens + lineNo = line.oldLineNo + } else if ((line.type === 'add' || line.type === 'context') && line.newLineNo) { + tokens = afterTokens + lineNo = line.newLineNo + } + + // Gutter 行 + gutterRows.push( + useChangeBars ? ( +
+
+ + +
+ ) : ( +
+ + + +
+ ), + ) + + // Content 行 + contentRows.push( +
+ +
, + ) + } + + return ( +
+ {/* 虚拟滚动高度占位 */} +
+
+ {/* Gutter: 固定宽度,不水平滚动 */} +
+ {gutterRows} +
+ + {/* Content: 独立水平滚动,隐藏自身滚动条 */} +
+
{contentRows}
+
+
+
+ + {/* Sticky proxy 横向滚动条 — 只在内容实际溢出时显示 */} + {contentWidth > contentClientWidth && ( +
+
+
+
+
+
+ )} +
+ ) +}) + +const WrappedUnifiedDiffView = memo(function WrappedUnifiedDiffView({ + beforeTokens, + afterTokens, + lines, + lineNumberWidth, + isResizing, + maxHeight, + diffStyle, + lineHeight, +}: { + beforeTokens: HighlightTokens | null + afterTokens: HighlightTokens | null + lines: UnifiedLine[] + lineNumberWidth: number + isResizing: boolean + maxHeight?: number + diffStyle: DiffStyle + lineHeight: number +}) { + const { t } = useTranslation(['components', 'common']) + const [expandedRegions, setExpandedRegions] = useState>(() => new Map()) + const displayLines = useMemo(() => collapseContextUnified(lines, expandedRegions), [lines, expandedRegions]) + const handleExpand = useCallback((id: number, direction: ExpandDirection) => { + setExpandedRegions(prev => expandRegion(prev, id, direction)) + }, []) + + const useChangeBars = diffStyle === 'changeBars' + const gutterWidth = useChangeBars ? lineNumberWidth * 2 + 4 : lineNumberWidth * 2 + 20 + const estimateRowHeight = useCallback( + (index: number, containerWidth: number) => { + const item = displayLines[index] + if (!item || isCollapsed(item)) return lineHeight + + const availableWidth = Math.max(0, containerWidth - gutterWidth - 16) + return estimateWrappedVisualLineCount((item as UnifiedLine).content, availableWidth) * lineHeight + }, + [displayLines, gutterWidth, lineHeight], + ) + + const { containerRef, totalHeight, startIndex, endIndex, offsetY, handleScroll, measureRef } = + useDynamicVirtualScroll({ + lineCount: displayLines.length, + isResizing, + estimateLineHeight: lineHeight, + estimateHeight: estimateRowHeight, + }) + + const measureWrappedUnifiedRowRef = useCallback( + (index: number, el: HTMLDivElement | null) => { + measureRef(index, el) + if (!el) return + + alignDeleteChangeBars(el, offsetY + el.offsetTop) + }, + [measureRef, offsetY], + ) + + if (lines.length === 0) { + return ( +
+ {t('diffViewer.noChanges')} +
+ ) + } + + const visibleRows: React.ReactNode[] = [] + for (let i = startIndex; i < endIndex; i++) { + const item = displayLines[i] + + if (isCollapsed(item)) { + visibleRows.push( +
measureWrappedUnifiedRowRef(i, el)}> + handleExpand(item.id, direction)} + lineNumberAreaWidth={lineNumberWidth * 2} + height={lineHeight} + /> +
, + ) + continue + } + + const line = item as UnifiedLine + let tokens: HighlightTokens | null = null + let lineNo: number | undefined + + if (line.type === 'delete' && line.oldLineNo) { + tokens = beforeTokens + lineNo = line.oldLineNo + } else if ((line.type === 'add' || line.type === 'context') && line.newLineNo) { + tokens = afterTokens + lineNo = line.newLineNo + } + + visibleRows.push( +
measureWrappedUnifiedRowRef(i, el)} className={`flex items-stretch ${getLineBgClass(line.type)}`}> +
+ {useChangeBars ? ( +
+
+ + +
+ ) : ( +
+ + + +
+ )} +
+ +
+ +
+
, + ) + } + + return ( +
+
+
+ {visibleRows} +
+
+
+ ) +}) + +// ============================================ +// Line Content Renderer +// ============================================ + +type HighlightToken = HighlightTokens[number][number] +type WordDiffChange = ReturnType[number] + +const LineContent = memo(function LineContent({ line, tokens }: { line: DiffLine; tokens: HighlightTokens | null }) { + const lineTokens = tokens && line.lineNo ? tokens[line.lineNo - 1] : null + + // 有 word diff 标记时:在语法着色基础上叠加增删背景 + if (line.wordDiffSegments) { + // 有语法 token → 合并渲染(token 提供颜色,word diff segment 提供背景) + if (lineTokens) { + return + } + // 无语法 token → 纯 word diff(文字用默认色 + 增删背景) + return ( + <> + {line.wordDiffSegments.map((seg, i) => + seg.diffType ? ( + + {seg.text} + + ) : ( + + {seg.text} + + ), + )} + + ) + } + + // 无 word diff,有语法高亮 + if (lineTokens) { + return ( + <> + {lineTokens.map((token: HighlightToken, i: number) => ( + + {token.content} + + ))} + + ) + } + + // 纯文本 + return {line.content} +}) + +/** + * 合并渲染:syntax token 提供文字颜色,word diff segment 提供背景色。 + * + * 两者的切分边界不同,需要对齐遍历—— + * 遍历 word diff segment,在每个 segment 内部按 syntax token 切分渲染。 + */ +function MergedWordDiffLine({ segments, lineTokens }: { segments: WordDiffSegment[]; lineTokens: HighlightToken[] }) { + const result: React.ReactNode[] = [] + let tokenIdx = 0 + let tokenOffset = 0 // 当前 token 内已消费的字符数 + + for (let si = 0; si < segments.length; si++) { + const seg = segments[si] + let remaining = seg.text.length + const bgClass = seg.diffType === 'delete' ? 'bg-danger-100/30' : seg.diffType === 'add' ? 'bg-success-100/30' : '' + const children: React.ReactNode[] = [] + + while (remaining > 0 && tokenIdx < lineTokens.length) { + const token = lineTokens[tokenIdx] + const available = token.content.length - tokenOffset + const take = Math.min(remaining, available) + const slice = token.content.substring(tokenOffset, tokenOffset + take) + + children.push( + + {slice} + , + ) + + remaining -= take + tokenOffset += take + if (tokenOffset >= token.content.length) { + tokenIdx++ + tokenOffset = 0 + } + } + + // 如果 token 用完了但 segment 还有剩余(不应该发生,但防御性处理) + if (remaining > 0) { + const extraStart = seg.text.length - remaining + children.push({seg.text.substring(extraStart)}) + } + + if (bgClass) { + result.push( + + {children} + , + ) + } else { + result.push(...children) + } + } + + return <>{result} +} + +// ============================================ +// Diff Computation +// ============================================ + +function computePairedLines(before: string, after: string, skipWordDiff: boolean): PairedLine[] { + const changes = diffLines(before, after) + const result: PairedLine[] = [] + const beforeLines = before.split('\n') + const afterLines = after.split('\n') + + let oldIdx = 0, + newIdx = 0, + i = 0 + + while (i < changes.length) { + const change = changes[i] + const count = change.count || 0 + + if (change.removed) { + const next = changes[i + 1] + if (next?.added) { + const addCount = next.count || 0 + const maxCount = Math.max(count, addCount) + + for (let j = 0; j < maxCount; j++) { + const oldLine = j < count ? beforeLines[oldIdx + j] : undefined + const newLine = j < addCount ? afterLines[newIdx + j] : undefined + + let leftSegments: WordDiffSegment[] | undefined + let rightSegments: WordDiffSegment[] | undefined + + if (!skipWordDiff && oldLine !== undefined && newLine !== undefined) { + const wordDiff = computeWordDiff(oldLine, newLine) + if (!isTooFragmented(wordDiff.changes)) { + leftSegments = wordDiff.left + rightSegments = wordDiff.right + } + } + + result.push({ + left: + oldLine !== undefined + ? { type: 'delete', content: oldLine, lineNo: oldIdx + j + 1, wordDiffSegments: leftSegments } + : { type: 'empty', content: '' }, + right: + newLine !== undefined + ? { type: 'add', content: newLine, lineNo: newIdx + j + 1, wordDiffSegments: rightSegments } + : { type: 'empty', content: '' }, + }) + } + + oldIdx += count + newIdx += addCount + i += 2 + continue + } + + for (let j = 0; j < count; j++) { + result.push({ + left: { type: 'delete', content: beforeLines[oldIdx + j] || '', lineNo: oldIdx + j + 1 }, + right: { type: 'empty', content: '' }, + }) + } + oldIdx += count + } else if (change.added) { + for (let j = 0; j < count; j++) { + result.push({ + left: { type: 'empty', content: '' }, + right: { type: 'add', content: afterLines[newIdx + j] || '', lineNo: newIdx + j + 1 }, + }) + } + newIdx += count + } else { + for (let j = 0; j < count; j++) { + result.push({ + left: { type: 'context', content: beforeLines[oldIdx + j] || '', lineNo: oldIdx + j + 1 }, + right: { type: 'context', content: afterLines[newIdx + j] || '', lineNo: newIdx + j + 1 }, + }) + } + oldIdx += count + newIdx += count + } + i++ + } + + return result +} + +function computeUnifiedLines(before: string, after: string): UnifiedLine[] { + const changes = diffLines(before, after) + const result: UnifiedLine[] = [] + const beforeLines = before.split('\n') + const afterLines = after.split('\n') + + let oldIdx = 0, + newIdx = 0 + + for (const change of changes) { + const count = change.count || 0 + + if (change.removed) { + for (let j = 0; j < count; j++) { + result.push({ type: 'delete', content: beforeLines[oldIdx + j] || '', oldLineNo: oldIdx + j + 1 }) + } + oldIdx += count + } else if (change.added) { + for (let j = 0; j < count; j++) { + result.push({ type: 'add', content: afterLines[newIdx + j] || '', newLineNo: newIdx + j + 1 }) + } + newIdx += count + } else { + for (let j = 0; j < count; j++) { + result.push({ + type: 'context', + content: afterLines[newIdx + j] || '', + oldLineNo: oldIdx + j + 1, + newLineNo: newIdx + j + 1, + }) + } + oldIdx += count + newIdx += count + } + } + + return result +} + +function isTooFragmented(changes: WordDiffChange[]): boolean { + let commonLength = 0, + totalLength = 0 + for (const change of changes) { + totalLength += change.value.length + if (!change.added && !change.removed) commonLength += change.value.length + } + return totalLength > 10 && commonLength / totalLength < 0.4 +} + +function computeWordDiff( + oldLine: string, + newLine: string, +): { left: WordDiffSegment[]; right: WordDiffSegment[]; changes: WordDiffChange[] } { + const changes = diffWords(oldLine, newLine) + + const mergedChanges: WordDiffChange[] = [] + for (let i = 0; i < changes.length; i++) { + const current = changes[i] + const prev = mergedChanges[mergedChanges.length - 1] + + if (prev && !current.added && !current.removed && /^\s*$/.test(current.value)) { + const next = changes[i + 1] + if ((prev.removed && next?.removed) || (prev.added && next?.added)) { + prev.value += current.value + continue + } + } + + if (prev && ((prev.added && current.added) || (prev.removed && current.removed))) { + prev.value += current.value + } else { + mergedChanges.push({ ...current }) + } + } + + const left: WordDiffSegment[] = [] + const right: WordDiffSegment[] = [] + for (const change of mergedChanges) { + if (change.removed) left.push({ text: change.value, diffType: 'delete' }) + else if (change.added) right.push({ text: change.value, diffType: 'add' }) + else { + left.push({ text: change.value }) + right.push({ text: change.value }) + } + } + + return { left, right, changes: mergedChanges } +} diff --git a/src/components/ErrorBoundary.tsx b/src/components/ErrorBoundary.tsx new file mode 100644 index 0000000..d6fe158 --- /dev/null +++ b/src/components/ErrorBoundary.tsx @@ -0,0 +1,111 @@ +import { Component, type ErrorInfo, type ReactNode } from 'react' + +interface Props { + children: ReactNode +} + +interface State { + hasError: boolean + error: Error | null + errorInfo: ErrorInfo | null +} + +export class ErrorBoundary extends Component { + public state: State = { + hasError: false, + error: null, + errorInfo: null, + } + + public static getDerivedStateFromError(error: Error): State { + return { hasError: true, error, errorInfo: null } + } + + public componentDidCatch(error: Error, errorInfo: ErrorInfo) { + console.error('ErrorBoundary caught an error:', error, errorInfo) + this.setState({ + error, + errorInfo, + }) + } + + private handleCopy = () => { + if (!this.state.error) return + const text = `Error: ${this.state.error.message}\nStack: ${this.state.error.stack}\nComponent Stack: ${this.state.errorInfo?.componentStack}` + navigator.clipboard.writeText(text) + } + + private handleReload = () => { + window.location.reload() + } + + private handleResetRoute = () => { + window.location.hash = '/' + window.location.reload() + } + + public render() { + if (this.state.hasError) { + return ( +
+
+

+ + + + Application Crash Detected +

+

+ An unexpected error occurred during rendering. Please review the details below. +

+ +
+
+ Error Message + +
+
+                {this.state.error?.toString()}
+                {this.state.error?.stack && `\n\nStack Trace:\n${this.state.error.stack}`}
+                {this.state.errorInfo?.componentStack && `\n\nComponent Stack:\n${this.state.errorInfo.componentStack}`}
+              
+
+ +
+ + +
+
+
+ ) + } + + return this.props.children + } +} diff --git a/src/components/ExtensionPanel.test.tsx b/src/components/ExtensionPanel.test.tsx new file mode 100644 index 0000000..8bc697f --- /dev/null +++ b/src/components/ExtensionPanel.test.tsx @@ -0,0 +1,103 @@ +import { fireEvent, render, screen, waitFor } from '@testing-library/react' +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { ExtensionPanel } from './ExtensionPanel' + +const getExtensionsMock = vi.fn() +const installExtensionMock = vi.fn() +const removeExtensionPackageMock = vi.fn() + +vi.mock('../api/extension', () => ({ + getExtensions: (...args: unknown[]) => getExtensionsMock(...args), + installExtension: (...args: unknown[]) => installExtensionMock(...args), + removeExtensionPackage: (...args: unknown[]) => removeExtensionPackageMock(...args), +})) + +vi.mock('../hooks', () => ({ + useDirectory: () => ({ currentDirectory: '/workspace/demo' }), +})) + +vi.mock('../utils', () => ({ + apiErrorHandler: vi.fn(), +})) + +describe('ExtensionPanel', () => { + beforeEach(() => { + getExtensionsMock.mockReset() + installExtensionMock.mockReset() + removeExtensionPackageMock.mockReset() + vi.spyOn(window, 'confirm').mockReturnValue(true) + getExtensionsMock.mockResolvedValue({ + summary: { total: 3, active: 1, inactive: 1, missing: 1, error: 0 }, + packages: [ + { + source: 'npm:pi-hud', + scope: 'user', + filtered: false, + packageName: 'pi-hud', + version: '0.4.3', + description: 'Persistent HUD extension', + status: 'active', + installedPath: '/home/user/.pi/agent/npm/node_modules/pi-hud', + resources: { + extensions: [{ name: 'index.ts', path: '/pkg/index.ts', enabled: true }], + skills: [{ name: 'release', path: '/pkg/skills/release/SKILL.md', enabled: true }], + prompts: [], + themes: [], + }, + }, + { + source: 'npm:pi-muted', + scope: 'user', + filtered: true, + packageName: 'pi-muted', + version: '1.0.0', + description: 'Disabled package', + status: 'inactive', + installedPath: '/home/user/.pi/agent/npm/node_modules/pi-muted', + resources: { + extensions: [{ name: 'muted.ts', path: '/pkg/muted.ts', enabled: false }], + skills: [], + prompts: [], + themes: [], + }, + }, + { + source: 'npm:missing-extension', + scope: 'project', + filtered: false, + status: 'missing', + resources: { extensions: [], skills: [], prompts: [], themes: [] }, + }, + ], + }) + installExtensionMock.mockResolvedValue({ source: 'npm:pi-new', scope: 'user', reloadRequired: true }) + removeExtensionPackageMock.mockResolvedValue({ source: 'npm:pi-hud', scope: 'user', reloadRequired: true }) + }) + + it('renders installed extension packages, active state, install command, and uninstall action', async () => { + render() + + await waitFor(() => expect(screen.getByText('pi-hud')).toBeInTheDocument()) + + expect(screen.getByText('(3)')).toBeInTheDocument() + expect(screen.getAllByText('Active').length).toBeGreaterThan(0) + expect(screen.getAllByText('Inactive').length).toBeGreaterThan(0) + expect(screen.getAllByText('Missing').length).toBeGreaterThan(0) + expect(screen.getByText('Persistent HUD extension')).toBeInTheDocument() + expect(screen.getAllByText('Extensions 1').length).toBeGreaterThan(0) + expect(screen.getByText('Skills 1')).toBeInTheDocument() + expect(screen.getByText('index.ts')).toBeInTheDocument() + + const installInput = screen.getByRole('textbox', { name: 'Install command' }) + fireEvent.change(installInput, { target: { value: 'pi install npm:pi-new' } }) + fireEvent.click(screen.getByRole('button', { name: 'Install extension' })) + + await waitFor(() => expect(installExtensionMock).toHaveBeenCalledWith('pi install npm:pi-new', '/workspace/demo')) + expect(await screen.findByText('Reload Pi Agent to apply extension changes.')).toBeInTheDocument() + + fireEvent.click(screen.getByRole('button', { name: 'Uninstall pi-hud' })) + await waitFor(() => + expect(removeExtensionPackageMock).toHaveBeenCalledWith('npm:pi-hud', 'user', '/workspace/demo'), + ) + }) +}) diff --git a/src/components/ExtensionPanel.tsx b/src/components/ExtensionPanel.tsx new file mode 100644 index 0000000..cfe8bcb --- /dev/null +++ b/src/components/ExtensionPanel.tsx @@ -0,0 +1,427 @@ +// ============================================ +// ExtensionPanel - Pi Agent extension package manager +// Lists installed package resources and supports package install/uninstall. +// It does not activate/deactivate individual extension resources. +// ============================================ + +import { memo, useCallback, useEffect, useMemo, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { + AlertCircleIcon, + CheckIcon, + DownloadIcon, + PlugIcon, + RetryIcon, + SearchIcon, + SpinnerIcon, + TrashIcon, +} from './Icons' +import { getExtensions, installExtension, removeExtensionPackage } from '../api/extension' +import type { + ExtensionCatalog, + ExtensionPackageInfo, + ExtensionPackageScope, + ExtensionPackageStatus, +} from '../types/api' +import { useDirectory } from '../hooks' +import { apiErrorHandler } from '../utils' + +interface ExtensionPanelProps { + isResizing?: boolean +} + +const EMPTY_CATALOG: ExtensionCatalog = { + packages: [], + summary: { total: 0, active: 0, inactive: 0, missing: 0, error: 0 }, +} + +const STATUS_ORDER: ExtensionPackageStatus[] = ['active', 'inactive', 'missing', 'error'] +type FormSubmitEvent = { preventDefault: () => void } + +export const ExtensionPanel = memo(function ExtensionPanel({ isResizing: _isResizing }: ExtensionPanelProps) { + const { t } = useTranslation(['components', 'common']) + const { currentDirectory } = useDirectory() + const [catalog, setCatalog] = useState(EMPTY_CATALOG) + const [loading, setLoading] = useState(true) + const [error, setError] = useState(null) + const [filter, setFilter] = useState('') + const [installCommand, setInstallCommand] = useState('') + const [actionLoading, setActionLoading] = useState(null) + const [reloadRequired, setReloadRequired] = useState(false) + const [actionError, setActionError] = useState(null) + + const loadExtensions = useCallback(async () => { + try { + setLoading(true) + setError(null) + const data = await getExtensions(currentDirectory) + setCatalog(data) + } catch (err) { + apiErrorHandler('load extensions', err) + setError(t('extensionPanel.failedToLoad')) + } finally { + setLoading(false) + } + }, [currentDirectory, t]) + + useEffect(() => { + loadExtensions() + }, [loadExtensions]) + + const filteredPackages = useMemo(() => { + const normalized = filter.trim().toLowerCase() + if (!normalized) return catalog.packages + return catalog.packages.filter(pkg => + [pkg.packageName, pkg.source, pkg.description, pkg.installedPath] + .filter((value): value is string => typeof value === 'string') + .some(value => value.toLowerCase().includes(normalized)), + ) + }, [catalog.packages, filter]) + + const groupedPackages = useMemo(() => { + const scopes: ExtensionPackageScope[] = ['project', 'user'] + return scopes + .map(scope => ({ + scope, + label: t(`extensionPanel.scopes.${scope}`), + packages: filteredPackages.filter(pkg => pkg.scope === scope), + })) + .filter(group => group.packages.length > 0) + }, [filteredPackages, t]) + + const handleRefresh = useCallback(() => { + loadExtensions() + }, [loadExtensions]) + + const handleInstall = useCallback( + async (event: FormSubmitEvent) => { + event.preventDefault() + const command = installCommand.trim() + if (!command) return + + setActionLoading('__install__') + setActionError(null) + try { + const result = await installExtension(command, currentDirectory) + setInstallCommand('') + setReloadRequired(result.reloadRequired) + await loadExtensions() + } catch (err) { + apiErrorHandler('install extension', err) + setActionError(err instanceof Error ? err.message : t('extensionPanel.failedToInstall')) + } finally { + setActionLoading(null) + } + }, + [currentDirectory, installCommand, loadExtensions, t], + ) + + const handleUninstall = useCallback( + async (pkg: ExtensionPackageInfo) => { + const name = pkg.packageName || pkg.source + if (!window.confirm(t('extensionPanel.uninstallConfirm', { name }))) return + + setActionLoading(pkg.source) + setActionError(null) + try { + const result = await removeExtensionPackage(pkg.source, pkg.scope, currentDirectory) + setReloadRequired(result.reloadRequired) + await loadExtensions() + } catch (err) { + apiErrorHandler('remove extension', err) + setActionError(err instanceof Error ? err.message : t('extensionPanel.failedToUninstall')) + } finally { + setActionLoading(null) + } + }, + [currentDirectory, loadExtensions, t], + ) + + return ( +
+
+
+ {t('extensionPanel.title')} + {!loading && ( + + ({catalog.summary.total}) + + )} +
+ +
+
+ +
+
+ setFilter(event.target.value)} + placeholder={t('extensionPanel.filterPlaceholder')} + aria-label={t('extensionPanel.filterPlaceholder')} + autoComplete="off" + className="w-full rounded-md border border-transparent bg-bg-200/40 py-1.5 pl-[30px] pr-2 text-[length:var(--fs-sm)] text-text-100 placeholder:text-text-400/70 transition-all hover:bg-bg-200/60 focus:border-border-200 focus:bg-bg-000 focus-visible:ring-1 focus-visible:ring-border-200 focus-visible:ring-inset" + /> + +
+
+
+ +
+
+ + + {reloadRequired && ( +
+ {t('extensionPanel.reloadRequired')} +
+ )} + + {actionError && ( +
+ {actionError} +
+ )} + + +
+ + {loading && catalog.packages.length === 0 ? ( +
+ + {t('extensionPanel.loadingExtensions')} +
+ ) : error ? ( +
+ + {error} + +
+ ) : filteredPackages.length === 0 ? ( +
+ + {t('extensionPanel.noExtensions')} +
+ ) : ( +
+ {groupedPackages.map(group => ( +
+
+ {group.label} + + {group.packages.length} + +
+
+ {group.packages.map(pkg => ( + + ))} +
+
+ ))} +
+ )} +
+
+ ) +}) + +function InstallCommandCard({ + command, + onCommandChange, + onSubmit, + loading, +}: { + command: string + onCommandChange: (command: string) => void + onSubmit: (event: FormSubmitEvent) => void + loading: boolean +}) { + const { t } = useTranslation(['components']) + + return ( +
+
+ +
+
{t('extensionPanel.installTitle')}
+
+ {t('extensionPanel.installDescription')} +
+
+
+
+ onCommandChange(event.target.value)} + placeholder="pi install npm:pi-hud" + aria-label={t('extensionPanel.installCommandLabel')} + autoComplete="off" + className="min-w-0 flex-1 rounded-md border border-border-200/50 bg-bg-000 px-2 py-1.5 font-mono text-[length:var(--fs-xs)] text-text-100 placeholder:text-text-500 focus:border-accent-main-100/60 focus:outline-none focus:ring-1 focus:ring-accent-main-100/20" + /> + +
+
+ ) +} + +function SummaryBar({ summary }: { summary: ExtensionCatalog['summary'] }) { + const { t } = useTranslation(['components']) + return ( +
+ {STATUS_ORDER.map(status => ( +
+
{summary[status]}
+
{t(`extensionPanel.status.${status}`)}
+
+ ))} +
+ ) +} + +function ExtensionPackageCard({ + pkg, + actionLoading, + onUninstall, +}: { + pkg: ExtensionPackageInfo + actionLoading: boolean + onUninstall: (pkg: ExtensionPackageInfo) => void +}) { + const { t } = useTranslation(['components']) + const name = pkg.packageName || pkg.source + const resourceCounts = countResources(pkg) + const extensionResources = pkg.resources.extensions + const detailRows = [ + pkg.source, + pkg.version ? `v${pkg.version}` : null, + pkg.scope, + pkg.filtered ? t('extensionPanel.filtered') : null, + ].filter((value): value is string => Boolean(value)) + + return ( +
+
+
+
+ {name} + +
+ {pkg.description && ( +

{pkg.description}

+ )} +

{detailRows.join(' · ')}

+
+ +
+ +
+ {resourceCounts.map(item => ( + + {t(`extensionPanel.resourceTypes.${item.type}`)} {item.count} + + ))} +
+ + {extensionResources.length > 0 && ( +
+ {extensionResources.map(resource => ( +
+ + {resource.name} + + + {resource.enabled ? t('extensionPanel.resourceActive') : t('extensionPanel.resourceInactive')} + +
+ ))} +
+ )} + + {pkg.error &&
{pkg.error}
} +
+ ) +} + +function StatusBadge({ status }: { status: ExtensionPackageStatus }) { + const { t } = useTranslation(['components']) + const className = { + active: 'bg-success-100/10 text-success-100 border-success-100/20', + inactive: 'bg-bg-200/60 text-text-400 border-border-200/50', + missing: 'bg-warning-100/10 text-warning-100 border-warning-100/20', + error: 'bg-danger-100/10 text-danger-100 border-danger-100/20', + }[status] + + return ( + + {status === 'active' ? : null} + {t(`extensionPanel.status.${status}`)} + + ) +} + +function countResources( + pkg: ExtensionPackageInfo, +): Array<{ type: keyof ExtensionPackageInfo['resources']; count: number }> { + return (['extensions', 'skills', 'prompts', 'themes'] as const) + .map(type => ({ type, count: pkg.resources[type].length })) + .filter(item => item.count > 0) +} diff --git a/src/components/FileExplorer.tsx b/src/components/FileExplorer.tsx new file mode 100644 index 0000000..4ee449f --- /dev/null +++ b/src/components/FileExplorer.tsx @@ -0,0 +1,1061 @@ +// ============================================ +// FileExplorer - 文件浏览器组件 +// 包含文件树和文件预览两个区域,支持拖拽调整高度 +// 性能优化:使用 CSS 变量 + requestAnimationFrame 处理 resize +// ============================================ + +import { memo, useCallback, useMemo, useEffect, useRef, useState, type DragEvent, type ReactNode } from 'react' +import { useTranslation } from 'react-i18next' +import { useFileExplorer, type FileTreeNode } from '../hooks' +import { useVerticalSplitResize } from '../hooks/useVerticalSplitResize' +import { layoutStore, type PreviewFile } from '../store/layoutStore' +import { ChevronRightIcon, ChevronDownIcon, RetryIcon, AlertCircleIcon, DownloadIcon, MaximizeIcon } from './Icons' +import { CodePreview } from './CodePreview' +import { FullscreenViewer } from './FullscreenViewer' +import { PreviewTabsBar, type PreviewTabsBarItem } from './PreviewTabsBar' +import { MarkdownRenderer } from './MarkdownRenderer' +import { getMaterialIconUrl } from '../utils/materialIcons' +import { detectLanguage } from '../utils/languageUtils' +import { + getPreviewCategory, + isBinaryContent, + isTextualMedia, + buildDataUrl, + buildTextDataUrl, + decodeBase64Text, + formatMimeType, + type PreviewCategory, +} from '../utils/mimeUtils' +import { downloadFileContent } from '../utils/downloadUtils' +import type { FileContent } from '../api/types' + +// 常量 +const MIN_TREE_HEIGHT = 100 +const MIN_PREVIEW_HEIGHT = 150 + +const MARKDOWN_MIME_TYPES = new Set(['text/markdown', 'text/x-markdown', 'text/md', 'application/markdown']) + +function isMarkdownPreview(language: string, mimeType?: string): boolean { + if (language === 'markdown' || language === 'mdx') return true + if (!mimeType) return false + return MARKDOWN_MIME_TYPES.has(mimeType.split(';', 1)[0].toLowerCase()) +} + +interface FileExplorerProps { + panelTabId: string + directory?: string + previewFile: PreviewFile | null + previewFiles: PreviewFile[] + position?: 'bottom' | 'right' + isPanelResizing?: boolean + sessionId?: string | null +} + +export const FileExplorer = memo(function FileExplorer({ + panelTabId, + directory, + previewFile, + previewFiles, + position = 'right', + isPanelResizing = false, + sessionId, +}: FileExplorerProps) { + const { t } = useTranslation(['components', 'common']) + const containerRef = useRef(null) + const treeRef = useRef(null) + const { + splitHeight: treeHeight, + isResizing, + resetSplitHeight, + handleResizeStart, + handleTouchResizeStart, + } = useVerticalSplitResize({ + containerRef, + primaryRef: treeRef, + cssVariableName: '--tree-height', + minPrimaryHeight: MIN_TREE_HEIGHT, + minSecondaryHeight: MIN_PREVIEW_HEIGHT, + }) + + // 综合 resize 状态 - 外部面板 resize 或内部 resize + const isAnyResizing = isPanelResizing || isResizing + + const { + tree, + isLoading, + error, + expandedPaths, + toggleExpand, + previewContent, + previewLoading, + previewError, + loadPreview, + clearPreview, + fileStatus, + refresh, + } = useFileExplorer({ directory, autoLoad: true, sessionId: sessionId || undefined }) + + // 当 previewFile 改变时加载预览 + useEffect(() => { + if (previewFile) { + loadPreview(previewFile.path) + } else { + clearPreview() + } + }, [previewFile, loadPreview, clearPreview]) + + const handleRefresh = useCallback(async () => { + await refresh() + if (previewFile) { + await loadPreview(previewFile.path) + } + }, [loadPreview, previewFile, refresh]) + + // 处理文件点击 + const handleFileClick = useCallback( + (node: FileTreeNode) => { + if (node.type === 'directory') { + toggleExpand(node.path) + } else { + layoutStore.openFilePreview({ path: node.path, name: node.name }, position) + } + }, + [toggleExpand, position], + ) + + // 关闭预览 + const handleClosePreview = useCallback(() => { + layoutStore.closeAllFilePreviews(panelTabId) + resetSplitHeight() + }, [panelTabId, resetSplitHeight]) + + const handleActivatePreview = useCallback( + (path: string) => { + layoutStore.activateFilePreview(panelTabId, path) + }, + [panelTabId], + ) + + const handleClosePreviewTab = useCallback( + (path: string) => { + layoutStore.closeFilePreview(panelTabId, path) + }, + [panelTabId], + ) + + const handleReorderPreviewTabs = useCallback( + (draggedPath: string, targetPath: string) => { + layoutStore.reorderFilePreviews(panelTabId, draggedPath, targetPath) + }, + [panelTabId], + ) + + // 是否显示预览 + const showPreview = Boolean(previewFile) || previewLoading || Boolean(previewError) + + // 没有选择目录 + if (!directory) { + return ( +
+ { + e.currentTarget.style.visibility = 'hidden' + }} + /> + {t('fileExplorer.selectProject')} +
+ ) + } + + return ( +
+ {/* File Tree - 使用 CSS 变量控制高度 */} +
+ {/* Tree Header */} +
+ + {t('fileExplorer.explorer')} + + +
+
+ + {/* Tree Content */} +
+ {isLoading && tree.length === 0 ? ( +
+ {t('common:loading')} +
+ ) : error ? ( +
+ + {error} +
+ ) : tree.length === 0 ? ( +
+ {t('fileExplorer.noFilesFound')} +
+ ) : ( +
+ {tree.map(node => ( + + ))} +
+ )} +
+
+ + {/* Resize Handle - 与标签栏同色 */} + {showPreview && ( +
+ )} + + {/* Preview Area */} + {showPreview && ( +
+ +
+ )} +
+ ) +}) + +// ============================================ +// File Tree Item +// ============================================ + +interface FileTreeItemProps { + node: FileTreeNode + depth: number + expandedPaths: Set + fileStatus: Map + onClick: (node: FileTreeNode) => void +} + +const FileTreeItem = memo(function FileTreeItem({ + node, + depth, + expandedPaths, + fileStatus, + onClick, +}: FileTreeItemProps) { + const isExpanded = expandedPaths.has(node.path) + const isDirectory = node.type === 'directory' + // node.path 可能用反斜杠(Windows),statusMap key 统一用正斜杠 + const status = fileStatus.get(node.path) || fileStatus.get(node.path.replace(/\\/g, '/')) + + // 状态颜色 + const statusColor = useMemo(() => { + if (!status) return null + switch (status.status) { + case 'added': + return 'text-success-100' + case 'modified': + return 'text-warning-100' + case 'deleted': + return 'text-danger-100' + default: + return null + } + }, [status]) + + // 拖拽到输入框实现 @mention + const handleDragStart = useCallback( + (e: DragEvent) => { + const fileData = { + type: (isDirectory ? 'folder' : 'file') as 'file' | 'folder', + path: node.path, // 相对路径 + absolute: node.absolute, // 绝对路径 + name: node.name, + } + e.dataTransfer.setData('application/pi-file', JSON.stringify(fileData)) + e.dataTransfer.effectAllowed = 'copy' + }, + [node.path, node.absolute, node.name, isDirectory], + ) + + return ( +
+ + + {/* Children */} + {isDirectory && isExpanded && node.children && ( +
+ {node.children.map(child => ( + + ))} +
+ )} +
+ ) +}) + +// ============================================ +// File Preview +// ============================================ + +interface FilePreviewProps { + previewFiles: PreviewFile[] + path: string | null + content: FileContent | null + isLoading: boolean + error: string | null + onClose: () => void + onActivatePreview: (path: string) => void + onClosePreview: (path: string) => void + onReorderPreview: (draggedPath: string, targetPath: string) => void + isResizing?: boolean +} + +function FilePreview({ + previewFiles, + path, + content, + isLoading, + error, + onClose, + onActivatePreview, + onClosePreview, + onReorderPreview, + isResizing = false, +}: FilePreviewProps) { + const { t } = useTranslation(['components', 'common']) + const scrollRef = useRef(null) + const [fullscreenOpen, setFullscreenOpen] = useState(false) + + // 获取文件名 + const fileName = path?.split(/[/\\]/).pop() || 'Untitled' + const language = path ? detectLanguage(path) : 'text' + + // 下载当前文件 + const handleDownload = useCallback(() => { + if (content) { + downloadFileContent(content, fileName) + } + }, [content, fileName]) + + const previewTabItems = useMemo( + () => + previewFiles.map(file => ({ + id: file.path, + title: file.path, + closeTitle: `${t('common:close')} ${file.name}`, + iconPath: file.path, + label: {file.name}, + })), + [previewFiles, t], + ) + + // 处理内容类型分发 + const displayContent = useMemo(() => { + if (!content) return null + + const textContent = content.content || '' + const mimeType = content.mimeType || '' + const encoding = content.encoding || '' + const category = getPreviewCategory(mimeType) + + if (isMarkdownPreview(language, mimeType)) { + const text = isBinaryContent(encoding) ? decodeBase64Text(textContent) : textContent + return { + type: 'markdown' as const, + text, + } + } + + // 文本型可渲染媒体(如 SVG)— 同时提供渲染和源码 + // 优先级最高:即使以 base64 传输,也支持解码为文本查看 + if (isTextualMedia(mimeType)) { + const isBase64 = isBinaryContent(encoding) + const text = isBase64 ? decodeBase64Text(textContent) : textContent + const dataUrl = isBase64 + ? buildDataUrl(mimeType, textContent) + : buildTextDataUrl(mimeType, textContent) + return { + type: 'textMedia' as const, + text, + dataUrl, + category: category!, + mimeType: mimeType, + } + } + + // 二进制 + 可预览的媒体类型 + if (isBinaryContent(encoding) && category) { + return { + type: 'media' as const, + category, + dataUrl: buildDataUrl(mimeType, textContent), + mimeType: mimeType, + } + } + + // 二进制 + 不可预览 + if (isBinaryContent(encoding)) { + return { + type: 'binary' as const, + mimeType: mimeType || 'application/octet-stream', + } + } + + // diff 渲染交给 Changes 面板,Files 预览只显示文件内容 + // if (content.patch && content.patch.hunks.length > 0) { + // return { + // type: 'diff' as const, + // hunks: content.patch.hunks, + // } + // } + + // 显示文件内容 + return { + type: 'text' as const, + text: textContent, + } + }, [content, language]) + + // 全屏内容 + const fullscreenContent = useMemo((): ReactNode => { + if (!displayContent) return null + switch (displayContent.type) { + case 'media': + return ( + + ) + case 'binary': + return + case 'textMedia': + return ( + + ) + case 'markdown': + return + case 'text': + return + default: + return null + } + }, [displayContent, fileName, language, handleDownload]) + + return ( +
+ + + + + ) : null + } + /> + + {/* Preview Content */} +
+ {isLoading ? ( +
+ {t('common:loading')} +
+ ) : error ? ( +
+ + {error} +
+ ) : displayContent?.type === 'media' ? ( + + ) : displayContent?.type === 'binary' ? ( + + ) : displayContent?.type === 'textMedia' ? ( + + ) : displayContent?.type === 'markdown' ? ( + + ) : // diff 渲染已移至 Changes 面板 + // ) : displayContent?.type === 'diff' ? ( + // + displayContent?.type === 'text' ? ( + + ) : ( +
+ {t('common:noContent')} +
+ )} +
+ + setFullscreenOpen(false)} + title={fileName} + headerRight={ + content ? ( + + ) : null + } + > + {fullscreenContent} + +
+ ) +} + +// ============================================ +// Media Preview - 路由到具体渲染器 +// ============================================ + +interface MediaPreviewProps { + category: PreviewCategory + dataUrl: string + mimeType: string + fileName: string +} + +function MediaPreview({ category, dataUrl, mimeType, fileName }: MediaPreviewProps) { + switch (category) { + case 'image': + return + case 'audio': + return ( +
+
{formatMimeType(mimeType)}
+
+ ) + case 'video': + return ( +
+
+ ) + case 'pdf': + return